Programmer's Reference
The supported parameter types and return types are:
- none, void
- This is not a valid parameter type. If it is used as the return type, the
return value of the Smalltalk message is ignored and no value is returned to
the caller of the EsEntryPoint.
- char, char8
- If it is used as a parameter type, the low eight bits of the parameter are
converted to a Character whose numeric value is between 0 and 255. If
it is used as a return type, the return value from the Smalltalk message must
be a Character whose numeric value is between 0 and 255.
- char16
- If it is used as a parameter type, the low 16 bits of the parameter are
converted to a Character. If it is used as a return type, the return
value from the Smalltalk message must be a Character.
- bool, boolean
- If it is used as a parameter type, the low eight bits of the parameter are
tested for 0. If they are 0, false is passed to the Smalltalk message.
If they are not 0, true is passed. If it is used as a return type, only
true or false can be converted. The return value is TRUE for
true, and FALSE for false.
The return value for true is platform-dependent. In C it is the value of
!0.
- int8, int16, int32, uint8, uint16, uint32
- If it is used as a parameter type, the low 8, 16 or 32 bits of the
parameter are converted to an Integer that is in the specified range.
If it is used as a return type, the return value must be an Integer
(see Returned
parameters). The integer ranges are as follows:
- int8
- -128...127
- int16
- -32768...32767
- int32
- -2147483648...2147483647
- int64
- -2305843009213693952...2305843009213693951
- uint8
- 0...255
- uint16
- 0...65535
- uint32
- 0...4294967295
- uint64
- 0...18446744073709551616
- struct
- If it is used as a parameter type, the parameter is converted using
uint32 conversion. If it is used as a return type, the return value
must be a byte, word, or long object or a non-immediate OSObject.
nil is returned as 0.
- pointer
- If used as a parameter type, the parameter is converted using
uint32 conversion. If it is used as a return type, this is an
amalgamation of struct, char, bool, and int type
conversions. For a given parameter type, the conversion performed is as
follows:
- byte object, word object, long object, nil
- struct
- true, false
- bool
- Character
- char16
- Integer
- uint32
- OSObject
- struct
All other objects cause the conversion to fail.
- safePointer
- If it is used as a parameter type, this is the same as pointer conversion.
If it is used as a return type, the parameter can be a fixed byte, word, or
long object. Instances of OSObject can also be supplied as the
parameter provided they are non-immediate.
If an OSObject whose reference is a byte, word, or long object is
returned, the reference must be in fixed space. This is also true for byte,
word, or long objects that are returned directly.
All values returned to external language functions are extended to a 32-bit
quantity before being returned. Signed integers are sign-extended; unsigned
integers are zero-extended. All the int types perform the same conversion
when converting from VA Smalltalk Base objects to external language values. For
example, -1 can be returned as a uint32 or a uint8. Both result in
0xFFFFFFFF being returned.
[ Top of
Page | Previous Page
| Next Page
| Table of
Contents | Index
]