The ASN.1 OBJECT IDENTIFIER type is converted into a C or C++ structured type to hold the subidentifier values that make up the object identifier.
ASN.1 production:
<name> ::= OBJECT IDENTIFIER
Generated C code:
typedef ASN1OBJID <name>;
Generated C++ code:
typedef ASN1TObjId ASN1T_<name>;
In this case, different base types are used for C and C++. The difference between the two is the C++ version includes constructors and assignment operators that make setting the value a bit easier.
The ASN1OBJID type (i.e., the type used in the C mapping) is defined in asn1type.h to be the following:
typedef struct { OSUINT32 numids; /* number of subidentifiers */ OSUINT32 subid[ASN_K_MAXSUBIDS];/* subidentifier values */ } ASN1OBJID;
The constant ASN_K_MAXSUBIDS specifies the maximum number of sub-identifiers that can be assigned to a value of the type. This constant is set to 128 as per the ASN.1 standard.
The ASN1TObjId type used in the C++ mapping is defined in ASN1TObjId.h. This class extends the C ASN1OBJID structure and adds many additional constructors and helper methods. See the ASN1C C/C++ Common Run-time Reference Manual for more details.