foreign-slot-value object slot-name &key type copy-foreign-object => value
(setf foreign-slot-value) value object slot-name &key type copy-foreign-object => value
Either an instance of or a pointer to an FLI structure.
The name of the slot of object to be accessed.
The type of
object
. Specifying
type
makes accessing the object faster. If the specified type is different to the actual type,
foreign-slot-value
returns the value of the object in the format of
type
where possible.
This option is only important when dealing with slots which are aggregate FLI types, and cannot be returned by value.
If set to
t
,
foreign-slot-value
makes a copy of the aggregate slot of the object pointed to by
pointer
and returns the copy.
If set to
nil
,
foreign-slot-value
returns the aggregate slot of the object directly.
If set to
:error
then
foreign-slot-value
signals an error. This is the default value for
copy-foreign-object
.
The function
foreign-slot-value
returns the value of a slot in a specified object. An error is signaled if the slot is an aggregate type and
copy-foreign-object
is not set accordingly. Use
foreign-slot-pointer
to access such aggregate slots.
The function
(setf foreign-slot-value)
can be used to set the value of a slot in a structure, as shown in the example below.
In the following example a foreign structure is defined, an instance of the structure is made with
my-pos
pointing to the instance, and
foreign-slot-value
is used to set the
y
slot of the object to 10.
(fli:define-c-struct POS
(x :int)
(y :int)
(z :int))
(setq my-pos (fli:allocate-foreign-object :type 'POS))
(setf (fli:foreign-slot-value my-pos 'y) 10)
The next line returns the value of the
y
slot at
my-pos
, which is 10.
(fli:foreign-slot-value my-pos 'y)