rtxContext.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
00028 #ifndef _RTXCONTEXT_H_
00029 #define _RTXCONTEXT_H_
00030
00031 #include "rtxsrc/rtxDList.h"
00032
00033 #define OSRTENCBUFSIZ 16*1024
00034
00039
00040
00041 #define OSRTERRSTKSIZ 8
00042 #define OSRTMAXERRPRM 5
00043
00051 typedef struct {
00052 const OSUTF8CHAR* module;
00053 OSINT32 lineno;
00054 } OSRTErrLocn;
00055
00066 typedef struct {
00067 OSRTErrLocn stack[OSRTERRSTKSIZ];
00068 OSINT16 status;
00069 OSUINT8 stkx;
00070 OSUINT8 parmcnt;
00071 OSUTF8CHAR* parms[OSRTMAXERRPRM];
00072 OSUTF8CHAR* elemName;
00073 } OSRTErrInfo;
00074
00075 typedef struct {
00076 OSRTDList list;
00077 OSRTErrInfo reserved;
00078 OSRTDListNode reservedNode;
00079 } OSRTErrInfoList;
00080
00089 typedef struct {
00090 OSOCTET* data;
00091 size_t byteIndex;
00092 size_t size;
00093 OSINT16 bitOffset;
00094 OSBOOL dynamic;
00095 OSBOOL aligned;
00096 } OSRTBuffer;
00097
00098 typedef OSUINT32 OSRTFLAGS;
00099
00106 typedef struct {
00107 size_t byteIndex;
00108 OSINT16 bitOffset;
00109 OSRTFLAGS flags;
00110 } OSRTBufSave;
00111
00112
00113
00114
00115 #define OSDIAG 0x80000000
00116 #define OSTRACE 0x40000000
00117 #define OSDISSTRM 0x20000000
00118 #define OSSAVEBUF 0x10000000
00119 #define OSNOSTRMBACKOFF 0x8000000
00120
00128 typedef struct OSCTXT {
00129 void* pMemHeap;
00130 OSRTBuffer buffer;
00131 OSRTBufSave savedInfo;
00132 OSRTErrInfoList errInfo;
00133 OSUINT32 initCode;
00134 OSRTFLAGS flags;
00135 OSOCTET level;
00136 OSOCTET state;
00137 OSOCTET diagLevel;
00138 OSOCTET spare[1];
00139 struct OSRTSTREAM* pStream;
00140 struct OSRTPrintStream *pPrintStrm;
00141 OSRTDList elemNameStack;
00142 OSRTDList regExpCache;
00143 const OSOCTET* key;
00144 size_t keylen;
00145 OSVoidPtr pXMLInfo;
00146 OSVoidPtr pASN1Info;
00147 OSVoidPtr pEXIInfo;
00148 OSVoidPtr pUserData;
00149 } OSCTXT;
00150
00151 #define OSRT_GET_FIRST_ERROR_INFO(pctxt) \
00152 (((pctxt)->errInfo.list.head == 0) ? (OSRTErrInfo*)0 : \
00153 (OSRTErrInfo*)((pctxt)->errInfo.list.head->data))
00154
00155 #define OSRT_GET_LAST_ERROR_INFO(pctxt) \
00156 (((pctxt)->errInfo.list.tail == 0) ? (OSRTErrInfo*)0 : \
00157 (OSRTErrInfo*)((pctxt)->errInfo.list.tail->data))
00158
00159
00160
00161
00162
00163
00164
00165 typedef int (*OSFreeCtxtAppInfoPtr)(OSCTXT* pctxt);
00166
00167
00168
00169
00170
00171
00172
00173 typedef int (*OSResetCtxtAppInfoPtr)(OSCTXT* pctxt);
00174
00178 #define OSRTISSTREAM(pctxt) \
00179 ((pctxt)->pStream != 0 && !((pctxt)->flags & OSDISSTRM))
00180
00181 #define OSRTBUFSAVE(pctxt) { \
00182 (pctxt)->savedInfo.byteIndex = (pctxt)->buffer.byteIndex; \
00183 (pctxt)->savedInfo.flags = (pctxt)->flags; }
00184
00185 #define OSRTBUFRESTORE(pctxt) { \
00186 (pctxt)->buffer.byteIndex = (pctxt)->savedInfo.byteIndex; \
00187 (pctxt)->flags = (pctxt)->savedInfo.flags; }
00188
00189 #ifdef __cplusplus
00190 extern "C" {
00191 #endif
00192
00216 EXTERNRT int rtxInitContext (OSCTXT* pctxt);
00217
00236 EXTERNRT int rtxInitContextBuffer (OSCTXT* pctxt,
00237 OSOCTET* bufaddr,
00238 size_t bufsiz);
00239
00263 EXTERNRT int rtxCtxtSetBufPtr
00264 (OSCTXT* pctxt, OSOCTET* bufaddr, size_t bufsiz);
00265
00277 #define rtxCtxtGetMsgPtr(pctxt) (pctxt)->buffer.data
00278
00287 #define rtxCtxtGetMsgLen(pctxt) (pctxt)->buffer.byteIndex
00288
00298 EXTERNRT int rtxCheckContext (OSCTXT* pctxt);
00299
00307 EXTERNRT void rtxFreeContext (OSCTXT* pctxt);
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 EXTERNRT void rtxCopyContext (OSCTXT* pdest, OSCTXT* psrc);
00319
00326 EXTERNRT void rtxCtxtSetFlag (OSCTXT* pctxt, OSUINT32 mask);
00327
00335 EXTERNRT void rtxCtxtClearFlag (OSCTXT* pctxt, OSUINT32 mask);
00336
00343 #define rtxCtxtTestFlag(pctxt,mask) ((pctxt->flags & mask) != 0)
00344
00345 EXTERNRT int rtxPreInitContext (OSCTXT* pctxt);
00346 #if 0
00347 EXTERNRT void rtxResetContext (OSCTXT* pctxt);
00348 #endif
00349 EXTERNRT void rtxMemFreeOpenSeqExt
00350 (OSCTXT* pctxt, struct OSRTDList *pElemList);
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361 EXTERNRT void rtxMemHeapSetFlags (OSCTXT* pctxt, OSUINT32 flags);
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371 EXTERNRT void rtxMemHeapClearFlags (OSCTXT* pctxt, OSUINT32 flags);
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381 EXTERNRT void rtxMemHeapSetDefBlkSize (OSCTXT* pctxt, OSUINT32 blkSize);
00382
00383
00384
00385
00386
00387
00388
00389 EXTERNRT OSUINT32 rtxMemHeapGetDefBlkSize (OSCTXT* pctxt);
00390
00391
00392 #ifdef __cplusplus
00393 }
00394 #endif
00395
00398 #endif