michael@0: /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd michael@0: See the file COPYING for copying permission. michael@0: */ michael@0: michael@0: #ifndef XmlRole_INCLUDED michael@0: #define XmlRole_INCLUDED 1 michael@0: michael@0: #ifdef __VMS michael@0: /* 0 1 2 3 0 1 2 3 michael@0: 1234567890123456789012345678901 1234567890123456789012345678901 */ michael@0: #define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt michael@0: #endif michael@0: michael@0: #include "xmltok.h" michael@0: michael@0: #ifdef __cplusplus michael@0: extern "C" { michael@0: #endif michael@0: michael@0: enum { michael@0: XML_ROLE_ERROR = -1, michael@0: XML_ROLE_NONE = 0, michael@0: XML_ROLE_XML_DECL, michael@0: XML_ROLE_INSTANCE_START, michael@0: XML_ROLE_DOCTYPE_NONE, michael@0: XML_ROLE_DOCTYPE_NAME, michael@0: XML_ROLE_DOCTYPE_SYSTEM_ID, michael@0: XML_ROLE_DOCTYPE_PUBLIC_ID, michael@0: XML_ROLE_DOCTYPE_INTERNAL_SUBSET, michael@0: XML_ROLE_DOCTYPE_CLOSE, michael@0: XML_ROLE_GENERAL_ENTITY_NAME, michael@0: XML_ROLE_PARAM_ENTITY_NAME, michael@0: XML_ROLE_ENTITY_NONE, michael@0: XML_ROLE_ENTITY_VALUE, michael@0: XML_ROLE_ENTITY_SYSTEM_ID, michael@0: XML_ROLE_ENTITY_PUBLIC_ID, michael@0: XML_ROLE_ENTITY_COMPLETE, michael@0: XML_ROLE_ENTITY_NOTATION_NAME, michael@0: XML_ROLE_NOTATION_NONE, michael@0: XML_ROLE_NOTATION_NAME, michael@0: XML_ROLE_NOTATION_SYSTEM_ID, michael@0: XML_ROLE_NOTATION_NO_SYSTEM_ID, michael@0: XML_ROLE_NOTATION_PUBLIC_ID, michael@0: XML_ROLE_ATTRIBUTE_NAME, michael@0: XML_ROLE_ATTRIBUTE_TYPE_CDATA, michael@0: XML_ROLE_ATTRIBUTE_TYPE_ID, michael@0: XML_ROLE_ATTRIBUTE_TYPE_IDREF, michael@0: XML_ROLE_ATTRIBUTE_TYPE_IDREFS, michael@0: XML_ROLE_ATTRIBUTE_TYPE_ENTITY, michael@0: XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, michael@0: XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, michael@0: XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, michael@0: XML_ROLE_ATTRIBUTE_ENUM_VALUE, michael@0: XML_ROLE_ATTRIBUTE_NOTATION_VALUE, michael@0: XML_ROLE_ATTLIST_NONE, michael@0: XML_ROLE_ATTLIST_ELEMENT_NAME, michael@0: XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, michael@0: XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, michael@0: XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, michael@0: XML_ROLE_FIXED_ATTRIBUTE_VALUE, michael@0: XML_ROLE_ELEMENT_NONE, michael@0: XML_ROLE_ELEMENT_NAME, michael@0: XML_ROLE_CONTENT_ANY, michael@0: XML_ROLE_CONTENT_EMPTY, michael@0: XML_ROLE_CONTENT_PCDATA, michael@0: XML_ROLE_GROUP_OPEN, michael@0: XML_ROLE_GROUP_CLOSE, michael@0: XML_ROLE_GROUP_CLOSE_REP, michael@0: XML_ROLE_GROUP_CLOSE_OPT, michael@0: XML_ROLE_GROUP_CLOSE_PLUS, michael@0: XML_ROLE_GROUP_CHOICE, michael@0: XML_ROLE_GROUP_SEQUENCE, michael@0: XML_ROLE_CONTENT_ELEMENT, michael@0: XML_ROLE_CONTENT_ELEMENT_REP, michael@0: XML_ROLE_CONTENT_ELEMENT_OPT, michael@0: XML_ROLE_CONTENT_ELEMENT_PLUS, michael@0: XML_ROLE_PI, michael@0: XML_ROLE_COMMENT, michael@0: #ifdef XML_DTD michael@0: XML_ROLE_TEXT_DECL, michael@0: XML_ROLE_IGNORE_SECT, michael@0: XML_ROLE_INNER_PARAM_ENTITY_REF, michael@0: #endif /* XML_DTD */ michael@0: XML_ROLE_PARAM_ENTITY_REF michael@0: }; michael@0: michael@0: typedef struct prolog_state { michael@0: int (PTRCALL *handler) (struct prolog_state *state, michael@0: int tok, michael@0: const char *ptr, michael@0: const char *end, michael@0: const ENCODING *enc); michael@0: unsigned level; michael@0: int role_none; michael@0: #ifdef XML_DTD michael@0: unsigned includeLevel; michael@0: int documentEntity; michael@0: int inEntityValue; michael@0: #endif /* XML_DTD */ michael@0: } PROLOG_STATE; michael@0: michael@0: void XmlPrologStateInit(PROLOG_STATE *); michael@0: #ifdef XML_DTD michael@0: void XmlPrologStateInitExternalEntity(PROLOG_STATE *); michael@0: #endif /* XML_DTD */ michael@0: michael@0: #define XmlTokenRole(state, tok, ptr, end, enc) \ michael@0: (((state)->handler)(state, tok, ptr, end, enc)) michael@0: michael@0: #ifdef __cplusplus michael@0: } michael@0: #endif michael@0: michael@0: #endif /* not XmlRole_INCLUDED */