X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fref.sgml;h=dd0e05a3e1cfaa9e366f3b3ab49c4c1dd6f57e76;hb=a27a393f26a7a423d758e902dbff07c81ccead91;hp=99234c410e200a23bb2ee9a97bd182e5436f3849;hpb=7612015bdcfa851374a4e8c6f3ff68a8dd8b9a9a;p=uffi.git
diff --git a/doc/ref.sgml b/doc/ref.sgml
index 99234c4..dd0e05a 100644
--- a/doc/ref.sgml
+++ b/doc/ref.sgml
@@ -1591,6 +1591,121 @@ if a cstring returned by a function is &null;.
+
+
+ def-foreign-var
+
+Defines a symbol macro to access a variable in foreign code
+
+ Macro
+
+
+ Syntax
+
+ def-foreign-var name type module
+
+
+
+ Arguments and Values
+
+
+ name
+
+
+A string or list specificying the symbol macro's name. If it is a
+ string, that names the foreign variable. A Lisp name is created
+ by translating #\_ to #\- and by converting to upper-case in
+ case-insensitive Lisp implementations. If it is a list, the first
+ item is a string specifying the foreign variable name and the
+ second it is a symbol stating the Lisp name.
+
+
+
+
+ type
+
+ A foreign type of the foreign variable.
+
+
+
+
+ module
+
+
+ A string specifying the module (or library) the foreign variable
+ resides in. (Required by Lispworks)
+
+
+
+
+
+
+ Description
+
+Defines a symbol macro which can be used to access (get and set) the
+value of a variable in foreign code.
+
+
+
+ Examples
+
+ C code
+
+ int baz = 3;
+
+ typedef struct {
+ int x;
+ double y;
+ } foo_struct;
+
+ foo_struct the_struct = { 42, 3.2 };
+
+ int foo () {
+ return baz;
+ }
+
+
+
+Lisp code
+
+ (uffi:def-struct foo-struct
+ (x :int)
+ (y :double))
+
+ (uffi:def-function ("foo" foo)
+ ()
+ :returning :int
+ :module "foo")
+
+ (uffi:def-foreign-var ("baz" *baz*) :int "foo")
+ (uffi:def-foreign-var ("the_struct" *the-struct*) foo-struct "foo")
+
+
+*baz*
+ => 3
+
+(incf *baz*)
+ => 4
+
+(foo)
+ => 4
+
+
+
+
+ Side Effects
+ None.
+
+
+ Affected by
+ None.
+
+
+ Exceptional Situations
+ None.
+
+
+