MathLink Interface 3
The library now fully supports the Unicode character encoding forms UTF-8, UTF-16, and UTF-32. Use the following new API functions to put or get Unicode characters to or from a link.
The
MathLink library header file
mathlink.h no longer contains obsolete platform support sections such as those defined by
MACINTOSH_MATHLINK or
OS2_MATHLINK.
MACINTOSH_MATHLINK definitions referred to Mac OS 9 and earlier.
DARWIN_MATHLINK contains all platform-specific definitions for Mac OS X.
All uses of special alternative names for common C types have been removed from the API. The
MathLink header file
mathlink.h still contains versions of the API functions with these types for use with Interface 2 and older programs.
| Previous MathLink type | C type |
| uchar_ct | unsigned char |
| ucharp_ct | unsigned char * |
| ucharpp_ct | unsigned char ** |
| ucharppp_ct | unsigned char *** |
| ushort_ct | unsigned short |
| ushortp_ct | unsigned short * |
| ushortpp_ct | unsigned short ** |
| ushortppp_ct | unsigned short *** |
| uint_ct | unsigned int |
| uintp_ct | unsigned int * |
| uintpp_ct | unsigned int ** |
| int_ct | int |
| voidp_ct | void * |
| voidpp_ct | void ** |
| charp_ct | char * |
| charpp_ct | char ** |
| charppp_ct | char *** |
| long_ct | long |
| longp_ct | long * |
| longpp_ct | long ** |
| long_st | long |
| longp_st | long * |
| longpp_st | long ** |
| ulong_ct | unsigned long |
| ulongp_ct | unsigned long * |
| kushortp_ct | const unsigned short * |
| kushortpp_ct | const unsigned short ** |
| kuintp_ct | const unsigned int * |
| kuintpp_ct | const unsigned int ** |
| kucharp_ct | const unsigned char * |
| kucharpp_ct | const unsigned char ** |
| kcharp_ct | const char * |
| kcharpp_ct | const char ** |
| kvoidp_ct | const void * |
The memory allocator/deallocator functions passed to the library using
MLSetAllocParameter() now must be thread-safe.
API functions that previously took a
MLParametersPointer type as an argument or returned a
MLParametersPointer type now instead take or return a
char * type.
API functions that took as an argument or returned a
mlapi_result type now take or return type
int.
API functions that took as an argument or returned a
mlapi_error type now take or return type
int.
API functions that took as an argument or returned a
mlapi_token type now take or return type
int.
API functions that took as an argument or returned a
mlapi_packet type now take or return type
int.
API functions that took as an argument or returned a
MLPointer type now take or return
void *.
The
MLOpen* functions previously took type
long * for the error variable but now take type
int *.
The header file
mathlink.h now contains several new error definitions related to the Unicode character encoding forms.
| Error code | Interpretation |
| MLEPDATABAD | MathLink encountered invalid character data in given character encoding |
| MLEPSCONVERT | Unable to convert from given character encoding to MathLink encoding |
| MLEGSCONVERT | Unable to convert from MathLink encoding to requested character encoding |
MLPutMessage() and
MLGetMessage() now use types
int and
int * respectively instead of the
dev_message and
dev_message * types.
MLSeekMark() and
MLSeekToMark() now use type
int rather than type
long for the expression index.
The functions in the following table took
long types for some arguments; they now take
int.
MLGetReal() is now an actual API function rather than a
#define alias to
MLGetDouble().
MLGetReal() still has the same functionality as
MLGetDouble().
MLActivate() is now an actual API function rather than a
#define alias to
MLConnect().
MLActivate() still has the same functionality as
MLConnect().
The functions in column one listed below are now obsolete. New programs should use the functions listed in column two for replacement functionality.
Interface 3 changes the default link protocol for link mode Listen and link mode Connect links. By default the
MathLink library will create "SharedMemory" links for link mode Listen and link mode Connect links on all platforms.