11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci See the file COPYING for copying permission. 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <stddef.h> 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef COMPILED_FROM_DSP 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "winconfig.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#elif defined(MACOS_CLASSIC) 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "macconfig.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#elif defined(__amigaos__) 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "amigaconfig.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#elif defined(__WATCOMC__) 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "watcomconfig.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef HAVE_EXPAT_CONFIG_H 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <expat_config.h> 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* ndef COMPILED_FROM_DSP */ 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "expat_external.h" 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "internal.h" 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "xmlrole.h" 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ascii.h" 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Doesn't check: 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci that ,| are not mixed in a model group 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content of literals 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_ANY[] = { 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_A, ASCII_N, ASCII_Y, '\0' }; 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_ATTLIST[] = { 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_CDATA[] = { 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_DOCTYPE[] = { 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_ELEMENT[] = { 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_EMPTY[] = { 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_ENTITIES[] = { 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '\0' }; 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_ENTITY[] = { 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_FIXED[] = { 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_ID[] = { 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_I, ASCII_D, '\0' }; 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_IDREF[] = { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_IDREFS[] = { 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_IGNORE[] = { 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_IMPLIED[] = { 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_INCLUDE[] = { 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_NDATA[] = { 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_NMTOKEN[] = { 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_NMTOKENS[] = { 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '\0' }; 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_NOTATION[] = 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '\0' }; 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_PCDATA[] = { 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_PUBLIC[] = { 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_REQUIRED[] = { 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci '\0' }; 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic const char KW_SYSTEM[] = { 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef MIN_BYTES_PER_CHAR 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define setTopLevel(state) \ 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ((state)->handler = ((state)->documentEntity \ 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ? internalSubset \ 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : externalSubset1)) 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else /* not XML_DTD */ 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define setTopLevel(state) ((state)->handler = internalSubset) 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* not XML_DTD */ 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic PROLOG_HANDLER 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prolog0, prolog1, prolog2, 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci internalSubset, 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity0, entity1, entity2, entity3, entity4, entity5, entity6, 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity7, entity8, entity9, entity10, 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci notation0, notation1, notation2, notation3, notation4, 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci attlist7, attlist8, attlist9, 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci element0, element1, element2, element3, element4, element5, element6, 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci element7, 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci externalSubset0, externalSubset1, 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci condSect0, condSect1, condSect2, 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* XML_DTD */ 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci declClose, 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci error; 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int FASTCALL common(PROLOG_STATE *state, int tok); 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciprolog0(PROLOG_STATE *state, 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog1; 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_XML_DECL: 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog1; 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_XML_DECL; 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PI: 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog1; 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_PI; 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COMMENT: 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog1; 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_COMMENT; 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_BOM: 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_OPEN: 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!XmlNameMatchesAscii(enc, 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + 2 * MIN_BYTES_PER_CHAR(enc), 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_DOCTYPE)) 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype0; 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_INSTANCE_START: 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = error; 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_INSTANCE_START; 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciprolog1(PROLOG_STATE *state, 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PI: 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_PI; 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COMMENT: 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_COMMENT; 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_BOM: 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_OPEN: 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!XmlNameMatchesAscii(enc, 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + 2 * MIN_BYTES_PER_CHAR(enc), 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_DOCTYPE)) 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype0; 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_INSTANCE_START: 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = error; 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_INSTANCE_START; 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciprolog2(PROLOG_STATE *state, 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PI: 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_PI; 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COMMENT: 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_COMMENT; 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_INSTANCE_START: 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = error; 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_INSTANCE_START; 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidoctype0(PROLOG_STATE *state, 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype1; 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NAME; 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidoctype1(PROLOG_STATE *state, 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_BRACKET: 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = internalSubset; 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog2; 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_CLOSE; 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype3; 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype2; 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidoctype2(PROLOG_STATE *state, 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype3; 2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_PUBLIC_ID; 2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidoctype3(PROLOG_STATE *state, 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype4; 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_SYSTEM_ID; 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidoctype4(PROLOG_STATE *state, 3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_BRACKET: 3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = internalSubset; 3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; 3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog2; 3131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_CLOSE; 3141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidoctype5(PROLOG_STATE *state, 3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 3261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 3271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 3281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 3291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog2; 3301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_CLOSE; 3311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 3331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 3361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciinternalSubset(PROLOG_STATE *state, 3371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 3391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 3401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 3411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 3421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 3431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 3451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_OPEN: 3461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + 2 * MIN_BYTES_PER_CHAR(enc), 3481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 3491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_ENTITY)) { 3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity0; 3511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + 2 * MIN_BYTES_PER_CHAR(enc), 3551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 3561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_ATTLIST)) { 3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist0; 3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 3611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + 2 * MIN_BYTES_PER_CHAR(enc), 3621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_ELEMENT)) { 3641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element0; 3651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 3661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 3681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + 2 * MIN_BYTES_PER_CHAR(enc), 3691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 3701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_NOTATION)) { 3711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = notation0; 3721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 3731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 3751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PI: 3761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_PI; 3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COMMENT: 3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_COMMENT; 3791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PARAM_ENTITY_REF: 3801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_PARAM_ENTITY_REF; 3811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_BRACKET: 3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = doctype5; 3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DOCTYPE_NONE; 3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NONE: 3851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 3861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 3881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 3911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 3931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciexternalSubset0(PROLOG_STATE *state, 3941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 3951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 3961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 3971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 3981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 3991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = externalSubset1; 4001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (tok == XML_TOK_XML_DECL) 4011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_TEXT_DECL; 4021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return externalSubset1(state, tok, ptr, end, enc); 4031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 4061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciexternalSubset1(PROLOG_STATE *state, 4071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 4091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 4101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 4111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 4121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 4131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COND_SECT_OPEN: 4141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = condSect0; 4151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 4161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COND_SECT_CLOSE: 4171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (state->includeLevel == 0) 4181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 4191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->includeLevel -= 1; 4201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 4211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 4221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_BRACKET: 4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NONE: 4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (state->includeLevel) 4271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 4281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 4291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default: 4301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return internalSubset(state, tok, ptr, end, enc); 4311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 4321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 4331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* XML_DTD */ 4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity0(PROLOG_STATE *state, 4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 4401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PERCENT: 4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity1; 4491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 4501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity2; 4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GENERAL_ENTITY_NAME; 4531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 4541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 4551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 4581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity1(PROLOG_STATE *state, 4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 4601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 4641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 4651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 4661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 4671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity7; 4691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_PARAM_ENTITY_NAME; 4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 4751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity2(PROLOG_STATE *state, 4761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 4781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 4791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 4801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 4811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 4821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 4851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity4; 4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity3; 4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 4961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ENTITY_NONE; 4971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_VALUE; 4981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 4991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 5001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 5031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity3(PROLOG_STATE *state, 5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 5051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 5061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 5071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 5081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 5091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 5101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 5111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity4; 5141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_PUBLIC_ID; 5151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 5171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity4(PROLOG_STATE *state, 5211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 5221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 5231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 5241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 5251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 5261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity5; 5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_SYSTEM_ID; 5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity5(PROLOG_STATE *state, 5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 5471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setTopLevel(state); 5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_COMPLETE; 5491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 5501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { 5511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity6; 5521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 5551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 5571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity6(PROLOG_STATE *state, 5611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 5621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 5631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 5651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 5661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 5671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ENTITY_NONE; 5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NOTATION_NAME; 5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity7(PROLOG_STATE *state, 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity9; 5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity8; 5941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 5951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 5971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 5981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 5991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ENTITY_NONE; 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_VALUE; 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity8(PROLOG_STATE *state, 6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity9; 6171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_PUBLIC_ID; 6181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 6231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity9(PROLOG_STATE *state, 6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 6271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 6281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 6291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 6301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 6311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 6321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 6331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = entity10; 6341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_SYSTEM_ID; 6351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 6371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 6401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccientity10(PROLOG_STATE *state, 6411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 6421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 6431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 6441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 6451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 6461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 6471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 6481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_NONE; 6491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 6501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setTopLevel(state); 6511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ENTITY_COMPLETE; 6521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 6541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 6571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinotation0(PROLOG_STATE *state, 6581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 6591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 6601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 6611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 6621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 6631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 6641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 6651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 6661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 6671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = notation1; 6681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NAME; 6691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 6711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 6741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinotation1(PROLOG_STATE *state, 6751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 6761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 6771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 6781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 6791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 6801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 6811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 6821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 6831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 6841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 6851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = notation3; 6861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 6871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 6891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = notation2; 6901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 6911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 6931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 6951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 6981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinotation2(PROLOG_STATE *state, 6991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 7001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 7011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 7021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 7031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 7041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 7051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 7061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 7071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 7081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = notation4; 7091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_PUBLIC_ID; 7101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 7111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 7121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 7131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 7151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinotation3(PROLOG_STATE *state, 7161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 7171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 7181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 7191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 7201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 7211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 7221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 7231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 7241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 7251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 7261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_NOTATION_NONE; 7271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_SYSTEM_ID; 7281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 7291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 7301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 7311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 7331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinotation4(PROLOG_STATE *state, 7341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 7351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 7361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 7371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 7381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 7391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 7401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 7411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NONE; 7421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 7431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 7441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_NOTATION_NONE; 7451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_SYSTEM_ID; 7461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 7471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setTopLevel(state); 7481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NOTATION_NO_SYSTEM_ID; 7491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 7501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 7511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 7521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 7541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist0(PROLOG_STATE *state, 7551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 7561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 7571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 7581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 7591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 7601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 7611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 7621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 7631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 7641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 7651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist1; 7661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_ELEMENT_NAME; 7671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 7681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 7691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 7701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 7721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist1(PROLOG_STATE *state, 7731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 7741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 7751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 7761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 7771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 7781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 7791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 7801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 7811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 7821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setTopLevel(state); 7831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 7841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 7851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 7861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist2; 7871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTRIBUTE_NAME; 7881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 7891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 7901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 7911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 7931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist2(PROLOG_STATE *state, 7941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 7951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 7961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 7971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 7981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 7991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 8001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 8011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 8031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 8041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static const char * const types[] = { 8051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_CDATA, 8061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_ID, 8071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_IDREF, 8081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_IDREFS, 8091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_ENTITY, 8101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_ENTITIES, 8111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_NMTOKEN, 8121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_NMTOKENS, 8131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }; 8141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int i; 8151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) 8161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { 8171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist8; 8181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; 8191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { 8221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist5; 8231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 8261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_PAREN: 8271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist3; 8281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 8311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 8321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 8341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist3(PROLOG_STATE *state, 8351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 8361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 8371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 8381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 8391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 8401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 8411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 8421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NMTOKEN: 8441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 8451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 8461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist4; 8471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTRIBUTE_ENUM_VALUE; 8481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 8501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 8511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 8531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist4(PROLOG_STATE *state, 8541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 8551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 8561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 8571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 8581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 8591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 8601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 8611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN: 8631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist8; 8641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OR: 8661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist3; 8671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 8701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 8711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 8731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist5(PROLOG_STATE *state, 8741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 8751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 8761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 8771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 8781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 8791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 8801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 8811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_PAREN: 8831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist6; 8841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 8861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 8871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 8881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 8901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist6(PROLOG_STATE *state, 8911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 8921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 8931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 8941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 8951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 8961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 8971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 8981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 8991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 9001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist7; 9011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; 9021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 9041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 9051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 9071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist7(PROLOG_STATE *state, 9081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 9091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 9101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 9111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 9121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 9131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 9141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 9151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 9161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN: 9171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist8; 9181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 9191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OR: 9201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist6; 9211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 9221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 9241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 9251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* default value */ 9271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 9281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist8(PROLOG_STATE *state, 9291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 9301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 9311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 9321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 9331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 9341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 9351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 9361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 9371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_POUND_NAME: 9381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 9391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + MIN_BYTES_PER_CHAR(enc), 9401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 9411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_IMPLIED)) { 9421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist1; 9431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; 9441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 9461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + MIN_BYTES_PER_CHAR(enc), 9471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 9481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_REQUIRED)) { 9491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist1; 9501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; 9511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 9531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + MIN_BYTES_PER_CHAR(enc), 9541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 9551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_FIXED)) { 9561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist9; 9571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 9581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 9601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 9611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist1; 9621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; 9631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 9651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 9661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 9681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciattlist9(PROLOG_STATE *state, 9691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 9701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 9711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 9721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 9731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 9741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 9751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 9761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ATTLIST_NONE; 9771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_LITERAL: 9781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = attlist1; 9791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_FIXED_ATTRIBUTE_VALUE; 9801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 9821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 9831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 9851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement0(PROLOG_STATE *state, 9861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 9871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 9881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 9891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 9901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 9911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 9921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 9931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 9941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 9951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 9961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element1; 9971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NAME; 9981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 10001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 10011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 10031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement1(PROLOG_STATE *state, 10041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 10051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 10061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 10071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 10081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 10091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 10101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 10111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 10121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 10131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { 10141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 10151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 10161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_EMPTY; 10171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 10181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { 10191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 10201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 10211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ANY; 10221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 10231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 10241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_PAREN: 10251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element2; 10261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level = 1; 10271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_OPEN; 10281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 10291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 10301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 10311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 10331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement2(PROLOG_STATE *state, 10341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 10351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 10361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 10371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 10381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 10391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 10401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 10411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 10421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_POUND_NAME: 10431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, 10441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ptr + MIN_BYTES_PER_CHAR(enc), 10451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci end, 10461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KW_PCDATA)) { 10471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element3; 10481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_PCDATA; 10491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 10501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 10511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_PAREN: 10521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level = 2; 10531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element6; 10541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_OPEN; 10551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 10561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 10571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 10581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT; 10591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME_QUESTION: 10601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 10611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT_OPT; 10621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME_ASTERISK: 10631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 10641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT_REP; 10651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME_PLUS: 10661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 10671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT_PLUS; 10681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 10691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 10701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 10711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 10731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement3(PROLOG_STATE *state, 10741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 10751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 10761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 10771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 10781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 10791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 10801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 10811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 10821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN: 10831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 10841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 10851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE; 10861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN_ASTERISK: 10871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 10881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 10891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE_REP; 10901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OR: 10911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element4; 10921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 10931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 10941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 10951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 10961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 10981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement4(PROLOG_STATE *state, 10991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 11001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 11011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 11021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 11031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 11041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 11051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 11061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 11071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 11081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 11091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element5; 11101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT; 11111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 11121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 11131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 11141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 11151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 11161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement5(PROLOG_STATE *state, 11171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 11181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 11191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 11201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 11211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 11221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 11231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 11241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 11251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN_ASTERISK: 11261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 11271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 11281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE_REP; 11291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OR: 11301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element4; 11311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 11321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 11331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 11341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 11351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 11361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 11371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement6(PROLOG_STATE *state, 11381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 11391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 11401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 11411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 11421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 11431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 11441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 11451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 11461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_PAREN: 11471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level += 1; 11481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_OPEN; 11491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 11501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PREFIXED_NAME: 11511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 11521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT; 11531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME_QUESTION: 11541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 11551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT_OPT; 11561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME_ASTERISK: 11571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 11581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT_REP; 11591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME_PLUS: 11601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element7; 11611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_CONTENT_ELEMENT_PLUS; 11621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 11631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 11641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 11651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 11661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 11671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccielement7(PROLOG_STATE *state, 11681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 11691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 11701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 11711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 11721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 11731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 11741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 11751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ELEMENT_NONE; 11761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN: 11771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level -= 1; 11781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (state->level == 0) { 11791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 11801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 11811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 11821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE; 11831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN_ASTERISK: 11841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level -= 1; 11851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (state->level == 0) { 11861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 11871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 11881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 11891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE_REP; 11901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN_QUESTION: 11911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level -= 1; 11921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (state->level == 0) { 11931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 11941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 11951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 11961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE_OPT; 11971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_CLOSE_PAREN_PLUS: 11981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->level -= 1; 11991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (state->level == 0) { 12001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = declClose; 12011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->role_none = XML_ROLE_ELEMENT_NONE; 12021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CLOSE_PLUS; 12041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_COMMA: 12051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element6; 12061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_SEQUENCE; 12071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OR: 12081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = element6; 12091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_GROUP_CHOICE; 12101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 12121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 12151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 12171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TuccicondSect0(PROLOG_STATE *state, 12181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 12191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 12201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 12211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 12221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 12231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 12241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 12251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 12261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_NAME: 12271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { 12281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = condSect1; 12291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 12301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { 12321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = condSect2; 12331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 12341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 12361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 12381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 12411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TuccicondSect1(PROLOG_STATE *state, 12421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 12431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 12441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 12451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 12461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 12471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 12481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 12491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 12501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_BRACKET: 12511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = externalSubset1; 12521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->includeLevel += 1; 12531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 12541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 12561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 12591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TuccicondSect2(PROLOG_STATE *state, 12601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 12611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 12621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 12631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 12641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 12651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 12661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 12671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 12681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_OPEN_BRACKET: 12691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = externalSubset1; 12701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_IGNORE_SECT; 12711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 12731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* XML_DTD */ 12761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 12781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TuccideclClose(PROLOG_STATE *state, 12791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 12801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 12811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 12821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 12831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 12841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (tok) { 12851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_PROLOG_S: 12861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return state->role_none; 12871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case XML_TOK_DECL_CLOSE: 12881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setTopLevel(state); 12891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return state->role_none; 12901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 12911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return common(state, tok); 12921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int PTRCALL 12951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccierror(PROLOG_STATE *state, 12961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int tok, 12971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *ptr, 12981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char *end, 12991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ENCODING *enc) 13001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 13011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_NONE; 13021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 13031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic int FASTCALL 13051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicommon(PROLOG_STATE *state, int tok) 13061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 13071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 13081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) 13091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_INNER_PARAM_ENTITY_REF; 13101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 13111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = error; 13121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_ROLE_ERROR; 13131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 13141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid 13161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXmlPrologStateInit(PROLOG_STATE *state) 13171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 13181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = prolog0; 13191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 13201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->documentEntity = 1; 13211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->includeLevel = 0; 13221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->inEntityValue = 0; 13231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* XML_DTD */ 13241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 13251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_DTD 13271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid 13291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXmlPrologStateInitExternalEntity(PROLOG_STATE *state) 13301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 13311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->handler = externalSubset0; 13321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->documentEntity = 0; 13331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state->includeLevel = 0; 13341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 13351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* XML_DTD */ 1337