Memory Buffer Management Functions
Memory buffer management functions handle the allocation, expansion, and deallocation of dynamic memory buffers used by some encode/decode functions. More...
Functions | |
EXTERNRT int | rtxMemBufAppend (OSRTMEMBUF *pMemBuf, const OSOCTET *pdata, OSSIZE nbytes) |
This function appends the data to the end of a memory buffer. | |
EXTERNRT int | rtxMemBufCut (OSRTMEMBUF *pMemBuf, OSSIZE fromOffset, OSSIZE nbytes) |
This function cuts off the part of memory buffer. | |
EXTERNRT void | rtxMemBufFree (OSRTMEMBUF *pMemBuf) |
This function frees the memory buffer. | |
EXTERNRT OSOCTET * | rtxMemBufGetData (const OSRTMEMBUF *pMemBuf, int *length) |
This function returns the pointer to the used part of a memory buffer. | |
EXTERNRT OSOCTET * | rtxMemBufGetDataExt (const OSRTMEMBUF *pMemBuf, OSSIZE *length) |
This function returns the pointer to the used part of a memory buffer. | |
EXTERNRT OSSIZE | rtxMemBufGetDataLen (const OSRTMEMBUF *pMemBuf) |
This function returns the length of the used part of a memory buffer. | |
EXTERNRT void | rtxMemBufInit (OSCTXT *pCtxt, OSRTMEMBUF *pMemBuf, OSSIZE segsize) |
This function initializes a memory buffer structure. | |
EXTERNRT void | rtxMemBufInitBuffer (OSCTXT *pCtxt, OSRTMEMBUF *pMemBuf, OSOCTET *buf, OSSIZE bufsize, OSSIZE segsize) |
This function assigns a static buffer to the memory buffer structure. | |
EXTERNRT int | rtxMemBufPreAllocate (OSRTMEMBUF *pMemBuf, OSSIZE nbytes) |
This function allocates a buffer with a predetermined amount of space. | |
EXTERNRT void | rtxMemBufReset (OSRTMEMBUF *pMemBuf) |
This function resets the memory buffer structure. | |
EXTERNRT int | rtxMemBufSet (OSRTMEMBUF *pMemBuf, OSOCTET value, OSSIZE nbytes) |
This function sets part of a memory buffer to a specified octet value. | |
EXTERNRT OSBOOL | rtxMemBufSetExpandable (OSRTMEMBUF *pMemBuf, OSBOOL isExpandable) |
This function sets "isExpandable" flag for the memory buffer object. | |
EXTERNRT OSBOOL | rtxMemBufSetUseSysMem (OSRTMEMBUF *pMemBuf, OSBOOL value) |
This function sets a flag to indicate that system memory management should be used instead of the custom memory manager. | |
EXTERNRT OSSIZE | rtxMemBufTrimW (OSRTMEMBUF *pMemBuf) |
This function trims white space of the memory buffer. |
Detailed Description
Memory buffer management functions handle the allocation, expansion, and deallocation of dynamic memory buffers used by some encode/decode functions.
Dynamic memory buffers are buffers that can grow or shrink to hold variable sized amounts of data. This group of functions allows data to be appended to buffers, to be set within buffers, and to be retrieved from buffers. Currently, these functions are used within the generated SAX decode routines to collect data as it is parsed by an XML parser.
Function Documentation
EXTERNRT int rtxMemBufAppend | ( | OSRTMEMBUF * | pMemBuf, | |
const OSOCTET * | pdata, | |||
OSSIZE | nbytes | |||
) |
This function appends the data to the end of a memory buffer.
If the buffer was dynamic and full then the buffer will be reallocated. If it is static (the static buffer was assigned by a call to rtxMemBufInitBuffer) or it is empty (no memory previously allocated) then a new buffer will be allocated.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. pdata The pointer to the buffer to be appended. The data will be copied at the end of the memory buffer. nbytes The number of bytes to be copied from pData.
- Returns:
- Completion status of operation:
- 0 = success,
- negative return value is error.
EXTERNRT int rtxMemBufCut | ( | OSRTMEMBUF * | pMemBuf, | |
OSSIZE | fromOffset, | |||
OSSIZE | nbytes | |||
) |
This function cuts off the part of memory buffer.
The beginning of the cutting area is specified by offset "fromOffset" and the length is specified by "nbytes". All data in this part will be lost. The data from the offset "fromOffset + nbytes" will be moved to "fromOffset" offset.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. fromOffset The offset of the beginning part, being cut off. nbytes The number of bytes to be cut off from the memory buffer.
- Returns:
- Completion status of operation:
- 0 = success,
- negative return value is error.
EXTERNRT void rtxMemBufFree | ( | OSRTMEMBUF * | pMemBuf | ) |
This function frees the memory buffer.
If memory was allocated then it will be freed. Do not use the memory buffer structure after this function is called.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure.
EXTERNRT OSOCTET* rtxMemBufGetData | ( | const OSRTMEMBUF * | pMemBuf, | |
int * | length | |||
) |
This function returns the pointer to the used part of a memory buffer.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. length The pointer to the length of the used part of the memory buffer.
- Returns:
- The pointer to the used part of the memory buffer.
EXTERNRT OSOCTET* rtxMemBufGetDataExt | ( | const OSRTMEMBUF * | pMemBuf, | |
OSSIZE * | length | |||
) |
This function returns the pointer to the used part of a memory buffer.
The extended version returns length in a size-typed argument which is a 64-bit value on many systems.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. length The pointer to the length of the used part of the memory buffer.
- Returns:
- The pointer to the used part of the memory buffer.
EXTERNRT OSSIZE rtxMemBufGetDataLen | ( | const OSRTMEMBUF * | pMemBuf | ) |
This function returns the length of the used part of a memory buffer.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure.
- Returns:
- The length of the used part of the buffer.
EXTERNRT void rtxMemBufInit | ( | OSCTXT * | pCtxt, | |
OSRTMEMBUF * | pMemBuf, | |||
OSSIZE | segsize | |||
) |
This function initializes a memory buffer structure.
It does not allocate memory; it sets the fields of the structure to the proper states. This function must be called before any operations with the memory buffer.
- Parameters:
-
pCtxt A provides a storage area for the function to store all working variables that must be maintained between function calls. pMemBuf A pointer to the initialized memory buffer structure. segsize The number of bytes in which the memory buffer will be expanded incase it is full.
EXTERNRT void rtxMemBufInitBuffer | ( | OSCTXT * | pCtxt, | |
OSRTMEMBUF * | pMemBuf, | |||
OSOCTET * | buf, | |||
OSSIZE | bufsize, | |||
OSSIZE | segsize | |||
) |
This function assigns a static buffer to the memory buffer structure.
It does not allocate memory; it sets the pointer to the passed buffer. If additional memory is required (for example, additional data is appended to the buffer using rtxMemBufAppend), a dynamic buffer will be allocated and all data copied to the new buffer.
- Parameters:
-
pCtxt A pointer to a context structure. This provides a storage area for the function t store all working variables that must be maintained between function calls. pMemBuf A pointer to a memory buffer structure. buf A pointer to the buffer to be assigned. bufsize The size of the buffer. segsize The number of bytes on which the memory buffer will be expanded in case it is full.
EXTERNRT int rtxMemBufPreAllocate | ( | OSRTMEMBUF * | pMemBuf, | |
OSSIZE | nbytes | |||
) |
This function allocates a buffer with a predetermined amount of space.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. nbytes The number of bytes to be copied from pData.
- Returns:
- Completion status of operation:
- 0 = success,
- negative return value is error.
EXTERNRT void rtxMemBufReset | ( | OSRTMEMBUF * | pMemBuf | ) |
This function resets the memory buffer structure.
It does not free memory, just sets the pointer to the beginning and the used length to zero.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure.
EXTERNRT int rtxMemBufSet | ( | OSRTMEMBUF * | pMemBuf, | |
OSOCTET | value, | |||
OSSIZE | nbytes | |||
) |
This function sets part of a memory buffer to a specified octet value.
The filling is started from the end of the memory buffer. If the buffer is dynamic and full, then the buffer will be reallocated. If it is static (a static buffer was assigned by a call to rtxMemBufInitBuffer) or it is empty (no memory previously was allocated) then a new buffer will be allocated.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. value The pointer to the buffer to be appended. The data will be copied at the end of the memory buffer. nbytes The number of bytes to be copied from pData.
- Returns:
- Completion status of operation:
- 0 = success,
- negative return value is error.
EXTERNRT OSBOOL rtxMemBufSetExpandable | ( | OSRTMEMBUF * | pMemBuf, | |
OSBOOL | isExpandable | |||
) |
This function sets "isExpandable" flag for the memory buffer object.
By default, this flag is set to TRUE, thus, memory buffer could be expanded, even if it was initialized by static buffer (see rtMemBufInitBuffer
). If flag is cleared and buffer is full the rtMemBufAppend/rtMemBufPreAllocate functions will return error status.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. isExpandable TRUE, if buffer should be expandable.
- Returns:
- Previous state of "isExpandable" flag.
EXTERNRT OSBOOL rtxMemBufSetUseSysMem | ( | OSRTMEMBUF * | pMemBuf, | |
OSBOOL | value | |||
) |
This function sets a flag to indicate that system memory management should be used instead of the custom memory manager.
This should be used if the allocated buffer must be preserved after calls to rtxMemFree or rtxMemReset.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure. value Boolean indicating system memory management to be used.
- Returns:
- Previous state of "useSysMem" flag.
EXTERNRT OSSIZE rtxMemBufTrimW | ( | OSRTMEMBUF * | pMemBuf | ) |
This function trims white space of the memory buffer.
- Parameters:
-
pMemBuf A pointer to a memory buffer structure.
- Returns:
- Length of trimmed buffer.