xmlrole.c revision 08317aefef89ca18ce12e53c0cdb3c8e132a6201
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 51dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef COMPILED_FROM_DSP 6fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include "winconfig.h" 7fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#elif defined(MACOS_CLASSIC) 8fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include "macconfig.h" 91dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#else 1008317aefef89ca18ce12e53c0cdb3c8e132a6201Fred Drake#ifdef HAVE_EXPAT_CONFIG_H 11fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include <expat_config.h> 1208317aefef89ca18ce12e53c0cdb3c8e132a6201Fred Drake#endif 131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* ndef COMPILED_FROM_DSP */ 141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 15fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis#include "internal.h" 161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#include "xmlrole.h" 171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#include "ascii.h" 181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis/* Doesn't check: 201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis that ,| are not mixed in a model group 221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis content of literals 231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis*/ 251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 26fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ANY[] = { 27fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_A, ASCII_N, ASCII_Y, '\0' }; 28fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ATTLIST[] = { 29fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; 30fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_CDATA[] = { 31fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 32fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_DOCTYPE[] = { 33fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; 34fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ELEMENT[] = { 35fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; 36fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_EMPTY[] = { 37fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; 38fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ENTITIES[] = { 39fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, 40fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 41fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ENTITY[] = { 42fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; 43fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_FIXED[] = { 44fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; 45fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_ID[] = { 46fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_D, '\0' }; 47fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IDREF[] = { 48fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; 49fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IDREFS[] = { 50fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; 51fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IGNORE[] = { 52fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; 53fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_IMPLIED[] = { 54fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; 55fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_INCLUDE[] = { 56fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; 57fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NDATA[] = { 58fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 59fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NMTOKEN[] = { 60fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; 61fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NMTOKENS[] = { 62fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, 63fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 64fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_NOTATION[] = 65fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, 66fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 67fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_PCDATA[] = { 68fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; 69fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_PUBLIC[] = { 70fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; 71fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_REQUIRED[] = { 72fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, 73fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis '\0' }; 74fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic const char KW_SYSTEM[] = { 75fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; 761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifndef MIN_BYTES_PER_CHAR 781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) 791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif 801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#define setTopLevel(state) \ 831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis ((state)->handler = ((state)->documentEntity \ 841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis ? internalSubset \ 851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis : externalSubset1)) 861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#else /* not XML_DTD */ 871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#define setTopLevel(state) ((state)->handler = internalSubset) 881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* not XML_DTD */ 891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 90fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwistypedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, 91fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 92fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 93fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 94fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc); 951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwisstatic PROLOG_HANDLER 971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis prolog0, prolog1, prolog2, 981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, 991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis internalSubset, 1001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis entity0, entity1, entity2, entity3, entity4, entity5, entity6, 101fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis entity7, entity8, entity9, entity10, 1021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis notation0, notation1, notation2, notation3, notation4, 1031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, 1041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis attlist7, attlist8, attlist9, 1051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis element0, element1, element2, element3, element4, element5, element6, 1061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis element7, 1071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 1081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis externalSubset0, externalSubset1, 1091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis condSect0, condSect1, condSect2, 1101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 1111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis declClose, 1121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis error; 1131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 114fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int FASTCALL common(PROLOG_STATE *state, int tok); 1151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 116fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 117fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisprolog0(PROLOG_STATE *state, 118fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 119fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 120fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 121fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 1221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 1231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 1241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 1261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_XML_DECL: 1281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 1291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_XML_DECL; 1301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 1311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 132fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 1331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 1341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog1; 135fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 1361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_BOM: 1371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_OPEN: 1391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (!XmlNameMatchesAscii(enc, 140fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 141fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 142fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_DOCTYPE)) 1431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 1441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype0; 145fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 1461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_INSTANCE_START: 1471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 1481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INSTANCE_START; 1491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 1501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 1511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 1521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 153fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 154fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisprolog1(PROLOG_STATE *state, 155fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 156fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 157fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 158fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 1591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 1601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 1611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 164fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 1651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 166fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 1671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_BOM: 1681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_OPEN: 1701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (!XmlNameMatchesAscii(enc, 171fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 172fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 173fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_DOCTYPE)) 1741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 1751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype0; 176fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 1771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_INSTANCE_START: 1781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 1791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INSTANCE_START; 1801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 1811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 1821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 1831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 184fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 185fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisprolog2(PROLOG_STATE *state, 186fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 187fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 188fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 189fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 1901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 1911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 1921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 1941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 195fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 1961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 197fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 1981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_INSTANCE_START: 1991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 2001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INSTANCE_START; 2011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 205fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 206fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype0(PROLOG_STATE *state, 207fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 208fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 209fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 210fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 214fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 2161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 2171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype1; 2181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_NAME; 2191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 223fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 224fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype1(PROLOG_STATE *state, 225fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 226fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 227fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 228fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 232fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 2341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = internalSubset; 2351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; 2361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 2371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog2; 2381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_CLOSE; 2391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 2401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 2411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype3; 242fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 2451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype2; 246fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 2491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 253fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 254fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype2(PROLOG_STATE *state, 255fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 256fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 257fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 258fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 262fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 2641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype3; 2651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_PUBLIC_ID; 2661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 270fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 271fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype3(PROLOG_STATE *state, 272fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 273fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 274fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 275fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 279fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 2811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype4; 2821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_SYSTEM_ID; 2831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 2841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 2851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 2861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 287fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 288fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype4(PROLOG_STATE *state, 289fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 290fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 291fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 292fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 2931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 2941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 2951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 296fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 2971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 2981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = internalSubset; 2991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; 3001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 3011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog2; 3021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_CLOSE; 3031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 3051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 307fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 308fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisdoctype5(PROLOG_STATE *state, 309fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 310fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 311fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 312fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 3151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 316fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 3171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 3181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog2; 3191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DOCTYPE_CLOSE; 3201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 3221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 324fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 325fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisinternalSubset(PROLOG_STATE *state, 326fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 327fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 328fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 329fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 3321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 3331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 3341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_OPEN: 3351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 336fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 337fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 338fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_ENTITY)) { 3391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity0; 340fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 3411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 343fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 344fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 345fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_ATTLIST)) { 3461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist0; 347fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 3481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 350fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 351fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 352fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_ELEMENT)) { 3531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element0; 354fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 3551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 357fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + 2 * MIN_BYTES_PER_CHAR(enc), 358fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 359fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_NOTATION)) { 3601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation0; 361fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 3621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 3641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PI: 365fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_PI; 3661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMENT: 367fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_COMMENT; 3681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PARAM_ENTITY_REF: 3691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_PARAM_ENTITY_REF; 3701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_BRACKET: 3711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = doctype5; 372fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_DOCTYPE_NONE; 3731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 3741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 3751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 3771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 3781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 379fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 380fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisexternalSubset0(PROLOG_STATE *state, 381fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 382fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 383fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 384fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 3851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 3861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset1; 3871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (tok == XML_TOK_XML_DECL) 3881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_TEXT_DECL; 3891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return externalSubset1(state, tok, ptr, end, enc); 3901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 3911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 392fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 393fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisexternalSubset1(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 switch (tok) { 4001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COND_SECT_OPEN: 4011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = condSect0; 4021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COND_SECT_CLOSE: 4041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (state->includeLevel == 0) 4051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel -= 1; 4071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 4091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_BRACKET: 4111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NONE: 4131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (state->includeLevel) 4141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 4161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis default: 4171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return internalSubset(state, tok, ptr, end, enc); 4181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 4221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 4231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 424fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 425fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity0(PROLOG_STATE *state, 426fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 427fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 428fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 429fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 433fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PERCENT: 4351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity1; 436fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 4381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity2; 4391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GENERAL_ENTITY_NAME; 4401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 444fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 445fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity1(PROLOG_STATE *state, 446fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 447fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 448fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 449fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 453fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 4551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity7; 4561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_PARAM_ENTITY_NAME; 4571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 461fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 462fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity2(PROLOG_STATE *state, 463fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 464fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 465fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 466fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 470fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 4721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 4731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity4; 474fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 4771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity3; 478fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 4811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 4821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 483fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ENTITY_NONE; 4841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_VALUE; 4851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 4861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 4871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 4881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 489fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 490fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity3(PROLOG_STATE *state, 491fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 492fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 493fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 494fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 4951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 4961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 4971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 498fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 4991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 5001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity4; 5011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_PUBLIC_ID; 5021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 506fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 507fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity4(PROLOG_STATE *state, 508fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 509fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 510fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 511fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 515fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 5171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity5; 5181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_SYSTEM_ID; 5191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 523fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 524fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity5(PROLOG_STATE *state, 525fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 526fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 527fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 528fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 532fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 5341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 5351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_COMPLETE; 5361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 5371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { 5381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity6; 539fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 5421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 546fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 547fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity6(PROLOG_STATE *state, 548fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 549fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 550fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 551fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 555fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 5571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 558fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ENTITY_NONE; 5591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_NOTATION_NAME; 5601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 564fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 565fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity7(PROLOG_STATE *state, 566fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 567fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 568fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 569fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 5721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 573fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 5751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 5761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity9; 577fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 5801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity8; 581fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 5821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 5841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 5851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 586fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ENTITY_NONE; 5871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_VALUE; 5881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 5891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 5901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 5911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 592fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 593fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity8(PROLOG_STATE *state, 594fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 595fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 596fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 597fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 5981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 5991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 601fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 6021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 6031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = entity9; 6041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_PUBLIC_ID; 6051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 609fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 610fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity9(PROLOG_STATE *state, 611fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 612fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 613fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 614fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 618fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 6191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 620fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->handler = entity10; 6211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ENTITY_SYSTEM_ID; 6221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 626fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 627fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisentity10(PROLOG_STATE *state, 628fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 629fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 630fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 631fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 635fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_NONE; 636fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis case XML_TOK_DECL_CLOSE: 637fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis setTopLevel(state); 638fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ENTITY_COMPLETE; 639fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 640fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return common(state, tok); 641fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis} 642fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis 643fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 644fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation0(PROLOG_STATE *state, 645fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 646fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 647fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 648fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 649fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis{ 650fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis switch (tok) { 651fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis case XML_TOK_PROLOG_S: 652fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 6541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation1; 6551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_NAME; 6561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 660fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 661fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation1(PROLOG_STATE *state, 662fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 663fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 664fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 665fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 669fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 6711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { 6721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation3; 673fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { 6761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation2; 677fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 6801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 6831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 684fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 685fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation2(PROLOG_STATE *state, 686fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 687fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 688fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 689fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 6901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 6911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 6921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 693fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 6941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 6951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = notation4; 6961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_PUBLIC_ID; 6971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 6981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 6991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 701fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 702fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation3(PROLOG_STATE *state, 703fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 704fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 705fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 706fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 710fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 7111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 7121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 713fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_NOTATION_NONE; 7141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_SYSTEM_ID; 7151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 719fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 720fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisnotation4(PROLOG_STATE *state, 721fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 722fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 723fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 724fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 728fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_NOTATION_NONE; 7291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 7301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 731fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_NOTATION_NONE; 7321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_SYSTEM_ID; 7331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 7341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 7351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NOTATION_NO_SYSTEM_ID; 7361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 740fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 741fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist0(PROLOG_STATE *state, 742fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 743fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 744fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 745fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 749fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 7511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 7521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 7531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTLIST_ELEMENT_NAME; 7541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 758fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 759fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist1(PROLOG_STATE *state, 760fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 761fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 762fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 763fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 767fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 7691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 770fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 7721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 7731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist2; 7741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTRIBUTE_NAME; 7751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 7761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 7771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 7781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 779fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 780fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist2(PROLOG_STATE *state, 781fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 782fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 783fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 784fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 7851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 7861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 7871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 788fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 7891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 7901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis { 7911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis static const char *types[] = { 792fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_CDATA, 7931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_ID, 7941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_IDREF, 7951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_IDREFS, 7961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_ENTITY, 7971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_ENTITIES, 7981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_NMTOKEN, 7991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis KW_NMTOKENS, 8001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis }; 8011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis int i; 8021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) 803fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { 804fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->handler = attlist8; 805fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; 806fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 8071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { 8091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist5; 810fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 8131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 8141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist3; 815fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 820fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 821fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist3(PROLOG_STATE *state, 822fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 823fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 824fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 825fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8281dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 829fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NMTOKEN: 8311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 8321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 8331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist4; 8341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTRIBUTE_ENUM_VALUE; 8351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 839fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 840fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist4(PROLOG_STATE *state, 841fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 842fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 843fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 844fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 848fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 8501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist8; 851fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 8531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist3; 854fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 859fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 860fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist5(PROLOG_STATE *state, 861fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 862fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 863fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 864fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 868fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 8701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist6; 871fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 876fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 877fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist6(PROLOG_STATE *state, 878fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 879fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 880fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 881fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 8831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 8841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 885fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 8861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 8871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist7; 8881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; 8891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 8901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 8911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 8921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 893fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 894fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist7(PROLOG_STATE *state, 895fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 896fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 897fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 898fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 8991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 902fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 9041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist8; 905fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 9071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist6; 908fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 9131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis/* default value */ 914fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 915fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist8(PROLOG_STATE *state, 916fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 917fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 918fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 919fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 923fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_POUND_NAME: 9251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 926fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 927fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 928fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_IMPLIED)) { 9291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; 9311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9321dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 933fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 934fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 935fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_REQUIRED)) { 9361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; 9381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 940fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 941fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 942fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_FIXED)) { 9431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist9; 944fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 9471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 9481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; 9501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 954fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 955fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisattlist9(PROLOG_STATE *state, 956fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 957fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 958fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 959fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 963fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ATTLIST_NONE; 9641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_LITERAL: 9651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = attlist1; 9661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_FIXED_ATTRIBUTE_VALUE; 9671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9681dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 971fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 972fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement0(PROLOG_STATE *state, 973fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 974fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 975fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 976fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 980fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 9811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 9821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 9831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element1; 9841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ELEMENT_NAME; 9851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 9861dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 9871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 9881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 989fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 990fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement1(PROLOG_STATE *state, 991fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 992fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 993fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 994fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 9951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 9961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 9971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 998fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 9991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 10001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { 10011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1002fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10031dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_EMPTY; 10041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { 10061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1007fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ANY; 10091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 10111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 10121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element2; 10131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level = 1; 10141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_OPEN; 10151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1019fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1020fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement2(PROLOG_STATE *state, 1021fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1022fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1023fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1024fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 10251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 10261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 10271dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1028fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_POUND_NAME: 10301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, 1031fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis ptr + MIN_BYTES_PER_CHAR(enc), 1032fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis end, 1033fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis KW_PCDATA)) { 10341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element3; 10351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_PCDATA; 10361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 10381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 10391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level = 2; 10401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element6; 10411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_OPEN; 10421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 10431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 10441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT; 10461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_QUESTION: 10471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_OPT; 10491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_ASTERISK: 10501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_REP; 10521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_PLUS: 10531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 10541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_PLUS; 10551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1059fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1060fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement3(PROLOG_STATE *state, 1061fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1062fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1063fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1064fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 10651dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 10661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 10671dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1068fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 10701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1071fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE; 10731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_ASTERISK: 10741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1075fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 10761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_REP; 10771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 10781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element4; 1079fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10811dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 10821dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 10831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1084fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1085fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement4(PROLOG_STATE *state, 1086fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1087fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1088fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1089fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 10901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 10911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 10921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1093fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 10941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 10951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 10961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element5; 10971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT; 10981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 10991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 11011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1102fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1103fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement5(PROLOG_STATE *state, 1104fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1105fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1106fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1107fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1111fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_ASTERISK: 11131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1114fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 11151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_REP; 11161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 11171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element4; 1118fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 11201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 11221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1123fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1124fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement6(PROLOG_STATE *state, 1125fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1126fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1127fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1128fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11291dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11301dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11311dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1132fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_PAREN: 11341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level += 1; 11351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_OPEN; 11361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 11371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PREFIXED_NAME: 11381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT; 11401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_QUESTION: 11411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_OPT; 11431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_ASTERISK: 11441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11451dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_REP; 11461dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME_PLUS: 11471dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element7; 11481dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_CONTENT_ELEMENT_PLUS; 11491dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 11501dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 11521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1153fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1154fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiselement7(PROLOG_STATE *state, 1155fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1156fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1157fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1158fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 11591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 11601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 11611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1162fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return XML_ROLE_ELEMENT_NONE; 11631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN: 11641dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1165fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11661dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1167fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1168fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11691dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE; 11701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_ASTERISK: 11711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1172fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11731dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1174fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1175fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11761dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_REP; 11771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_QUESTION: 11781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1179fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1181fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1182fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11831dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_OPT; 11841dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_CLOSE_PAREN_PLUS: 11851dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->level -= 1; 1186fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis if (state->level == 0) { 11871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = declClose; 1188fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->role_none = XML_ROLE_ELEMENT_NONE; 1189fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis } 11901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CLOSE_PLUS; 11911dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_COMMA: 11921dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element6; 11931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_SEQUENCE; 11941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OR: 11951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = element6; 11961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_GROUP_CHOICE; 11971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 11981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 11991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 12011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 12021dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1203fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1204fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwiscondSect0(PROLOG_STATE *state, 1205fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1206fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1207fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1208fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12091dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 12121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_NAME: 12141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { 12151dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = condSect1; 12161dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { 12191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = condSect2; 12201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis break; 12231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12241dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12251dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12261dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1227fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1228fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwiscondSect1(PROLOG_STATE *state, 1229fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1230fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1231fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1232fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12331dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12341dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12351dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 12361dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12371dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 12381dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset1; 12391dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel += 1; 12401dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12411dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12421dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12431dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12441dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1245fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1246fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwiscondSect2(PROLOG_STATE *state, 1247fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1248fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1249fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1250fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12511dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12521dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12531dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 12541dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12551dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_OPEN_BRACKET: 12561dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset1; 12571dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_IGNORE_SECT; 12581dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12591dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12601dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12611dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 12621dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 12631dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1264fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1265fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisdeclClose(PROLOG_STATE *state, 1266fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1267fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1268fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1269fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12701dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12711dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis switch (tok) { 12721dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_PROLOG_S: 1273fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return state->role_none; 12741dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis case XML_TOK_DECL_CLOSE: 12751dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis setTopLevel(state); 1276fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis return state->role_none; 12771dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis } 12781dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return common(state, tok); 12791dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12801dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1281fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int PTRCALL 1282fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiserror(PROLOG_STATE *state, 1283fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis int tok, 1284fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *ptr, 1285fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const char *end, 1286fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis const ENCODING *enc) 12871dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12881dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_NONE; 12891dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 12901dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1291fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisstatic int FASTCALL 1292fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwiscommon(PROLOG_STATE *state, int tok) 12931dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 12941dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 12951dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) 12961dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_INNER_PARAM_ENTITY_REF; 12971dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif 12981dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = error; 12991dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis return XML_ROLE_ERROR; 13001dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13011dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1302fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisvoid 1303fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisXmlPrologStateInit(PROLOG_STATE *state) 13041dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 13051dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = prolog0; 13061dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 13071dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->documentEntity = 1; 13081dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel = 0; 1309fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwis state->inEntityValue = 0; 13101dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 13111dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13121dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 13131dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#ifdef XML_DTD 13141dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 1315fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. Löwisvoid 1316fc03a94aaccc9ae606ee3438ca21d65a335d43e9Martin v. LöwisXmlPrologStateInitExternalEntity(PROLOG_STATE *state) 13171dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis{ 13181dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->handler = externalSubset0; 13191dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->documentEntity = 0; 13201dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis state->includeLevel = 0; 13211dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis} 13221dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis 13231dbb1caf86abe5f9920b1f4719daba1c86ce6770Martin v. Löwis#endif /* XML_DTD */ 1324