New features, known limitations, and restrictions pertain to the SOM compiler.
There are briefly described as follows:
- Mutually recursive IDL struct and union
are not currently supported. The following is an example of unsupported
mutual recursion:
struct X;
struct Y
{
sequence<X> indirectSelf;
};
struct X
{
sequence<Y> indirectSelf;
};
- The C bindings do not permit the use of multiple methods
with the same name that also take an argument of data type VA_LIST within
the same module. For example, the following legal IDL will result in incorrect
C usage bindings:
module X
{
interface Y
{
void Foo (in LONG f, in VA_LIST ap);
};
interface Z
{
void Foo (in LONG f, in VA_LIST ap);
};
};
- The SOM C++ language bindings are built assuming use
of the VisualAge C++ for OS/2 compiler, but other C++ compilers should be
able to use these bindings as well. For example, to use BCOS2 (the Borland
C++ compiler for OS/2), use -DSOMLINK=_syscall on the compile line, and
make sure that the SOMobjects' include directory is consulted before BCOS2/include
(because BCOS2/include contains older SOM.H include files).
- If the SOM compiler is interrupted by the user (using
Ctrl+C, for example), it sometimes leaves a temporary file with a .CTN extension
in the temporary directory specified by the SMTMP environmental variable.
These temporary files should be removed periodically.
- When direct references to SOMFOREIGN types are made
in an IDL struct or union, the C or C++ language bindings
are generated incorrectly. To refer to a SOMFOREIGN type (for example, "somId")
in a struct or union , it is necessary to supply a secondary
typedef for "somId." For example:
#include <somobj.idl>
struct S1
{
somId badId; /* Generates incorrect */
}; /* C/C++ bindings */
#include <somobj.idl>
typedef somId somId2;
struct S1
{
somId2 badId; /* OK */
};
[Back]
[Next]