ASN1C C/C++ Common Runtime  ASN1C v7.8.x
Classes | Macros | Typedefs | Functions
Context Management Functions

Classes

struct  OSRTErrLocn
 
struct  OSRTErrInfo
 
struct  OSRTErrInfoList
 
struct  OSRTBuffer
 
struct  OSRTBufSave
 
struct  OSBufferIndex
 
struct  OSCTXT
 

Macros

#define OSRTERRSTKSIZ   8 /* error stack size */
 
#define OSRTMAXERRPRM   5 /* maximum error parameters */
 
#define OSDIAG   0x80000000 /* diagnostic tracing enabled */
 
#define OSTRACE   0x40000000 /* tracing enabled */
 
#define OSDISSTRM   0x20000000 /* disable stream encode/decode */
 
#define OSNOSTRMBACKOFF   0x08000000 /* stream mark/reset funcs is not used */
 
#define OS3GMOBORIG   0x04000000 /* 3G mobile-originated (net to MS) */
 
#define OSCONTCLOSED   0x02000000 /* 3G container closed. */
 
#define OSRESERVED1   0x01000000 /* reserved */
 
#define OSBUFSYSALLOC   0x00800000 /* ctxt buf allocated using sys alloc */
 
#define OSLICCHECKIN   0x00400000 /* check in ifloat license on free */
 
#define OSNOWHITESPACE   0x00400000 /* Turn off indentation whitesapce */
 
#define OSCDECL
 
#define pLicInfo   pli709
 
#define OSRT_GET_FIRST_ERROR_INFO(pctxt)
 
#define OSRT_GET_LAST_ERROR_INFO(pctxt)
 
#define rtxCtxtGetMsgPtr(pctxt)   (pctxt)->buffer.data
 
#define rtxCtxtGetMsgLen(pctxt)   (pctxt)->buffer.byteIndex
 
#define rtxCtxtTestFlag(pctxt, mask)   (((pctxt)->flags & mask) != 0)
 
#define rtxCtxtPeekElemName(pctxt)
 
#define rtxByteAlign(pctxt)
 
#define rtxCtxtSetProtocolVersion(pctxt, value)   (pctxt)->version = value
 
#define rtxMarkBitPos(pctxt, ppos, pbitoff)   (*(pbitoff) = (OSUINT8) (pctxt)->buffer.bitOffset, rtxMarkPos (pctxt, ppos))
 
#define rtxResetToBitPos(pctxt, pos, bitoff)   ((pctxt)->buffer.bitOffset = (OSUINT8) bitoff, rtxResetToPos (pctxt, pos))
 
#define RTXCTXTPUSHARRAYELEMNAME(pctxt, name, idx)   rtxCtxtPushArrayElemName(pctxt,OSUTF8(name),idx)
 
#define RTXCTXTPOPARRAYELEMNAME(pctxt)   rtxCtxtPopArrayElemName(pctxt)
 
#define RTXCTXTPUSHELEMNAME(pctxt, name)   rtxCtxtPushElemName(pctxt,OSUTF8(name))
 
#define RTXCTXTPOPELEMNAME(pctxt)   rtxCtxtPopElemName(pctxt)
 
#define RTXCTXTPUSHTYPENAME(pctxt, name)   rtxCtxtPushTypeName(pctxt,OSUTF8(name))
 
#define RTXCTXTPOPTYPENAME(pctxt)   rtxCtxtPopTypeName(pctxt)
 

Typedefs

typedef OSUINT32 OSRTFLAGS
 
typedef int(* OSFreeCtxtAppInfoPtr) (struct OSCTXT *pctxt)
 
typedef int(* OSResetCtxtAppInfoPtr) (struct OSCTXT *pctxt)
 
typedef void(* OSFreeCtxtGlobalPtr) (struct OSCTXT *pctxt)
 
typedef struct OSCTXT OSCTXT
 

Functions

int rtxInitContext (OSCTXT *pctxt)
 
int rtxInitContextExt (OSCTXT *pctxt, OSMallocFunc malloc_func, OSReallocFunc realloc_func, OSFreeFunc free_func)
 
