Generated C Function Format and Calling Parameters

The format of the name of each generated C XER decode function is as follows:

   asn1XD_[<prefix>]<prodName>

where <prodName> is the name of the ASN.1 production for which the function is being generated and <prefix> is an optional prefix that can be set via a configuration file setting. The configuration setting used to set the prefix is the <typePrefix> element. This element specifies a prefix that will be applied to all generated typedef names and function names for the production.

The calling sequence for each decode function is as follows:

   status = asn1XD_<name> (OSCTXT* pctxt, <name>* pvalue);

In this definition, <name> denotes the prefixed production name defined above.

The pctxt argument is used to hold a context pointer to keep track of decode parameters. This is a basic "handle" variable that is used to make the function reentrant so that it can be used in an asynchronous or threaded application. The user is required to supply a pointer to a variable of this type declared somewhere in his or her program. The variable must be initialized using the rtInitContext run-time function before use.

C XER decoding is stream-oriented. To perform streaming operations, the context pointer pctxt must also be initialized as a stream by using the rtxStreamInit run-time library function (see the C/C++ Common Run-Time Library Reference Manual for a description of the run-time stream C functions).

The pvalue argument is a pointer to a variable to hold the decoded result. This variable is of the type generated from the ASN.1 production. The decode function will automatically allocate dynamic memory for variable length fields within the structure. This memory is tracked within the context structure and is released when the context structure is freed.

The function result variable stat returns the status of the decode operation. Status code zero indicates the function was successful. A negative value indicates decoding failed. Return status values are defined in the rtxErrCodes.h include file. The reason text and a stack trace can be displayed using the rtxErrPrint function.