1fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd 2fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis See the file COPYING for copying permission. 31dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis*/ 41dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 5a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#include <stddef.h> 6a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith 71dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef COMPILED_FROM_DSP 8fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include "winconfig.h" 9fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#elif defined(MACOS_CLASSIC) 10fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include "macconfig.h" 11a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#elif defined(__amigaos__) 12f08d663a2f9cbd8dd0ca868272f03ad115691df7Trent Mick#include "amigaconfig.h" 13a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#elif defined(__WATCOMC__) 14a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#include "watcomconfig.h" 151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#else 1608317aefef89ca18ce12e53c0cdb3c8e132a6201Fred Drake#ifdef HAVE_EXPAT_CONFIG_H 17fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include <expat_config.h> 1808317aefef89ca18ce12e53c0cdb3c8e132a6201Fred Drake#endif 191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* ndef COMPILED_FROM_DSP */ 201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 2131d485c0f5e817d37dbbfb86fdea66027866ce84Fred Drake#include "expat_external.h" 22fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include "internal.h" 231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#include "xmlrole.h" 241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#include "ascii.h" 251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis/* Doesn't check: 271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis that ,| are not mixed in a model group 291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis content of literals 301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis*/ 321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 33fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ANY[] = { 34fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_A, ASCII_N, ASCII_Y, '\0' }; 35fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ATTLIST[] = { 36fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; 37fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_CDATA[] = { 38fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 39fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_DOCTYPE[] = { 40fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; 41fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ELEMENT[] = { 42fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; 43fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_EMPTY[] = { 44fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; 45fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ENTITIES[] = { 46fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, 47fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 48fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ENTITY[] = { 49fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; 50fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_FIXED[] = { 51fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; 52fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ID[] = { 53fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_D, '\0' }; 54fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IDREF[] = { 55fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; 56fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IDREFS[] = { 57fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; 58a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#ifdef XML_DTD 59fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IGNORE[] = { 60fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; 61a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#endif 62fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IMPLIED[] = { 63fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; 64a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#ifdef XML_DTD 65fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_INCLUDE[] = { 66fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; 67a5df290e0668f9ba34c2f8d9b3fdaf650ec72024Gregory P. Smith#endif 68fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NDATA[] = { 69fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 70fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NMTOKEN[] = { 71fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; 72fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NMTOKENS[] = { 73fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, 74fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 75fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NOTATION[] = 76fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, 77fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 78fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_PCDATA[] = { 79fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 80fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_PUBLIC[] = { 81fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; 82fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_REQUIRED[] = { 83fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, 84fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 85fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_SYSTEM[] = { 86fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; 871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifndef MIN_BYTES_PER_CHAR 891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) 901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif 911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#define setTopLevel(state) \ 941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis ((state)->handler = ((state)->documentEntity \ 951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis ? internalSubset \ 961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis : externalSubset1)) 971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#else /* not XML_DTD */ 981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#define setTopLevel(state) ((state)->handler = internalSubset) 991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* not XML_DTD */ 1001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 101fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwistypedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, 102fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 103fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 104fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 105fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc); 1061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwisstatic PROLOG_HANDLER 1081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis prolog0, prolog1, prolog2, 1091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, 1101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis internalSubset, 1111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis entity0, entity1, entity2, entity3, entity4, entity5, entity6, 112fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis entity7, entity8, entity9, entity10, 1131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis notation0, notation1, notation2, notation3, notation4, 1141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, 1151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis attlist7, attlist8, attlist9, 1161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis element0, element1, element2, element3, element4, element5, element6, 1171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis element7, 1181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 1191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis externalSubset0, externalSubset1, 1201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis condSect0, condSect1, condSect2, 1211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 1221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis declClose, 1231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis error; 1241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 125fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int FASTCALL common(PROLOG_STATE *state, int tok); 1261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 127fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 128fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisprolog0(PROLOG_STATE *state, 129fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 130fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 131fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 132fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 1331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 1341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 1351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 1371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_XML_DECL: 1391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 1401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_XML_DECL; 1411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 1421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 143fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 1441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 1451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 146fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 1471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_BOM: 1481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_OPEN: 1501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (!XmlNameMatchesAscii(enc, 151fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 152fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 153fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_DOCTYPE)) 1541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 1551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype0; 156fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 1571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_INSTANCE_START: 1581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 1591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INSTANCE_START; 1601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 1611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 1621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 1631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 164fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 165fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisprolog1(PROLOG_STATE *state, 166fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 167fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 168fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 169fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 1701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 1711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 1721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 175fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 1761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 177fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 1781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_BOM: 1791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_OPEN: 1811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (!XmlNameMatchesAscii(enc, 182fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 183fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 184fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_DOCTYPE)) 1851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 1861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype0; 187fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 1881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_INSTANCE_START: 1891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 1901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INSTANCE_START; 1911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 1921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 1931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 1941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 195fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 196fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisprolog2(PROLOG_STATE *state, 197fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 198fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 199fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 200fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 2041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 2051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 206fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 2071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 208fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 2091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_INSTANCE_START: 2101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 2111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INSTANCE_START; 2121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 216fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 217fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype0(PROLOG_STATE *state, 218fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 219fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 220fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 221fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 225fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 2271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 2281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype1; 2291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_NAME; 2301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 234fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 235fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype1(PROLOG_STATE *state, 236fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 237fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 238fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 239fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 243fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 2451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = internalSubset; 2461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; 2471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 2481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog2; 2491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_CLOSE; 2501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 2511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 2521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype3; 253fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 2561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype2; 257fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 2601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 264fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 265fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype2(PROLOG_STATE *state, 266fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 267fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 268fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 269fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 273fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 2751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype3; 2761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_PUBLIC_ID; 2771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 281fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 282fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype3(PROLOG_STATE *state, 283fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 284fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 285fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 286fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 290fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 2921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype4; 2931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_SYSTEM_ID; 2941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 298fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 299fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype4(PROLOG_STATE *state, 300fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 301fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 302fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 303fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 3061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 307fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 3081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 3091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = internalSubset; 3101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; 3111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 3121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog2; 3131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_CLOSE; 3141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 3161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 318fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 319fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype5(PROLOG_STATE *state, 320fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 321fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 322fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 323fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 3261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 327fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 3281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 3291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog2; 3301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_CLOSE; 3311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 3331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 335fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 336fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisinternalSubset(PROLOG_STATE *state, 337fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 338fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 339fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 340fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 3431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 3441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 3451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_OPEN: 3461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 347fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 348fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 349fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_ENTITY)) { 3501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity0; 351fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 3521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 354fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 355fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 356fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_ATTLIST)) { 3571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist0; 358fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 3591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 361fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 362fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 363fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_ELEMENT)) { 3641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element0; 365fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 3661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 368fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 369fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 370fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_NOTATION)) { 3711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation0; 372fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 3731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 3751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 376fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 3771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 378fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 3791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PARAM_ENTITY_REF: 3801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_PARAM_ENTITY_REF; 3811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_BRACKET: 3821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype5; 383fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 38431d485c0f5e817d37dbbfb86fdea66027866ce84Fred Drake case XML_TOK_NONE: 38531d485c0f5e817d37dbbfb86fdea66027866ce84Fred Drake return XML_ROLE_NONE; 3861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 3881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 3901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 3911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 392fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 393fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisexternalSubset0(PROLOG_STATE *state, 394fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 395fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 396fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 397fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset1; 4001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (tok == XML_TOK_XML_DECL) 4011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_TEXT_DECL; 4021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return externalSubset1(state, tok, ptr, end, enc); 4031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 405fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 406fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisexternalSubset1(PROLOG_STATE *state, 407fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 408fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 409fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 410fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COND_SECT_OPEN: 4141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = condSect0; 4151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COND_SECT_CLOSE: 4171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (state->includeLevel == 0) 4181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel -= 1; 4201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 4221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_BRACKET: 4241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NONE: 4261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (state->includeLevel) 4271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis default: 4301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return internalSubset(state, tok, ptr, end, enc); 4311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 4351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 4361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 437fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 438fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity0(PROLOG_STATE *state, 439fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 440fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 441fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 442fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 446fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PERCENT: 4481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity1; 449fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 4511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity2; 4521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GENERAL_ENTITY_NAME; 4531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 457fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 458fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity1(PROLOG_STATE *state, 459fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 460fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 461fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 462fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 466fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 4681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity7; 4691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_PARAM_ENTITY_NAME; 4701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 474fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 475fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity2(PROLOG_STATE *state, 476fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 477fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 478fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 479fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 483fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 4851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 4861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity4; 487fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 4901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity3; 491fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 4951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 496fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ENTITY_NONE; 4971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_VALUE; 4981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 502fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 503fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity3(PROLOG_STATE *state, 504fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 505fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 506fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 507fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 511fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 5131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity4; 5141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_PUBLIC_ID; 5151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 519fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 520fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity4(PROLOG_STATE *state, 521fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 522fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 523fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 524fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 528fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 5301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity5; 5311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_SYSTEM_ID; 5321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 536fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 537fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity5(PROLOG_STATE *state, 538fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 539fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 540fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 541fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 545fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 5471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 5481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_COMPLETE; 5491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 5501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { 5511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity6; 552fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 5551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 559fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 560fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity6(PROLOG_STATE *state, 561fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 562fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 563fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 564fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 568fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 5701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 571fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ENTITY_NONE; 5721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_NOTATION_NAME; 5731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 577fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 578fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity7(PROLOG_STATE *state, 579fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 580fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 581fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 582fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 586fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 5881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 5891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity9; 590fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 5931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity8; 594fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 5971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 5981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 599fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ENTITY_NONE; 6001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_VALUE; 6011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 605fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 606fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity8(PROLOG_STATE *state, 607fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 608fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 609fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 610fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 614fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 6151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 6161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity9; 6171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_PUBLIC_ID; 6181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 622fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 623fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity9(PROLOG_STATE *state, 624fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 625fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 626fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 627fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 631fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 6321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 633fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->handler = entity10; 6341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_SYSTEM_ID; 6351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 639fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 640fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity10(PROLOG_STATE *state, 641fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 642fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 643fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 644fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 648fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 649fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis case XML_TOK_DECL_CLOSE: 650fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis setTopLevel(state); 651fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_COMPLETE; 652fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 653fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return common(state, tok); 654fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis} 655fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis 656fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 657fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation0(PROLOG_STATE *state, 658fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 659fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 660fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 661fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 662fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis{ 663fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis switch (tok) { 664fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis case XML_TOK_PROLOG_S: 665fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 6671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation1; 6681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_NAME; 6691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 673fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 674fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation1(PROLOG_STATE *state, 675fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 676fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 677fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 678fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 682fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 6841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 6851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation3; 686fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 6891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation2; 690fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 6931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 697fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 698fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation2(PROLOG_STATE *state, 699fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 700fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 701fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 702fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 706fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 7071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 7081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation4; 7091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_PUBLIC_ID; 7101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 714fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 715fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation3(PROLOG_STATE *state, 716fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 717fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 718fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 719fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 723fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 7241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 7251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 726fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_NOTATION_NONE; 7271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_SYSTEM_ID; 7281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 732fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 733fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation4(PROLOG_STATE *state, 734fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 735fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 736fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 737fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 741fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 7421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 7431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 744fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_NOTATION_NONE; 7451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_SYSTEM_ID; 7461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 7471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 7481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_NO_SYSTEM_ID; 7491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 753fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 754fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist0(PROLOG_STATE *state, 755fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 756fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 757fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 758fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 762fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 7641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 7651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 7661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTLIST_ELEMENT_NAME; 7671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 771fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 772fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist1(PROLOG_STATE *state, 773fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 774fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 775fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 776fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 780fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 7821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 783fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 7851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 7861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist2; 7871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTRIBUTE_NAME; 7881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 792fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 793fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist2(PROLOG_STATE *state, 794fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 795fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 796fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 797fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 801fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 8031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis { 804f08d663a2f9cbd8dd0ca868272f03ad115691df7Trent Mick static const char * const types[] = { 805fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_CDATA, 8061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_ID, 8071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_IDREF, 8081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_IDREFS, 8091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_ENTITY, 8101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_ENTITIES, 8111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_NMTOKEN, 8121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_NMTOKENS, 8131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis }; 8141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis int i; 8151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) 816fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { 817fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->handler = attlist8; 818fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; 819fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 8201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { 8221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist5; 823fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 8261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 8271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist3; 828fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 833fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 834fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist3(PROLOG_STATE *state, 835fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 836fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 837fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 838fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 842fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NMTOKEN: 8441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 8451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 8461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist4; 8471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTRIBUTE_ENUM_VALUE; 8481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 852fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 853fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist4(PROLOG_STATE *state, 854fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 855fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 856fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 857fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 861fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 8631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist8; 864fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 8661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist3; 867fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 872fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 873fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist5(PROLOG_STATE *state, 874fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 875fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 876fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 877fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 881fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 8831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist6; 884fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 889fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 890fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist6(PROLOG_STATE *state, 891fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 892fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 893fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 894fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 898fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 9001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist7; 9011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; 9021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 906fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 907fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist7(PROLOG_STATE *state, 908fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 909fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 910fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 911fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 915fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 9171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist8; 918fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 9201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist6; 921fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 9261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis/* default value */ 927fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 928fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist8(PROLOG_STATE *state, 929fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 930fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 931fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 932fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 936fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_POUND_NAME: 9381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 939fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 940fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 941fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_IMPLIED)) { 9421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; 9441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 946fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 947fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 948fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_REQUIRED)) { 9491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; 9511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 953fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 954fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 955fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_FIXED)) { 9561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist9; 957fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 9601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 9611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; 9631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 967fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 968fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist9(PROLOG_STATE *state, 969fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 970fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 971fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 972fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 976fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 9781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_FIXED_ATTRIBUTE_VALUE; 9801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 984fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 985fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement0(PROLOG_STATE *state, 986fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 987fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 988fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 989fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 993fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 9941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 9951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 9961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element1; 9971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ELEMENT_NAME; 9981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1002fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1003fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement1(PROLOG_STATE *state, 1004fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1005fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1006fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1007fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 10081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 10091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 10101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1011fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 10131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { 10141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1015fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_EMPTY; 10171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { 10191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1020fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ANY; 10221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 10241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 10251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element2; 10261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level = 1; 10271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_OPEN; 10281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1032fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1033fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement2(PROLOG_STATE *state, 1034fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1035fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1036fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1037fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 10381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 10391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 10401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1041fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_POUND_NAME: 10431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 1044fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 1045fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 1046fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_PCDATA)) { 10471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element3; 10481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_PCDATA; 10491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 10511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 10521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level = 2; 10531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element6; 10541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_OPEN; 10551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 10561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 10571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT; 10591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_QUESTION: 10601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_OPT; 10621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_ASTERISK: 10631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_REP; 10651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_PLUS: 10661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_PLUS; 10681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1072fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1073fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement3(PROLOG_STATE *state, 1074fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1075fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1076fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1077fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 10781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 10791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 10801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1081fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 10831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1084fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE; 10861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_ASTERISK: 10871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1088fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_REP; 10901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 10911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element4; 1092fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1097fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1098fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement4(PROLOG_STATE *state, 1099fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1100fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1101fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1102fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1106fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 11081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 11091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element5; 11101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT; 11111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 11121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 11141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1115fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1116fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement5(PROLOG_STATE *state, 1117fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1118fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1119fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1120fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1124fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_ASTERISK: 11261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1127fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 11281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_REP; 11291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 11301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element4; 1131fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 11331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 11351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1136fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1137fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement6(PROLOG_STATE *state, 1138fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1139fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1140fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1141fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1145fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 11471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level += 1; 11481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_OPEN; 11491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 11501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 11511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT; 11531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_QUESTION: 11541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_OPT; 11561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_ASTERISK: 11571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_REP; 11591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_PLUS: 11601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_PLUS; 11621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 11631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 11651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1166fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1167fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement7(PROLOG_STATE *state, 1168fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1169fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1170fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1171fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1175fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 11771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1178fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1180fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1181fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE; 11831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_ASTERISK: 11841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1185fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1187fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1188fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_REP; 11901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_QUESTION: 11911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1192fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1194fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1195fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_OPT; 11971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_PLUS: 11981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1199fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 12001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1201fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1202fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 12031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_PLUS; 12041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMA: 12051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element6; 12061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_SEQUENCE; 12071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 12081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element6; 12091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CHOICE; 12101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 12141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 12151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1216fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1217fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwiscondSect0(PROLOG_STATE *state, 1218fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1219fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1220fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1221fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 12251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 12271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { 12281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = condSect1; 12291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { 12321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = condSect2; 12331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 12361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1240fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1241fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwiscondSect1(PROLOG_STATE *state, 1242fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1243fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1244fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1245fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 12491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 12511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset1; 12521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel += 1; 12531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1258fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1259fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwiscondSect2(PROLOG_STATE *state, 1260fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1261fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1262fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1263fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 12671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 12691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset1; 12701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_IGNORE_SECT; 12711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 12751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 12761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1277fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1278fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisdeclClose(PROLOG_STATE *state, 1279fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1280fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1281fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1282fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1286fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return state->role_none; 12871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 12881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 1289fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return state->role_none; 12901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1294fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1295fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiserror(PROLOG_STATE *state, 1296fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1297fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1298fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1299fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 13001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 13011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 13021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1304fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int FASTCALL 1305fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiscommon(PROLOG_STATE *state, int tok) 13061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 13071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 13081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) 13091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INNER_PARAM_ENTITY_REF; 13101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif 13111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 13121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ERROR; 13131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1315fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisvoid 1316fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisXmlPrologStateInit(PROLOG_STATE *state) 13171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 13181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog0; 13191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 13201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->documentEntity = 1; 13211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel = 0; 1322fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->inEntityValue = 0; 13231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 13241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 13261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 13271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1328fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisvoid 1329fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisXmlPrologStateInitExternalEntity(PROLOG_STATE *state) 13301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 13311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset0; 13321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->documentEntity = 0; 13331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel = 0; 13341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 13361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 1337