int rtxInitThreadContext (OSCTXT *pctxt, const OSCTXT *pSrcCtxt)
 
int rtxInitContextUsingKey (OSCTXT *pctxt, const OSOCTET *key, OSSIZE keylen)
 
int rtxInitContextBuffer (OSCTXT *pctxt, OSOCTET *bufaddr, OSSIZE bufsiz)
 
int rtxCtxtSetBufPtr (OSCTXT *pctxt, OSOCTET *bufaddr, OSSIZE bufsiz)
 
OSSIZE rtxCtxtGetBitOffset (OSCTXT *pctxt)
 
int rtxCtxtSetBitOffset (OSCTXT *pctxt, OSSIZE offset)
 
OSSIZE rtxCtxtGetIOByteCount (OSCTXT *pctxt)
 
int rtxCheckContext (OSCTXT *pctxt)
 
void rtxFreeContext (OSCTXT *pctxt)
 
void rtxCopyContext (OSCTXT *pdest, OSCTXT *psrc)
 
void rtxCtxtSetFlag (OSCTXT *pctxt, OSUINT32 mask)
 
void rtxCtxtClearFlag (OSCTXT *pctxt, OSUINT32 mask)
 
int rtxCtxtPushArrayElemName (OSCTXT *pctxt, const OSUTF8CHAR *elemName, OSSIZE idx)
 
int rtxCtxtPushElemName (OSCTXT *pctxt, const OSUTF8CHAR *elemName)
 
int rtxCtxtPushElemNameCopy (OSCTXT *pctxt, const OSUTF8CHAR *elemName)
 
int rtxCtxtPushTypeName (OSCTXT *pctxt, const OSUTF8CHAR *typeName)
 
OSBOOL rtxCtxtPopArrayElemName (OSCTXT *pctxt)
 
const OSUTF8CHAR * rtxCtxtPopElemName (OSCTXT *pctxt)
 
void rtxCtxtPopElemNameCopy (OSCTXT *pctxt)
 
const OSUTF8CHAR * rtxCtxtPopTypeName (OSCTXT *pctxt)
 
OSBOOL rtxCtxtContainerHasRemBits (OSCTXT *pctxt)
 
OSBOOL rtxCtxtContainerEnd (OSCTXT *pctxt)
 
OSSIZE rtxCtxtGetContainerRemBits (OSCTXT *pctxt)
 
int rtxCtxtPushContainerBytes (OSCTXT *pctxt, OSSIZE bytes)
 
int rtxCtxtPushContainerBits (OSCTXT *pctxt, OSSIZE bits)
 
void rtxCtxtPopContainer (OSCTXT *pctxt)
 
void rtxCtxtPopAllContainers (OSCTXT *pctxt)
 
int rtxPreInitContext (OSCTXT *pctxt)
 
void rtxCtxtSetMemHeap (OSCTXT *pctxt, OSCTXT *pSrcCtxt)
 
void rtxMemHeapSetFlags (OSCTXT *pctxt, OSUINT32 flags)
 
void rtxMemHeapClearFlags (OSCTXT *pctxt, OSUINT32 flags)
 
int rtxCtxtMarkBitPos (OSCTXT *pctxt, OSSIZE *ppos)
 
int rtxCtxtResetToBitPos (OSCTXT *pctxt, OSSIZE pos)
 
int rtxMarkPos (OSCTXT *pctxt, OSSIZE *ppos)
 
int rtxResetToPos (OSCTXT *pctxt, OSSIZE pos)
 
const char * rtxCtxtGetExpDateStr (OSCTXT *pctxt, char *buf, OSSIZE bufsiz)
 
void rtxLicenseClose (void)
 

Detailed Description

Context initialization functions handle the allocation, initialization, and destruction of context variables (variables of type OSCTXT). These variables hold all of the working data used during the process of encoding or decoding a message. The context provides thread safe operation by isolating what would otherwise be global variables within this structure. The context variable is passed from function to function as a message is encoded or decoded and maintains state information on the encoding or decoding process.

