chickadee » dollar » $

($ [RETURNTYPE] NAME (TYPE ARGUMENT) ...)syntax

Invokes a C/C++ function by evaluating the arguments, performing the neccessary type-conversions for the foreign type-specifiers TYPE ... and calling NAME (which must be a symbol).

If RETURNTYPE is given, then the result will be converted properly and returned, otherwise void is assumed.

The type/argument lists may also be literal Scheme data or expressions of the form (quote LITERAL) or (location ...) - in this case the arguments are converted according to the type of the literal or are treated as a c-pointer, respectively.

Booleans, characters, numbers, strings, SRFI-4 number vectors and symbols are converted, all other data is passed as being of type scheme-object.

Callbacks into Scheme are not allowed inside the invoked foreign code.

This macro expands into one of the foreign-lambda*, foreign-code or foreign-value forms.