## Relationship to ASN.1 Type Constructors

As shown in the following table, there are functionally equivalent OM syntaxes for some (but not all) ASN.1 type constructors. The constructors are listed in the first column; corresponding syntaxes are listed in the second column.

Syntaxes for ASN.1 Type Constructors

Type Constructor | Syntax
Any | String(OM_S_ENCODING_STRING)
Choice | OM_S_OBJECT
Enumerated | OM_S_ENUMERATION
Selection | None See Note 16
Sequence | OM_S_OBJECT
Sequence Of | OM_S_OBJECT
Set | OM_S_OBJECT
Set Of | OM_S_OBJECT
Tagged | None See Note 17

The effects of the principal type constructors can be achieved, in any of a variety of ways, by using objects to group attributes or using attributes to group values. An OM application designer can (but need not) model these constructors as classes of the following kinds:

· Choice

An attribute type can be defined for each alternative, with just one being permitted in an instance of the class.

· Sequence or Set

An attribute type can be defined for each sequence or set element. If an element is optional, then the attribute has zero or one values.

· Sequence Of or Set Of

A single multivalued attribute can be defined.

An ASN.1 definition of an Enumerated Type component of a structured type is generally mapped to an OM attribute with an OM syntax OM_S_ENUMERATION in this interface. Where the ASN.1 component is optional, this is generally indicated by an additional member of the enumeration, rather than by the omission of the OM attribute. This leads to simpler programming in the application.

###