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 __RTXERROR_H__
00029 #define __RTXERROR_H__
00030
00031 #include "rtxsrc/rtxContext.h"
00032 #include "rtxsrc/rtxErrCodes.h"
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00038
00039
00057 #ifndef _COMPACT
00058
00059 #ifndef __MODULE__
00060 #define LOG_RTERR(pctxt,stat) \
00061 rtxErrSetData(pctxt,stat,__FILE__,__LINE__)
00062
00063 #define LOG_RTERRNEW(pctxt,stat) \
00064 rtxErrSetNewData(pctxt,stat,__FILE__,__LINE__)
00065
00066 #else
00067 #define LOG_RTERR(pctxt,stat) \
00068 rtxErrSetData(pctxt,stat,__MODULE__,__LINE__)
00069
00070 #define LOG_RTERRNEW(pctxt,stat) \
00071 rtxErrSetNewData(pctxt,stat,__MODULE__,__LINE__)
00072 #endif
00073
00074
00083 #define OSRTASSERT(condition) \
00084 if (!(condition)) { rtxErrAssertionFailed(#condition,__LINE__,__FILE__); }
00085
00092 #define OSRTCHECKPARAM(condition) if (condition) { }
00093 #else
00094 #define LOG_RTERR(pctxt,stat) \
00095 rtxErrSetData(pctxt,stat,0,0)
00096
00097 #define LOG_RTERRNEW(pctxt,stat) \
00098 rtxErrSetNewData(pctxt,stat,0,0)
00099
00100 #define OSRTASSERT(condition)
00101 #define OSRTCHECKPARAM(condition)
00102 #endif
00103
00104 #define LOG_RTERR1(pctxt,stat,a) \
00105 (a,LOG_RTERR (pctxt, stat),stat)
00106
00107 #define LOG_RTERRNEW1(pctxt,stat,a) \
00108 (a,LOG_RTERRNEW (pctxt, stat),stat)
00109
00110 #define LOG_RTERR2(pctxt,stat,a,b) \
00111 (a,b,LOG_RTERR (pctxt, stat),stat)
00112
00113 #define LOG_RTERRNEW2(pctxt,stat,a,b) \
00114 (a,b,LOG_RTERRNEW (pctxt, stat),stat)
00115
00126 #define LOG_RTERR_AND_FREE_MEM(ctxt_p,stat,mem_p) \
00127 rtxMemFreePtr ((ctxt_p),(mem_p)), LOG_RTERR(ctxt_p, stat)
00128
00129 typedef int (*OSErrCbFunc) (const char* ptext, void* cbArg_p);
00130
00140 EXTERNRT OSBOOL rtxErrAddCtxtBufParm (OSCTXT* pctxt);
00141
00151 EXTERNRT OSBOOL rtxErrAddDoubleParm (OSCTXT* pctxt, double errParm);
00152
00165 EXTERNRT OSBOOL rtxErrAddErrorTableEntry
00166 #if !defined(_ARMTCC) && !defined(__SYMBIAN32__)
00167 (const char* const* ppStatusText, OSINT32 minErrCode, OSINT32 maxErrCode);
00168 #else
00169 (OSVOIDARG);
00170 #endif
00171
00182 EXTERNRT OSBOOL rtxErrAddElemNameParm (OSCTXT* pctxt);
00183
00196 EXTERNRT OSBOOL rtxErrAddIntParm (OSCTXT* pctxt, int errParm);
00197
00198 #if !defined(_NO_INT64_SUPPORT)
00199
00212 EXTERNRT OSBOOL rtxErrAddInt64Parm (OSCTXT* pctxt, OSINT64 errParm);
00213 #endif
00214
00227 EXTERNRT OSBOOL rtxErrAddSizeParm (OSCTXT* pctxt, OSSIZE errParm);
00228
00238 EXTERNRT OSBOOL rtxErrAddStrParm (OSCTXT* pctxt, const char* pErrParm);
00239
00250 EXTERNRT OSBOOL rtxErrAddStrnParm
00251 (OSCTXT* pctxt, const char* pErrParm, size_t nchars);
00252
00262 EXTERNRT OSBOOL rtxErrAddUIntParm (OSCTXT* pctxt, unsigned int errParm);
00263
00264 #if !defined(_NO_INT64_SUPPORT)
00265
00274 EXTERNRT OSBOOL rtxErrAddUInt64Parm (OSCTXT* pctxt, OSUINT64 errParm);
00275 #endif
00276
00287 EXTERNRT void rtxErrAssertionFailed
00288 (const char* conditionText, int lineNo, const char* fileName);
00289
00299 EXTERNRT const char* rtxErrFmtMsg
00300 (OSRTErrInfo* pErrInfo, char* bufp, size_t bufsiz);
00301
00309 EXTERNRT void rtxErrFreeParms (OSCTXT* pctxt);
00310
00332 EXTERNRT char* rtxErrGetText (OSCTXT* pctxt, char* pBuf, size_t* pBufSize);
00333
00343 EXTERNRT char* rtxErrGetTextBuf (OSCTXT* pctxt, char* pbuf, size_t bufsiz);
00344
00357 EXTERNRT char* rtxErrGetMsgText (OSCTXT* pctxt);
00358
00370 EXTERNRT char* rtxErrGetMsgTextBuf (OSCTXT* pctxt, char* pbuf, size_t bufsiz);
00371
00381 EXTERNRT OSRTErrInfo* rtxErrNewNode (OSCTXT* pctxt);
00382
00389 EXTERNRT void rtxErrInit (OSVOIDARG);
00390
00398 EXTERNRT int rtxErrReset (OSCTXT* pctxt);
00399
00421 EXTERNRT void rtxErrLogUsingCB (OSCTXT* pctxt, OSErrCbFunc cb, void* cbArg_p);
00422
00430 EXTERNRT void rtxErrPrint (OSCTXT* pctxt);
00431
00439 EXTERNRT void rtxErrPrintElement (OSRTErrInfo* pErrInfo);
00440
00452 EXTERNRT int rtxErrSetData (OSCTXT* pctxt, int status,
00453 const char* module, int lineno);
00454
00466 EXTERNRT int rtxErrSetNewData (OSCTXT* pctxt, int status,
00467 const char* module, int lineno);
00474 EXTERNRT int rtxErrGetFirstError (const OSCTXT* pctxt);
00475
00482 EXTERNRT int rtxErrGetLastError (const OSCTXT* pctxt);
00483
00490 EXTERNRT OSSIZE rtxErrGetErrorCnt (const OSCTXT* pctxt);
00491
00502 EXTERNRT int rtxErrGetStatus (const OSCTXT* pctxt);
00503
00514 EXTERNRT int rtxErrResetLastErrors (OSCTXT* pctxt, int errorsToReset);
00515
00529 EXTERNRT int rtxErrCopy (OSCTXT* pDestCtxt, const OSCTXT* pSrcCtxt);
00530
00544 EXTERNRT int rtxErrAppend (OSCTXT* pDestCtxt, const OSCTXT* pSrcCtxt);
00545
00553 EXTERNRT int rtxErrInvUIntOpt (OSCTXT* pctxt, OSUINT32 ident);
00554
00559 #ifdef __cplusplus
00560 }
00561 #endif
00562
00563 #endif