OBJECT IDENTIFIER

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.