rtxMemBuf.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00041
00042
00043 #ifndef _RTXMEMBUF_H_
00044 #define _RTXMEMBUF_H_
00045
00046 #include "rtxsrc/rtxContext.h"
00047
00048 typedef struct OSRTMEMBUF {
00049 OSCTXT* pctxt;
00050 OSUINT32 segsize;
00051 OSUINT32 startidx;
00052 OSUINT32 usedcnt;
00053 OSUINT32 bufsize;
00054 OSUINT32 bitOffset;
00055 OSUINT32 userState;
00056 OSOCTET* buffer;
00057 OSBOOL isDynamic;
00058 OSBOOL isExpandable;
00059 OSBOOL useSysMem;
00060 } OSRTMEMBUF;
00061
00062 #define OSMBDFLTSEGSIZE 1024
00063
00064 #define OSMEMBUFPTR(pmb) ((pmb)->buffer + (pmb)->startidx)
00065 #define OSMEMBUFENDPTR(pmb) ((pmb)->buffer + (pmb)->startidx + (pmb)->usedcnt)
00066 #define OSMEMBUFUSEDSIZE(pmb) ((size_t)(pmb)->usedcnt)
00067
00068 #define OSMBAPPENDSTR(pmb,str) \
00069 rtxMemBufAppend(pmb,(OSOCTET*)str,OSCRTLSTRLEN(str))
00070
00071 #define OSMBAPPENDUTF8(pmb,str) \
00072 rtxMemBufAppend(pmb,(OSOCTET*)str,rtxUTF8LenBytes(str))
00073
00074 #ifdef __cplusplus
00075 extern "C" {
00076 #endif
00077
00078
00079
00094 EXTERNRT int rtxMemBufAppend
00095 (OSRTMEMBUF* pMemBuf, const OSOCTET* pdata, size_t nbytes);
00096
00111 EXTERNRT int rtxMemBufCut
00112 (OSRTMEMBUF* pMemBuf, size_t fromOffset, size_t nbytes);
00113
00121 EXTERNRT void rtxMemBufFree (OSRTMEMBUF* pMemBuf);
00122
00131 EXTERNRT OSOCTET* rtxMemBufGetData (OSRTMEMBUF* pMemBuf, int* length);
00132
00139 EXTERNRT int rtxMemBufGetDataLen (OSRTMEMBUF* pMemBuf);
00140
00153 EXTERNRT void rtxMemBufInit
00154 (OSCTXT* pCtxt, OSRTMEMBUF* pMemBuf, size_t segsize);
00155
00173 EXTERNRT void rtxMemBufInitBuffer (OSCTXT* pCtxt, OSRTMEMBUF* pMemBuf,
00174 OSOCTET* buf, size_t bufsize,
00175 size_t segsize);
00176
00186 EXTERNRT int rtxMemBufPreAllocate (OSRTMEMBUF* pMemBuf, size_t nbytes);
00187
00194 EXTERNRT void rtxMemBufReset (OSRTMEMBUF* pMemBuf);
00195
00211 EXTERNRT int rtxMemBufSet (OSRTMEMBUF* pMemBuf, OSOCTET value, size_t nbytes);
00212
00224 EXTERNRT OSBOOL rtxMemBufSetExpandable
00225 (OSRTMEMBUF* pMemBuf, OSBOOL isExpandable);
00226
00237 EXTERNRT OSBOOL rtxMemBufSetUseSysMem (OSRTMEMBUF* pMemBuf, OSBOOL value);
00238
00247 EXTERNRT int rtxMemBufTrimW (OSRTMEMBUF* pMemBuf);
00248
00252 #ifdef __cplusplus
00253 }
00254 #endif
00255
00256 #endif