Abstract Value Notation is the textual representation of ASN.1 values used in ASN.1 module specifications, as described in X.680.
The employee sample reader programs (c/sample_avn/employee/reader.c
and cpp/sample_avn/employee/reader.cpp
) illustrate decoding
from AVN and encoding to PER. Similar logic can be used to
encode to other encoding rules.
When working with specifications that use extensions in SEQUENCE, SET, or CHOICE types, make sure you have an up-to-date specification that defines all of the components/alternatives you will actually encounter. Encoding and decoding of unknown SEQUENCE, SET, or CHOICE extensions is not supported. Since unknown extensions could not be converted to/from other encodings (e.g. BER or PER) anyway, support for them would add little value.
Similarly, where information object sets are extensible, the actual type for an open types may be unknown. While it is possible to encode or decode unknown open types, you won't be able to convert that data to/from another encoding. As with extensible types, you will want to make sure you have an up-to-data specification that defines information objects covering the data you will be working with, so that you do not encounter open types with an unknown actual type.