Next: , Previous: Limitations, Up: Top


Appendix A Platform-specific features

Whenever a backend doesn't support one of CFFI's features, a specific symbol is pushed onto common-lisp:*features*. The meanings of these symbols follow.

cffi-sys::flat-namespace
This Lisp has a flat namespace for foreign symbols meaning that you won't be able to load two different libraries with homograph functions and successfully differentiate them through the :library option to defcfun, defcvar, etc...
cffi-sys::no-foreign-funcall
The macro foreign-funcall is not available. On such platforms, the only way to call a foreign function is through defcfun. See foreign-funcall, and defcfun.
cffi-sys::no-long-long
The C long long type is not available as a foreign type.

However, on such platforms CFFI provides its own implementation of the long long type for all of operations in chapters Foreign Types, Pointers and Variables. The functionality described in Functions and Callbacks will not be available.

32-bit Lispworks 5.0+ is an exception. In addition to the CFFI implementation described above, Lispworks itself implements the long long type for Functions. Callbacks are still missing long long support, though.

cffi-sys::no-stdcall
This Lisp doesn't support the stdcall calling convention. Note that it only makes sense to support stdcall on (32-bit) x86 platforms.