The format of the name of each generated XML decode function is as follows:
[<namespace>]XmlDec_[<prefix>]<prodName>
where <namespace>
is an optional C namespace prefix,
<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. <namespace> is set
using the ASN1C -namespace command-line argument.
Note that this should not be confused with the notion of an XML namespace.
The calling sequence for each decode function is as follows:
status = <ns>XmlDec_<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 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 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 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.