--- a/ExternalLibraryFunction.st Tue Feb 02 10:37:17 2010 +0100
+++ b/ExternalLibraryFunction.st Tue Feb 02 16:44:48 2010 +0100
@@ -67,15 +67,34 @@
documentation
"
instances of me are used to interface to external library functions (as found in a dll/shared object).
- When a special external-call pragma such as:
- <api: bool MessageBeep(uint)>
- is encountered by the parser in a method, the compiler generates a call via
- <correspondingExternalLibraryFunctionObject> invokeWithArguments: argumentArray.
+ Inside a method, when a special external-call pragma such as:
+ <api: bool MessageBeep(uint)>
+
+ is encountered by the parser, the compiler generates a call via
+ <correspondingExternalLibraryFunctionObject> invokeWithArguments: argumentArray.
In the invoke method, the library is checked to be loaded (and loaded if not already),
the arguments are converted to C and pushed onto the C-stack, the function is called,
and finally, the return value is converted back from C to a smalltalk object.
+
+ The parser supports the call-syntax of various other smalltalk dialects:
+ Squeak / ST-X:
+ <cdecl: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
+ <apicall: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
+
+ Dolphin:
+ <stdcall: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
+ <cdecl: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
+
+ ST/V:
+ <api: functionName argType1 .. argTypeN returnType>
+ <ccall: functionName argType1 .. argTypeN returnType>
+ <ole: vFunctionIndex argType1 .. argTypeN returnType>
+
+ VisualWorks:
+ <c: ...>
+ <c: #define NAME value>
"
!
@@ -1466,11 +1485,11 @@
!ExternalLibraryFunction class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.77 2010-01-26 11:20:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.78 2010-02-02 15:44:48 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.77 2010-01-26 11:20:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.78 2010-02-02 15:44:48 cg Exp $'
! !
ExternalLibraryFunction initialize!