Next Previous Up Top Contents Index

5 Function and Macro Reference

foreign-slot-pointer

Function

Summary

Returns a pointer to a specified slot of an object.
Package

fli

Signature

foreign-slot-pointer object slot-name &key type => pointer

Arguments

object

A foreign object, or a pointer to a foreign object.

slot-name

The name of a slot in object.

type

The type of the slot slot-name.

Values

pointer

A pointer to slot-name.

Description

The functionforeign-slot-pointer takes a foreign object, a slot within the object, and optionally the type of the slot, and returns a pointer to the slot.
Example

In the following example a structure type calledCOMPASS is defined. An instance of the structure is allocated usingallocate-foreign-object, pointed to bypoint1. Thenforeign-slot-pointer is used to get a pointer, calledpoint2, to the second slot of the foreign object.
(fli:define-c-struct COMPASS
  (west :int)
  (east :int))

(setq point1 (fli:allocate-foreign-object :type 'COMPASS))

(setq point2 (fli:foreign-slot-pointer point1 'east :type :int))

The:type keyword can be used to return the value stored in the slot as a different type, providing the type is compatible. In the next example,point3 is set to be a pointer to the same address aspoint2, but it expects the value stored there to be a boolean.
(setq point3 (fli:foreign-slot-pointer point1 'east
              :type '(:boolean :int)))

Usingdereference the value can be set as an integer usingpoint2 and read as a boolean usingpoint3.
(setf (fli:dereference point2) 0)

(fli:dereference point3)

(setf (fli:dereference point2) 1)

(fli:dereference point3)

See Also

decf-pointer
incf-pointer
make-pointer

LispWorks Foreign Language Interface - 12 Oct 1998

Next Previous Up Top Contents Index

Generated with Harlequin WebMaker