00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00029 #ifndef _ASN1XERCTYPES_H_
00030 #define _ASN1XERCTYPES_H_
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036 #include <stdio.h>
00037 #include <stdlib.h>
00038 #include <setjmp.h>
00039
00040 #include "asn1xer.h"
00041 #include "csaxParser.h"
00042
00043 typedef void (*ASN1XERStartElementHandler)(void *userData,
00044 ASN1Const XMLCHAR *name,
00045 ASN1Const XMLCHAR **atts);
00046
00047 typedef void (*ASN1XEREndElementHandler)(void *userData,
00048 ASN1Const XMLCHAR *name);
00049
00050
00051 typedef void (*ASN1XERCharacterHandler)(void *userData,
00052 ASN1Const XMLCHAR *s,
00053 int len);
00054
00055 typedef struct ASN1SAXCDecodeHandlerBase {
00056 ASN1XERStartElementHandler mpStartElement;
00057 ASN1XEREndElementHandler mpEndElement;
00058 ASN1XERCharacterHandler mpCharacters;
00059
00060 ASN1CTXT* mpCtxt;
00061 ASN1ConstCharPtr mpTypeName;
00062 ASN1XERState mCurrState;
00063 int mLevel, mStartLevel;
00064 } ASN1SAXCDecodeHandlerBase;
00065
00066 #define ISCOMPLETE(e) (e->mSaxBase.mLevel == e->mSaxBase.mStartLevel)
00067
00068 #define ASN1SAXCTRY(pctxt,stat) \
00069 if ((stat = setjmp((pctxt)->jmpMark)) == 0)
00070
00071 #define ASN1SAXCTHROW(pctxt,stat) do { LOG_ASN1ERR ((pctxt), stat); \
00072 longjmp((pctxt)->jmpMark, stat); } while (0)
00073
00074 #define ASN1SAXCCATCH else
00075
00076 #define STRX(pctxt,pWideStr) xerTextToCStr ((pctxt), (pWideStr))
00077
00078 #if defined (XML_UNICODE) && defined(XML_UNICODE_WCHAR_T)
00079 #define LSTRX(pctxt,pLStr) xerTextToCStr ((pctxt), (pLStr))
00080 #else
00081 #define LSTRX(pctxt,pLStr) \
00082 strcpy ((char*)ASN1MALLOC (pctxt, strlen (pLStr) + 1), (pLStr))
00083 #endif
00084
00086 #define XERCDIAGSTRM2(pctxt,a) RTDIAGSTRM2(pctxt,a)
00087 #define XERCDIAGSTRM3(pctxt,a,b) RTDIAGSTRM3(pctxt,a,b)
00088 #define XERCDIAGSTRM4(pctxt,a,b,c) do { \
00089 void* p = (void*)b; \
00090 RTDIAGSTRM4(pctxt,a,p,c ); \
00091 ASN1MEMFREEPTR(pctxt,p); \
00092 } while (0)
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 #ifndef _COMPACT
00105 #define DECLARE_NON_COMPACT_VAR(type,var) type var
00106 #else
00107 #define DECLARE_NON_COMPACT_VAR(type,var)
00108 #endif
00109
00110 #ifdef __cplusplus
00111 }
00112 #endif
00113 #endif