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
00249 EXTERNRT int rtxCheckContext (OSCTXT* pctxt);
00250
00258 EXTERNRT void rtxFreeContext (OSCTXT* pctxt);
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269 EXTERNRT void rtxCopyContext (OSCTXT* pdest, OSCTXT* psrc);
00270
00277 EXTERNRT void rtxCtxtSetFlag (OSCTXT* pctxt, OSUINT32 mask);
00278
00286 EXTERNRT void rtxCtxtClearFlag (OSCTXT* pctxt, OSUINT32 mask);
00287
00294 #define rtxCtxtTestFlag(pctxt,mask) ((pctxt->flags & mask) != 0)
00295
00296 EXTERNRT int rtxPreInitContext (OSCTXT* pctxt);
00297 #if 0
00298 EXTERNRT void rtxResetContext (OSCTXT* pctxt);
00299 #endif
00300 EXTERNRT void rtxMemFreeOpenSeqExt
00301 (OSCTXT* pctxt, struct OSRTDList *pElemList);
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312 EXTERNRT void rtxMemHeapSetFlags (OSCTXT* pctxt, OSUINT32 flags);
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322 EXTERNRT void rtxMemHeapClearFlags (OSCTXT* pctxt, OSUINT32 flags);
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332 EXTERNRT void rtxMemHeapSetDefBlkSize (OSCTXT* pctxt, OSUINT32 blkSize);
00333
00334
00335
00336
00337
00338
00339 EXTERNRT OSUINT32 rtxMemHeapGetDefBlkSize (OSCTXT* pctxt);
00340
00341
00342 #ifdef __cplusplus
00343 }
00344 #endif
00345
00348 #endif