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