def-foreign-var
Prev | Objects | Next

## 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.

Prev | Up | Next
with-cast-pointer | Home | Strings