Macro Definition Documentation

◆ OSNOWHITESPACE

#define OSNOWHITESPACE   0x00400000 /* Turn off indentation whitesapce */

Turn off unnecessary whitespace in text output. Currently, this affects Abstract Value Notation and JSON (JER) output.

◆ OSRT_GET_FIRST_ERROR_INFO

#define OSRT_GET_FIRST_ERROR_INFO (   pctxt)
Value:
(((pctxt)->errInfo.list.head == 0) ? (OSRTErrInfo*)0 : \
(OSRTErrInfo*)((pctxt)->errInfo.list.head->data))
Definition: rtxContext.h:67

◆ OSRT_GET_LAST_ERROR_INFO

#define OSRT_GET_LAST_ERROR_INFO (   pctxt)
Value:
(((pctxt)->errInfo.list.tail == 0) ? (OSRTErrInfo*)0 : \
(OSRTErrInfo*)((pctxt)->errInfo.list.tail->data))
Definition: rtxContext.h:67

◆ rtxByteAlign

#define rtxByteAlign (   pctxt)
Value:
if ((pctxt)->buffer.bitOffset != 8) { \
(pctxt)->buffer.byteIndex++; (pctxt)->buffer.bitOffset = 8; }

This macro will byte-align the context buffer.

◆ rtxCtxtGetMsgLen

#define rtxCtxtGetMsgLen (   pctxt)    (pctxt)->buffer.byteIndex

This macro returns the length of an encoded message. It will only work for in-memory encoding, not for encode to stream.

Note that this macro will not work with ASN.1 BER in-memory encoding. In this case, the BER-specific version of the function must be used.

Parameters
pctxtPointer to a context structure.

◆ rtxCtxtGetMsgPtr

#define rtxCtxtGetMsgPtr (   pctxt)    (pctxt)->buffer.data

This macro returns the start address of an encoded message. If a static buffer was used, this is simply the start address of the buffer. If dynamic encoding was done, this will return the start address of the dynamic buffer allocated by the encoder.

Note that this macro will not work with ASN.1 BER in-memory encoding. In this case, the BER-specific version of the function must be used.

Parameters
pctxtPointer to a context structure.

◆ rtxCtxtPeekElemName

#define rtxCtxtPeekElemName (   pctxt)
Value:
(((pctxt)->elemNameStack.count > 0) ? \
(const OSUTF8CHAR*)(pctxt)->elemNameStack.tail->data : (const OSUTF8CHAR*)0)

This macro returns the last element name from the context stack.

Parameters
pctxtPointer to a context structure.
Returns
Element name from top of stack or NULL if stack is empty.

◆ rtxCtxtSetProtocolVersion

#define rtxCtxtSetProtocolVersion (   pctxt,
  value 
)    (pctxt)->version = value

This macro sets the protocol version in the context. This version number may be used in application code to do version specific operations. It is used in generated ASN.1 code with the extension addition version numbers to determine if an addition should be decoded.

For example, if this value is set to 8 and an extension addition group exists with version number 9 ([[ 9: ... ]]), its contents will not be decoded.

Parameters
pctxtPointer to a context structure.
valueThe version number value.

◆ rtxCtxtTestFlag

#define rtxCtxtTestFlag (   pctxt,
  mask 
)    (((pctxt)->flags & mask) != 0)

This macro tests if the given bit flag is set in the context.

Parameters
pctxt- A pointer to a context structure.
mask- Bit flag to be tested

Typedef Documentation

◆ OSFreeCtxtAppInfoPtr

typedef int(* OSFreeCtxtAppInfoPtr) (struct OSCTXT *pctxt)

OSRTFreeCtxtAppInfoPtr is a pointer to pctxt->pAppInfo free function, The pctxt->pAppInfo (pXMLInfo and pASN1Info) should contain the pointer to a structure and its first member should be a pointer to an appInfo free function.

◆ OSFreeCtxtGlobalPtr

typedef void(* OSFreeCtxtGlobalPtr) (struct OSCTXT *pctxt)

