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