In addition to the base CORBA types, SOM IDL permits the use of pointer types ('*'). As well as increasing the range of base types available to the SOM IDL programmer, using pointer types also permits the construction of more complex data types, including self-referential and mutually recursive structures and unions.
If self-referential structures and unions are required, then, instead of using the CORBA approach for IDL sequences, such as the following:
struct X { ... sequence <X> self; ... };
it is possible to use the more typical C/C++ approach. For example:
struct X { ... X *self; ... };
SOM IDL does not permit an explicit '*' in sequence declarations. If a sequence is required for a pointer type, then it is necessary to typedef the pointer type before use. For example:
sequence <long *> long_star_seq; // error. typedef long * long_star; sequence <long_star> long_star_seq; // OK.