OSRTFreeCtxtGlobalPtr is a pointer to a memory free function. This type describes the custom global memory free function generated by the compiler to free global nmemory. A pointer to a function of this type may be stored in the context gblFreeFunc field in order to free global data (pGlobalData) when rtxFreeContext is called.

◆ OSResetCtxtAppInfoPtr

typedef int(* OSResetCtxtAppInfoPtr) (struct OSCTXT *pctxt)

OSRTResetCtxtAppInfoPtr is a pointer to pctxt->pAppInfo reset function, The pctxt->pAppInfo (pXMLInfo and pASN1Info) should contain the pointer to a structure and its second member should be a pointer to appInfo reset function.

Function Documentation

◆ rtxCheckContext()

int rtxCheckContext ( OSCTXT pctxt)

This function verifies that the given context structure is initialized and ready for use.

Parameters
pctxtPointer to a context structure.
Returns
Completion status of operation:
  • 0 = success,
  • RTERR_NOTINIT status code if not initialized

◆ rtxCopyContext()

void rtxCopyContext ( OSCTXT pdest,
OSCTXT psrc 
)

This function creates a copy of a context structure. The copy is a "shallow copy" (i.e. new copies of dynamic memory blocks held within the context are not made, only the pointers are transferred to the new context structure). This function is mainly for use from within compiler-generated code.

Parameters
pdest- Context structure to which data is to be copied.
psrc- Context structure from which data is to be copied.

◆ rtxCtxtClearFlag()

void rtxCtxtClearFlag ( OSCTXT pctxt,
OSUINT32  mask 
)

This function is used to clear a processing flag within the context structure.

Parameters
pctxt- A pointer to a context structure.
mask- Mask containing bit(s) to be cleared.

◆ rtxCtxtContainerEnd()

OSBOOL rtxCtxtContainerEnd ( OSCTXT pctxt)

Return true if we are at the end of container - neither having more bits remaining nor having overrun it; otherwise return false. Overflowing the container should only be possible when a container length has been pushed onto the container stack, since the runtime doesn't allow going beyond the end of the buffer.

See also rtxCtxtPushContainer(Bits|Bytes)/rtxCtxtPopContainer

Parameters
pctxtPointer to context structure.

◆ rtxCtxtContainerHasRemBits()

OSBOOL rtxCtxtContainerHasRemBits ( OSCTXT pctxt)

Return true iff there are bits remaining to be decoded in the current length-constrained container, which is possibly the outer PDU.

See also rtxCtxtPushContainer(Bits|Bytes)/rtxCtxtPopContainer

Parameters
pctxtPointer to context structure.

◆ rtxCtxtGetBitOffset()

OSSIZE rtxCtxtGetBitOffset ( OSCTXT pctxt)

This function returns the total bit offset to the current element in the context buffer.

Parameters
pctxtPointer to a context structure.
Returns
Bit offset.

Referenced by ASN1MessageBuffer::getBitOffset().

◆ rtxCtxtGetContainerRemBits()

OSSIZE rtxCtxtGetContainerRemBits ( OSCTXT pctxt)

Return the number of bits remaining to be decoded in the current length-constrained container, which is possibly the outer PDU.

See also rtxCtxtPushContainer(Bits|Bytes)/rtxCtxtPopContainer

Parameters
pctxtPointer to context structure.

◆ rtxCtxtGetExpDateStr()

const char* rtxCtxtGetExpDateStr ( OSCTXT pctxt,
char *  buf,
OSSIZE  bufsiz 
)

This function will get the license expiration date for a time-limited license.

Parameters
pctxtPointer to a context block.
bufBuffer to receive date string.
bufsizSize of the buffer.
Returns
Pointer to character string if successful (will be point to buf) or null if no expiration date was found.

◆ rtxCtxtGetIOByteCount()

OSSIZE rtxCtxtGetIOByteCount ( OSCTXT pctxt)

This function returns the count of bytes either written to a stream or memory buffer.

Parameters
pctxtPointer to a context structure.
Returns
I/O byte count.

◆ rtxCtxtMarkBitPos()

