Unexported Primitive Functions

Parts of the foreign.ss libray are implemented by the MzScheme built-in #%foreign module. The #%foreign module is not intended for direct use, but it exports the following procedures. If you find any of these useful, please let us know.

(ffi-obj objname ffi-lib-or-libname)      PROCEDURE

Pulls out a foreign object from a library, returning a Scheme value that can be used as a pointer. If a name is provided instead of a library object, ffi-lib is used to create a library object.

(ffi-obj? x)      PROCEDURE


(ffi-obj-lib ffi-obj)      PROCEDURE
(ffi-obj-name ffi-obj)      PROCEDURE

A predicate for objects returned by ffi-obj, and accessor functions that return its corresponding library object and name. These values can also be used as C pointer objects.

(ctype-basetype ctype)      PROCEDURE


(ctype-scheme->c ctype)      PROCEDURE
(ctype-c->scheme ctype)      PROCEDURE

Accessors for the components of a C type object, made by make-ctype. ctype-basetype returns #f for primitive types (including cstruct types).

(ffi-call ptr in-types out-type)      PROCEDURE

The primitive mechanism that creates Scheme ``callout'' values. The given ptr (any pointer value, including ffi-obj values) is wrapped in a Scheme-callable primitive function that uses the types to specify how values are marshaled.

(ffi-callback proc in-types out-type)      PROCEDURE

The symmetric counterpart of ffi-call. It receives a Scheme procedure and creates a callback object, which can also be used as a pointer. This object can be used as a C-callable function, which invokes proc using the types to specify how values are marshaled.

(ffi-callback? x)      PROCEDURE

A predicate for callback values that are created by ffi-callback.