Allocates memory for a list of foreign objects, executes a list of forms which may use the objects across the scope of the macro, and then deallocates the foreign objects.
with-dynamic-foreign-objects bindings &body body => last
A list of variable bindings.
A symbol to be bound to a foreign type.
A foreign type descriptor to be bound to the variable var .
A list of forms to be executed with bindings in effect.
A form to be executed.
The macro
with-dynamic-foreign-objects
binds variables according to the list
bindings
, and then executes
body
. Each element of
bindings
is a list which binds a symbol to a pointer which points to a locally allocated instance of a foreign type. The lifetime of the bound foreign objects, and hence the allocation of the memory they take up, is within the scope of the
with-dynamic-foreign-objects
function.
Any object created with
allocate-dynamic-foreign-object
within
body
will automatically be deallocated once the scope of the
with-dynamic-foreign-objects
function has been left.
Only standard foreign types can be bound using
bindings
. Foreign pointer types should be allocated using
allocate-dynamic-foreign-object
.
An example using
with-dynamic-foreign-objects
and
allocate-dynamic-foreign-object
is given in An example of dynamic memory allocation.