int rtxCtxtMarkBitPos ( OSCTXT pctxt,
OSSIZE *  ppos 
)

This function saves the current bit position in a message buffer.

Parameters
pctxtPointer to a context block.
pposPointer to saved position.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxCtxtPopAllContainers()

void rtxCtxtPopAllContainers ( OSCTXT pctxt)

Pop all containers from the container stack. This is useful for clearing the stack when an error has occured. It is invoked automatically by rtxErrReset.

Parameters
pctxtPointer to context structure.

◆ rtxCtxtPopArrayElemName()

OSBOOL rtxCtxtPopArrayElemName ( OSCTXT pctxt)

This function pops the last element name from the context stack. This name is assumed to be an array element name pushed by the rtxCtxtPushArrayElemName function. The name is therefore dynamic and memory is freed for it using the rtxMemFreePtr function.

Parameters
pctxtPointer to a context structure.
Returns
True if name popped from stack or false if stack is empty.

◆ rtxCtxtPopContainer()

void rtxCtxtPopContainer ( OSCTXT pctxt)

Notify the runtime layer of the end of decoding of a length-constrained container of the given length. This method should be called when the final bit to be decoded has been decoded.

This pops an entry off of pctxt->containerEndIndex

Parameters
pctxtPointer to context structure.

◆ rtxCtxtPopElemName()

const OSUTF8CHAR* rtxCtxtPopElemName ( OSCTXT pctxt)

This function pops the last element name from the context stack.

Parameters
pctxtPointer to a context structure.
Returns
Element name popped from stack or NULL if stack is empty.

◆ rtxCtxtPopElemNameCopy()

void rtxCtxtPopElemNameCopy ( OSCTXT pctxt)

This function pops the last element name from the context stack and frees the associated memory. It is assumed it was added to the stack using the rtxCtxtPushElemNameCopy function.

Parameters
pctxtPointer to a context structure.

◆ rtxCtxtPopTypeName()

const OSUTF8CHAR* rtxCtxtPopTypeName ( OSCTXT pctxt)

This function pops the type name from the context stack. The name is only popped if the item count is one.

Parameters
pctxtPointer to a context structure.
Returns
Type name popped from stack or NULL if stack count not equal to one.

◆ rtxCtxtPushArrayElemName()

int rtxCtxtPushArrayElemName ( OSCTXT pctxt,
const OSUTF8CHAR *  elemName,
OSSIZE  idx 
)

This function is used to push an array element name onto the context element name stack. The name is formed by combining the given element name with the index to create a name of format name[index]. Dynamic memory is allocated for the resulting name using the rtxMemAlloc function.

Parameters
pctxtPointer to a context structure.
elemNameName of element to be pushed on stack.
idxIndex or the array element.
Returns
Completion status of operation:
  • 0 = success,
  • RTERR_NOMEM if mem alloc for name fails.

◆ rtxCtxtPushContainerBits()

int rtxCtxtPushContainerBits ( OSCTXT pctxt,
OSSIZE  bits 
)

Notify the runtime layer of the start of decoding of a length-constrained container of a given length. This method should be called when the next bit to be decoded is the first bit of the length-constrained content.

This pushes an entry onto pctxt->containerEndIndex.

Parameters
pctxtPointer to context structure.
bitsNumber of bits in the length-constrained container.
Returns
Completion status of operation:
  • zero (0) = success,
  • negative return value is error.

◆ rtxCtxtPushContainerBytes()

int rtxCtxtPushContainerBytes ( OSCTXT pctxt,
OSSIZE  bytes 
)

Notify the runtime layer of the start of decoding of a length-constrained container of a given length. This method should be called when the next bit to be decoded is the first bit of the length-constrained content.

This pushes an entry onto pctxt->containerEndIndex.

Parameters
pctxtPointer to context structure.
bytesNumber of bytes of the length-constrained container.
Returns
Completion status of operation:
  • zero (0) = success,
  • negative return value is error.

◆ rtxCtxtPushElemName()

int rtxCtxtPushElemName ( OSCTXT pctxt,
const OSUTF8CHAR *  elemName 
)

