For the docs
Edi Weitz <[email protected]> 15 Aug 2003 02:24:12 +0200
| Newsgroups | gmane.lisp.uffi.general |
|---|---|
| Message-ID | <[email protected]> |
def-foreign-var
Name
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
The 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
(uffi:get-slot-value *the-struct* 'foo-struct 'y)
=> 3.2d0