Navigation:  Programming Cookbook > External Interfacing > Parameter Types, Validation and Conversion >

External Call Limitations

Previous pageReturn to chapter overviewNext page
Variable argument functions (those prototyped with ellipses in C, such as printf()) are supported in only a limited fashion (by defining multiple wrapper methods taking increasing numbers of arguments), primarily because there is no particularly neat syntax in Smalltalk for sending variable argument messages, or dynamically constructing non-literal Arrays. In the future these may be supported using an array of arguments.
When passing structures by value (using the struct parameter type), be very careful to declare the correct ExternalStructure, and to declare the ExternalStructure correctly. When one does not an unrecoverable stack fault will almost certainly going to result and any unsaved changes will be lost.
Typed pointer arguments (i.e. <struct>*) are not validated to be of the correct type at present, primarily for efficiency reasons. Even so it is recommended that typed pointers be used in order to correctly maintain package prerequisites, and for readability.
The fastcall and thiscall (C++ non-virtual member function) calling conventions are not currently supported. It is possible to call these functions indirectly via another wrapper DLL that exports forwarding functions that employ either the stdcall or the cdecl calling convention.
Currently It is not possible to apply the virtual and overlap attributes to an external call in unison. In practice this means that virtual/COM calls cannot be overlapped.