This function is used to push an element name onto the context element name stack.

Parameters
pctxtPointer to a context structure.
elemNameName of element to be pushed on stack. Note that a copy of the name is not made, the pointer to the name that is passed is stored.
Returns
Completion status of operation:
  • 0 = success,
  • RTERR_NOMEM if mem alloc for list element fails.

◆ rtxCtxtPushElemNameCopy()

int rtxCtxtPushElemNameCopy ( OSCTXT pctxt,
const OSUTF8CHAR *  elemName 
)

This function is used to push a copy of the given element name onto the context element name stack. A copy of the element name is made using context memory management. The name should be popped using the rtxCtxtPopElemNameCopy function to ensure memory is freed.

Parameters
pctxtPointer to a context structure.
elemNameName of element to be pushed on stack. A copy of the name is made.
Returns
Completion status of operation:
  • 0 = success,
  • RTERR_NOMEM if mem alloc for name or list element fails.

◆ rtxCtxtPushTypeName()

int rtxCtxtPushTypeName ( OSCTXT pctxt,
const OSUTF8CHAR *  typeName 
)

This function is used to push a type name onto the context element name stack. The name is only added for the top-level type. This is determined by testing to ensure that there are no existing names on the stack.

Parameters
pctxtPointer to a context structure.
typeNameName of type to be pushed on stack. Note that a copy of the name is not made, the pointer to the name that is passed is stored.
Returns
Completion status of operation:
  • 0 = success,
  • RTERR_NOMEM if mem alloc for name fails.

◆ rtxCtxtResetToBitPos()

int rtxCtxtResetToBitPos ( OSCTXT pctxt,
OSSIZE  pos 
)

This function resets a message buffer back to the given bit position.

Parameters
pctxtPointer to a context block.
posContext position.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxCtxtSetBitOffset()

int rtxCtxtSetBitOffset ( OSCTXT pctxt,
OSSIZE  offset 
)

This function sets the bit offset in the context to the given value.

Parameters
pctxtPointer to a context structure.
offsetBit offset.
Returns
Completion status of operation:
  • 0 = success,
  • Negative status code if error

◆ rtxCtxtSetBufPtr()

int rtxCtxtSetBufPtr ( OSCTXT pctxt,
OSOCTET *  bufaddr,
OSSIZE  bufsiz 
)

This function is used to set the internal buffer pointer for in-memory encoding or decoding. It must be called after the context variable is initialized before any other compiler generated or run-time library encode function.

Parameters
pctxtPointer to a context structure. This provides a storage area for the function to store all working variables that must be maintained between function calls.
bufaddrA pointer to a memory buffer to use to encode a message or that holds a message to be decoded. The buffer should be declared as an array of unsigned characters (OCTETs). This parameter can be set to NULL to specify dynamic encoding (i.e., the encode functions will dynamically allocate a buffer to hold the encoded message).
bufsizThe length of the memory buffer in bytes. Should be set to zero if NULL was specified for bufaddr (i.e. dynamic encoding was selected).

◆ rtxCtxtSetFlag()

void rtxCtxtSetFlag ( OSCTXT pctxt,
OSUINT32  mask 
)

This function is used to set a processing flag within the context structure.

Parameters
pctxt- A pointer to a context structure.
mask- Mask containing bit(s) to be set.

◆ rtxFreeContext()

void rtxFreeContext ( OSCTXT pctxt)

This function frees all dynamic memory associated with a context. This includes all memory allocated using the rtxMem functions using the given context parameter.

Parameters
pctxtPointer to a context structure.

◆ rtxInitContext()

int rtxInitContext ( OSCTXT pctxt)

This function initializes an OSCTXT block. It sets all key working parameters to their correct initial state values. It is required that this function be invoked before using a context variable.

NOTE: This as part of the common runtime, this is not intended to be called directly by user code; it does not initialize application-specific data structures (e.g. those used for ASN.1). If you are a user reading this, you may instead be interested in rtInitContext.

Parameters
pctxtPointer to the context structure variable to be initialized.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxInitContextBuffer()

