Object types are generated into C structures with their own type definitions in the specification file for the object. The type definition introduces a type alias to the struct representing the object. The type name consists of the name of the object type, without any suffix. For example, the following structure and type definition are generated for an object type B:
typedef struct B B;
struct B {
/* data members of B */
};
/* operations of B */
Because B is an explicit type, other objects can be defined in terms of B. Both specification files and implementation files are generated for object types. Creation, initialization, cleanup, and destruction operations are all automatically generated for object types.
The type B is declared in the specification file for the package that owns B, but memory is not allocated for B until an object of type B is instantiated.
Object types can be instantiated either statically upon initialization of the system, or dynamically during execution (the default is dynamically). Therefore, instances of object types might have a different life span than the system. See Dynamic memory allocation for more information.