Home | History | Annotate | Download | only in expat
      1 /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
      2    See the file COPYING for copying permission.
      3 */
      4 
      5 #ifndef XmlRole_INCLUDED
      6 #define XmlRole_INCLUDED 1
      7 
      8 #ifdef __VMS
      9 /*      0        1         2         3      0        1         2         3
     10         1234567890123456789012345678901     1234567890123456789012345678901 */
     11 #define XmlPrologStateInitExternalEntity    XmlPrologStateInitExternalEnt
     12 #endif
     13 
     14 #include "xmltok.h"
     15 
     16 #ifdef __cplusplus
     17 extern "C" {
     18 #endif
     19 
     20 enum {
     21   XML_ROLE_ERROR = -1,
     22   XML_ROLE_NONE = 0,
     23   XML_ROLE_XML_DECL,
     24   XML_ROLE_INSTANCE_START,
     25   XML_ROLE_DOCTYPE_NONE,
     26   XML_ROLE_DOCTYPE_NAME,
     27   XML_ROLE_DOCTYPE_SYSTEM_ID,
     28   XML_ROLE_DOCTYPE_PUBLIC_ID,
     29   XML_ROLE_DOCTYPE_INTERNAL_SUBSET,
     30   XML_ROLE_DOCTYPE_CLOSE,
     31   XML_ROLE_GENERAL_ENTITY_NAME,
     32   XML_ROLE_PARAM_ENTITY_NAME,
     33   XML_ROLE_ENTITY_NONE,
     34   XML_ROLE_ENTITY_VALUE,
     35   XML_ROLE_ENTITY_SYSTEM_ID,
     36   XML_ROLE_ENTITY_PUBLIC_ID,
     37   XML_ROLE_ENTITY_COMPLETE,
     38   XML_ROLE_ENTITY_NOTATION_NAME,
     39   XML_ROLE_NOTATION_NONE,
     40   XML_ROLE_NOTATION_NAME,
     41   XML_ROLE_NOTATION_SYSTEM_ID,
     42   XML_ROLE_NOTATION_NO_SYSTEM_ID,
     43   XML_ROLE_NOTATION_PUBLIC_ID,
     44   XML_ROLE_ATTRIBUTE_NAME,
     45   XML_ROLE_ATTRIBUTE_TYPE_CDATA,
     46   XML_ROLE_ATTRIBUTE_TYPE_ID,
     47   XML_ROLE_ATTRIBUTE_TYPE_IDREF,
     48   XML_ROLE_ATTRIBUTE_TYPE_IDREFS,
     49   XML_ROLE_ATTRIBUTE_TYPE_ENTITY,
     50   XML_ROLE_ATTRIBUTE_TYPE_ENTITIES,
     51   XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN,
     52   XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
     53   XML_ROLE_ATTRIBUTE_ENUM_VALUE,
     54   XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
     55   XML_ROLE_ATTLIST_NONE,
     56   XML_ROLE_ATTLIST_ELEMENT_NAME,
     57   XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
     58   XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
     59   XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
     60   XML_ROLE_FIXED_ATTRIBUTE_VALUE,
     61   XML_ROLE_ELEMENT_NONE,
     62   XML_ROLE_ELEMENT_NAME,
     63   XML_ROLE_CONTENT_ANY,
     64   XML_ROLE_CONTENT_EMPTY,
     65   XML_ROLE_CONTENT_PCDATA,
     66   XML_ROLE_GROUP_OPEN,
     67   XML_ROLE_GROUP_CLOSE,
     68   XML_ROLE_GROUP_CLOSE_REP,
     69   XML_ROLE_GROUP_CLOSE_OPT,
     70   XML_ROLE_GROUP_CLOSE_PLUS,
     71   XML_ROLE_GROUP_CHOICE,
     72   XML_ROLE_GROUP_SEQUENCE,
     73   XML_ROLE_CONTENT_ELEMENT,
     74   XML_ROLE_CONTENT_ELEMENT_REP,
     75   XML_ROLE_CONTENT_ELEMENT_OPT,
     76   XML_ROLE_CONTENT_ELEMENT_PLUS,
     77   XML_ROLE_PI,
     78   XML_ROLE_COMMENT,
     79 #ifdef XML_DTD
     80   XML_ROLE_TEXT_DECL,
     81   XML_ROLE_IGNORE_SECT,
     82   XML_ROLE_INNER_PARAM_ENTITY_REF,
     83 #endif /* XML_DTD */
     84   XML_ROLE_PARAM_ENTITY_REF
     85 };
     86 
     87 typedef struct prolog_state {
     88   int (PTRCALL *handler) (struct prolog_state *state,
     89                           int tok,
     90                           const char *ptr,
     91                           const char *end,
     92                           const ENCODING *enc);
     93   unsigned level;
     94   int role_none;
     95 #ifdef XML_DTD
     96   unsigned includeLevel;
     97   int documentEntity;
     98   int inEntityValue;
     99 #endif /* XML_DTD */
    100 } PROLOG_STATE;
    101 
    102 void XmlPrologStateInit(PROLOG_STATE *);
    103 #ifdef XML_DTD
    104 void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
    105 #endif /* XML_DTD */
    106 
    107 #define XmlTokenRole(state, tok, ptr, end, enc) \
    108  (((state)->handler)(state, tok, ptr, end, enc))
    109 
    110 #ifdef __cplusplus
    111 }
    112 #endif
    113 
    114 #endif /* not XmlRole_INCLUDED */
    115