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 spare[2];
00138 struct OSRTSTREAM* pStream;
00139 struct OSRTPrintStream *pPrintStrm;
00140 OSRTDList elemNameStack;
00141 OSRTDList regExpCache;
00142 const OSOCTET* key;
00143 size_t keylen;
00144 OSVoidPtr pXMLInfo;
00145 OSVoidPtr pASN1Info;
00146 OSVoidPtr pUserData;
00147 } OSCTXT;
00148
00149 #define OSRT_GET_FIRST_ERROR_INFO(pctxt) \
00150 (((pctxt)->errInfo.list.head == 0) ? (OSRTErrInfo*)0 : \
00151 (OSRTErrInfo*)((pctxt)->errInfo.list.head->data))
00152
00153 #define OSRT_GET_LAST_ERROR_INFO(pctxt) \
00154 (((pctxt)->errInfo.list.tail == 0) ? (OSRTErrInfo*)0 : \
00155 (OSRTErrInfo*)((pctxt)->errInfo.list.tail->data))
00156
00157
00158
00159
00160
00161
00162
00163 typedef int (*OSFreeCtxtAppInfoPtr)(OSCTXT* pctxt);
00164
00165
00166
00167
00168
00169
00170
00171 typedef int (*OSResetCtxtAppInfoPtr)(OSCTXT* pctxt);
00172
00176 #define OSRTISSTREAM(pctxt) \
00177 ((pctxt)->pStream != 0 && !((pctxt)->flags & OSDISSTRM))
00178
00179 #define OSRTBUFSAVE(pctxt) { \
00180 (pctxt)->savedInfo.byteIndex = (pctxt)->buffer.byteIndex; \
00181 (pctxt)->savedInfo.flags = (pctxt)->flags; }
00182
00183 #define OSRTBUFRESTORE(pctxt) { \
00184 (pctxt)->buffer.byteIndex = (pctxt)->savedInfo.byteIndex; \
00185 (pctxt)->flags = (pctxt)->savedInfo.flags; }
00186
00187 #ifdef __cplusplus
00188 extern "C" {
00189 #endif
00190
00214 EXTERNRTX int rtxInitContext (OSCTXT* pctxt);
00215
00234 EXTERNRTX int rtxInitContextBuffer (OSCTXT* pctxt,
00235 OSOCTET* bufaddr,
00236 size_t bufsiz);
00237
00247 EXTERNRTX int rtxCheckContext (OSCTXT* pctxt);
00248
00256 EXTERNRTX void rtxFreeContext (OSCTXT* pctxt);
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267 EXTERNRTX void rtxCopyContext (OSCTXT* pdest, OSCTXT* psrc);
00268
00275 EXTERNRTX void rtxCtxtSetFlag (OSCTXT* pctxt, OSUINT32 mask);
00276
00284 EXTERNRTX void rtxCtxtClearFlag (OSCTXT* pctxt, OSUINT32 mask);
00285
00292 #define rtxCtxtTestFlag(pctxt,mask) ((pctxt->flags & mask) != 0)
00293
00294 EXTERNRTX int rtxPreInitContext (OSCTXT* pctxt);
00295 EXTERNRTX void rtxResetContext (OSCTXT* pctxt);
00296
00297
00298
00299 EXTERNRTX void rtxMemFreeOpenSeqExt
00300 (OSCTXT* pctxt, struct OSRTDList *pElemList);
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311 EXTERNRTX void rtxMemHeapSetFlags (OSCTXT* pctxt, OSUINT32 flags);
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321 EXTERNRTX void rtxMemHeapClearFlags (OSCTXT* pctxt, OSUINT32 flags);
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331 EXTERNRTX void rtxMemHeapSetDefBlkSize (OSCTXT* pctxt, OSUINT32 blkSize);
00332
00333
00334
00335
00336
00337
00338 EXTERNRTX OSUINT32 rtxMemHeapGetDefBlkSize (OSCTXT* pctxt);
00339
00340
00341 #ifdef __cplusplus
00342 }
00343 #endif
00344
00345 #endif