int rtxInitContextBuffer ( OSCTXT pctxt,
OSOCTET *  bufaddr,
OSSIZE  bufsiz 
)

This function assigns a message buffer to a context block. The block should have been previously initialized by rtxInitContext.

Parameters
pctxtThe pointer to the context structure variable to be initialized.
bufaddrFor encoding, the address of a memory buffer to receive the encoded message. If this address is NULL (0), encoding to a dynamic buffer will be done. For decoding, the address of a buffer that contains the message data to be decoded.
bufsizThe size of the memory buffer. For encoding, this argument may be set to zero to indicate a dynamic memory buffer should be used.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxInitContextExt()

int rtxInitContextExt ( OSCTXT pctxt,
OSMallocFunc  malloc_func,
OSReallocFunc  realloc_func,
OSFreeFunc  free_func 
)

This function initializes an OSCTXT block. It sets all key working parameters to their correct initial state values. It is required that this function be invoked before using a context variable.

Parameters
pctxtPointer to the context structure variable to be initialized.
malloc_funcPointer to the memory allocation function.
realloc_funcPointer to the memory reallocation function.
free_funcPointer to the memory deallocation function.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxInitContextUsingKey()

int rtxInitContextUsingKey ( OSCTXT pctxt,
const OSOCTET *  key,
OSSIZE  keylen 
)

This function initializes a context using a run-time key. This form is required for evaluation and limited distribution software. The compiler will generate a macro for rtXmlInitContext in the rtkey.h file that will invoke this function with the generated run-time key.

Parameters
pctxtThe pointer to the context structure variable to be initialized.
keyKey data generated by ASN1C compiler.
keylenKey data field length.
Returns
Completion status of operation:
  • 0 (ASN_OK) = success,
  • negative return value is error.

◆ rtxInitThreadContext()

int rtxInitThreadContext ( OSCTXT pctxt,
const OSCTXT pSrcCtxt 
)

This function initializes a context for use in a thread. It is the same as rtxInitContext except that it copies the pointer to constant data from the given source context into the newly initialized thread context. It is assumed that the source context has been initialized and the custom generated global initialization function has been called. The main purpose of this function is to prevent multiple copies of global static data from being created within different threads.

Parameters
pctxtPointer to the context structure variable to be initialized.
pSrcCtxtPointer to source context which has been fully initialized including a pointer to global constant data initialized via a call to a generated 'Init_<project>_Global' function.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxLicenseClose()

void rtxLicenseClose ( void  )

Finish with current license and free internal resources. To avoid crashing your application:

  • Do not call this during an exit handler function registered with atexit().
  • Do not call this when another thread might concurrently trigger a license check by invoking methods in the asn1c runtime.

◆ rtxMarkPos()

int rtxMarkPos ( OSCTXT pctxt,
OSSIZE *  ppos 
)

This function saves the current position in a message buffer or stream. Note that this saves the byte offset only and does not consider the bit position. Therefore, it may not be suitable for use with the packed encoding rules (see rtxMarkBitPos).

Parameters
pctxtPointer to a context block.
pposPointer to saved position.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.

◆ rtxMemHeapClearFlags()

void rtxMemHeapClearFlags ( OSCTXT pctxt,
OSUINT32  flags 
)

This function clears memory heap flags.

Parameters
pctxtPointer to a memory block structure that contains the list of dynamic memory block maintained by these functions.
flagsThe flags

◆ rtxMemHeapSetFlags()

void rtxMemHeapSetFlags ( OSCTXT pctxt,
OSUINT32  flags 
)

This function sets flags to a heap. May be used to control the heap's behavior.

Parameters
pctxtPointer to a memory block structure that contains the list of dynamic memory block maintained by these functions.
flagsThe flags.

◆ rtxResetToPos()

int rtxResetToPos ( OSCTXT pctxt,
OSSIZE  pos 
)

This function resets a message buffer or stream back to the given position.

Parameters
pctxtPointer to a context block.
posContext position.
Returns
Completion status of operation:
  • 0 = success,
  • negative return value is error.