00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef XmlRole_INCLUDED
00023 #define XmlRole_INCLUDED 1
00024
00025 #include "xmltok.h"
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 enum {
00032 XML_ROLE_ERROR = -1,
00033 XML_ROLE_NONE = 0,
00034 XML_ROLE_XML_DECL,
00035 XML_ROLE_INSTANCE_START,
00036 XML_ROLE_DOCTYPE_NAME,
00037 XML_ROLE_DOCTYPE_SYSTEM_ID,
00038 XML_ROLE_DOCTYPE_PUBLIC_ID,
00039 XML_ROLE_DOCTYPE_CLOSE,
00040 XML_ROLE_GENERAL_ENTITY_NAME,
00041 XML_ROLE_PARAM_ENTITY_NAME,
00042 XML_ROLE_ENTITY_VALUE,
00043 XML_ROLE_ENTITY_SYSTEM_ID,
00044 XML_ROLE_ENTITY_PUBLIC_ID,
00045 XML_ROLE_ENTITY_NOTATION_NAME,
00046 XML_ROLE_NOTATION_NAME,
00047 XML_ROLE_NOTATION_SYSTEM_ID,
00048 XML_ROLE_NOTATION_NO_SYSTEM_ID,
00049 XML_ROLE_NOTATION_PUBLIC_ID,
00050 XML_ROLE_ATTRIBUTE_NAME,
00051 XML_ROLE_ATTRIBUTE_TYPE_CDATA,
00052 XML_ROLE_ATTRIBUTE_TYPE_ID,
00053 XML_ROLE_ATTRIBUTE_TYPE_IDREF,
00054 XML_ROLE_ATTRIBUTE_TYPE_IDREFS,
00055 XML_ROLE_ATTRIBUTE_TYPE_ENTITY,
00056 XML_ROLE_ATTRIBUTE_TYPE_ENTITIES,
00057 XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN,
00058 XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
00059 XML_ROLE_ATTRIBUTE_ENUM_VALUE,
00060 XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
00061 XML_ROLE_ATTLIST_ELEMENT_NAME,
00062 XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
00063 XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
00064 XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
00065 XML_ROLE_FIXED_ATTRIBUTE_VALUE,
00066 XML_ROLE_ELEMENT_NAME,
00067 XML_ROLE_CONTENT_ANY,
00068 XML_ROLE_CONTENT_EMPTY,
00069 XML_ROLE_CONTENT_PCDATA,
00070 XML_ROLE_GROUP_OPEN,
00071 XML_ROLE_GROUP_CLOSE,
00072 XML_ROLE_GROUP_CLOSE_REP,
00073 XML_ROLE_GROUP_CLOSE_OPT,
00074 XML_ROLE_GROUP_CLOSE_PLUS,
00075 XML_ROLE_GROUP_CHOICE,
00076 XML_ROLE_GROUP_SEQUENCE,
00077 XML_ROLE_CONTENT_ELEMENT,
00078 XML_ROLE_CONTENT_ELEMENT_REP,
00079 XML_ROLE_CONTENT_ELEMENT_OPT,
00080 XML_ROLE_CONTENT_ELEMENT_PLUS,
00081 XML_ROLE_PARAM_ENTITY_REF
00082 };
00083
00084 typedef struct prolog_state {
00085 int (*handler)(struct prolog_state *state,
00086 int tok,
00087 const char *ptr,
00088 const char *end,
00089 const ENCODING *enc);
00090 unsigned level;
00091 } PROLOG_STATE;
00092
00093 void XMLTOKAPI XmlPrologStateInit(PROLOG_STATE *);
00094
00095 #define XmlTokenRole(state, tok, ptr, end, enc) \
00096 (((state)->handler)(state, tok, ptr, end, enc))
00097
00098 #ifdef __cplusplus
00099 }
00100 #endif
00101
00102 #endif