Next: , Previous: , Up: Foreign Types   [Contents][Index]


foreign-slot-value

foreign-slot-value

Syntax

Accessor: foreign-slot-value ptr type slot-name ⇒ object

Arguments and Values

ptr

A pointer to a structure.

type

A foreign structure type.

slot-name

A symbol naming a slot in the structure type.

object

The object contained in the slot specified by slot-name.

Description

For simple slots, foreign-slot-value returns the value of the object, such as a Lisp integer or pointer. In C, this would be expressed as ptr->slot.

For aggregate slots, a pointer inside the structure to the beginning of the slot’s data is returned. In C, this would be expressed as &ptr->slot. This pointer and the memory it points to have the same extent as ptr.

There are compiler macros for foreign-slot-value and its setf expansion that open code the memory access when type and slot-names are constant at compile-time.

Examples

  (defcstruct point
    "Pointer structure."
    (x :int)
    (y :int))
   
  CFFI> (with-foreign-object (ptr '(:struct point))
          ;; Initialize the slots
          (setf (foreign-slot-value ptr '(:struct point) 'x) 42
                (foreign-slot-value ptr '(:struct point) 'y) 42)
          ;; Return a list with the coordinates
          (with-foreign-slots ((x y) ptr (:struct point))
            (list x y)))(42 42)

See Also

defcstruct
foreign-slot-names
foreign-slot-offset
foreign-slot-pointer
with-foreign-slots