Name

def-foreign-var — Defines a symbol macro to access a variable in foreign code

Macro

(def-foreign-var name type module)

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.