This release introduces a new TCE-C API without dynamic memory allocation (and the support for huge integer type which cannot be mapped on a C standard integer or long integer type. Both features have to be explicitly enabled by the user.
This chapter presents the new services and the improvements added to the TCE-C v4.1 release with regards to the TCE-C v4.0 release.
The TCE-C runtime has two different decoding technologies: table-driven and code generation. For both, the ASN.1 compiler generates by default structure types with pointer/length attributes for the following types of the TCE-C API: BIT STRING, OCTET STRING with and without a content constraint, OBJECT IDENTIFIER, RELATIVE-OID, SEQUENCE OF/SET OF types and character string types.
However, some environments require an API without dynamic memory allocation. This can increase performance and makes the memory usage predictable.
By defining the formal comment --$ implement size < n -- on the mentioned types the ASN.1 compiler generates arrays for the TCE-C table-driven API instead of pointer/length structures. The memory for the used values is then no longer allocated dynamically during execution but automatically by the system at the startup of the application. For code generation technology, this formal comment has no effect.
This can increase performance and makes the memory usage more predictable.
Up to the previous release all integer types were mapped on either a standard or a long integer type, typically 32- or 64-bits. Some domains however require handling of larger integer types which cannot be mapped on any C integer type.
This release introduces the new type casnHugeInteger which allows processing of integer values with an arbitrary length.
This feature can be used by defining the formal comment --$ IntegerRange huge -- on the integer types in the ASN.1 syntax.
The runtime of the ASNSDK TCE-C v4.1 release and the runtime of the ASNSDK TCE-C++ v5.2 release can be linked in the same executable program.