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

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.