17db96d56Sopenharmony_ci/* 27db96d56Sopenharmony_ci __ __ _ 37db96d56Sopenharmony_ci ___\ \/ /_ __ __ _| |_ 47db96d56Sopenharmony_ci / _ \\ /| '_ \ / _` | __| 57db96d56Sopenharmony_ci | __// \| |_) | (_| | |_ 67db96d56Sopenharmony_ci \___/_/\_\ .__/ \__,_|\__| 77db96d56Sopenharmony_ci |_| XML parser 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci Copyright (c) 1997-2000 Thai Open Source Software Center Ltd 107db96d56Sopenharmony_ci Copyright (c) 2000 Clark Cooper <coopercc@users.sourceforge.net> 117db96d56Sopenharmony_ci Copyright (c) 2002 Karl Waclawek <karl@waclawek.net> 127db96d56Sopenharmony_ci Copyright (c) 2002 Fred L. Drake, Jr. <fdrake@users.sourceforge.net> 137db96d56Sopenharmony_ci Copyright (c) 2017 Sebastian Pipping <sebastian@pipping.org> 147db96d56Sopenharmony_ci Licensed under the MIT license: 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci Permission is hereby granted, free of charge, to any person obtaining 177db96d56Sopenharmony_ci a copy of this software and associated documentation files (the 187db96d56Sopenharmony_ci "Software"), to deal in the Software without restriction, including 197db96d56Sopenharmony_ci without limitation the rights to use, copy, modify, merge, publish, 207db96d56Sopenharmony_ci distribute, sublicense, and/or sell copies of the Software, and to permit 217db96d56Sopenharmony_ci persons to whom the Software is furnished to do so, subject to the 227db96d56Sopenharmony_ci following conditions: 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci The above copyright notice and this permission notice shall be included 257db96d56Sopenharmony_ci in all copies or substantial portions of the Software. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 287db96d56Sopenharmony_ci EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 297db96d56Sopenharmony_ci MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 307db96d56Sopenharmony_ci NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 317db96d56Sopenharmony_ci DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 327db96d56Sopenharmony_ci OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 337db96d56Sopenharmony_ci USE OR OTHER DEALINGS IN THE SOFTWARE. 347db96d56Sopenharmony_ci*/ 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci#ifndef XmlRole_INCLUDED 377db96d56Sopenharmony_ci#define XmlRole_INCLUDED 1 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci#ifdef __VMS 407db96d56Sopenharmony_ci/* 0 1 2 3 0 1 2 3 417db96d56Sopenharmony_ci 1234567890123456789012345678901 1234567890123456789012345678901 */ 427db96d56Sopenharmony_ci# define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt 437db96d56Sopenharmony_ci#endif 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci#include "xmltok.h" 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci#ifdef __cplusplus 487db96d56Sopenharmony_ciextern "C" { 497db96d56Sopenharmony_ci#endif 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_cienum { 527db96d56Sopenharmony_ci XML_ROLE_ERROR = -1, 537db96d56Sopenharmony_ci XML_ROLE_NONE = 0, 547db96d56Sopenharmony_ci XML_ROLE_XML_DECL, 557db96d56Sopenharmony_ci XML_ROLE_INSTANCE_START, 567db96d56Sopenharmony_ci XML_ROLE_DOCTYPE_NONE, 577db96d56Sopenharmony_ci XML_ROLE_DOCTYPE_NAME, 587db96d56Sopenharmony_ci XML_ROLE_DOCTYPE_SYSTEM_ID, 597db96d56Sopenharmony_ci XML_ROLE_DOCTYPE_PUBLIC_ID, 607db96d56Sopenharmony_ci XML_ROLE_DOCTYPE_INTERNAL_SUBSET, 617db96d56Sopenharmony_ci XML_ROLE_DOCTYPE_CLOSE, 627db96d56Sopenharmony_ci XML_ROLE_GENERAL_ENTITY_NAME, 637db96d56Sopenharmony_ci XML_ROLE_PARAM_ENTITY_NAME, 647db96d56Sopenharmony_ci XML_ROLE_ENTITY_NONE, 657db96d56Sopenharmony_ci XML_ROLE_ENTITY_VALUE, 667db96d56Sopenharmony_ci XML_ROLE_ENTITY_SYSTEM_ID, 677db96d56Sopenharmony_ci XML_ROLE_ENTITY_PUBLIC_ID, 687db96d56Sopenharmony_ci XML_ROLE_ENTITY_COMPLETE, 697db96d56Sopenharmony_ci XML_ROLE_ENTITY_NOTATION_NAME, 707db96d56Sopenharmony_ci XML_ROLE_NOTATION_NONE, 717db96d56Sopenharmony_ci XML_ROLE_NOTATION_NAME, 727db96d56Sopenharmony_ci XML_ROLE_NOTATION_SYSTEM_ID, 737db96d56Sopenharmony_ci XML_ROLE_NOTATION_NO_SYSTEM_ID, 747db96d56Sopenharmony_ci XML_ROLE_NOTATION_PUBLIC_ID, 757db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_NAME, 767db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_CDATA, 777db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_ID, 787db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_IDREF, 797db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_IDREFS, 807db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_ENTITY, 817db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, 827db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, 837db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, 847db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_ENUM_VALUE, 857db96d56Sopenharmony_ci XML_ROLE_ATTRIBUTE_NOTATION_VALUE, 867db96d56Sopenharmony_ci XML_ROLE_ATTLIST_NONE, 877db96d56Sopenharmony_ci XML_ROLE_ATTLIST_ELEMENT_NAME, 887db96d56Sopenharmony_ci XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, 897db96d56Sopenharmony_ci XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, 907db96d56Sopenharmony_ci XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, 917db96d56Sopenharmony_ci XML_ROLE_FIXED_ATTRIBUTE_VALUE, 927db96d56Sopenharmony_ci XML_ROLE_ELEMENT_NONE, 937db96d56Sopenharmony_ci XML_ROLE_ELEMENT_NAME, 947db96d56Sopenharmony_ci XML_ROLE_CONTENT_ANY, 957db96d56Sopenharmony_ci XML_ROLE_CONTENT_EMPTY, 967db96d56Sopenharmony_ci XML_ROLE_CONTENT_PCDATA, 977db96d56Sopenharmony_ci XML_ROLE_GROUP_OPEN, 987db96d56Sopenharmony_ci XML_ROLE_GROUP_CLOSE, 997db96d56Sopenharmony_ci XML_ROLE_GROUP_CLOSE_REP, 1007db96d56Sopenharmony_ci XML_ROLE_GROUP_CLOSE_OPT, 1017db96d56Sopenharmony_ci XML_ROLE_GROUP_CLOSE_PLUS, 1027db96d56Sopenharmony_ci XML_ROLE_GROUP_CHOICE, 1037db96d56Sopenharmony_ci XML_ROLE_GROUP_SEQUENCE, 1047db96d56Sopenharmony_ci XML_ROLE_CONTENT_ELEMENT, 1057db96d56Sopenharmony_ci XML_ROLE_CONTENT_ELEMENT_REP, 1067db96d56Sopenharmony_ci XML_ROLE_CONTENT_ELEMENT_OPT, 1077db96d56Sopenharmony_ci XML_ROLE_CONTENT_ELEMENT_PLUS, 1087db96d56Sopenharmony_ci XML_ROLE_PI, 1097db96d56Sopenharmony_ci XML_ROLE_COMMENT, 1107db96d56Sopenharmony_ci#ifdef XML_DTD 1117db96d56Sopenharmony_ci XML_ROLE_TEXT_DECL, 1127db96d56Sopenharmony_ci XML_ROLE_IGNORE_SECT, 1137db96d56Sopenharmony_ci XML_ROLE_INNER_PARAM_ENTITY_REF, 1147db96d56Sopenharmony_ci#endif /* XML_DTD */ 1157db96d56Sopenharmony_ci XML_ROLE_PARAM_ENTITY_REF 1167db96d56Sopenharmony_ci}; 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_citypedef struct prolog_state { 1197db96d56Sopenharmony_ci int(PTRCALL *handler)(struct prolog_state *state, int tok, const char *ptr, 1207db96d56Sopenharmony_ci const char *end, const ENCODING *enc); 1217db96d56Sopenharmony_ci unsigned level; 1227db96d56Sopenharmony_ci int role_none; 1237db96d56Sopenharmony_ci#ifdef XML_DTD 1247db96d56Sopenharmony_ci unsigned includeLevel; 1257db96d56Sopenharmony_ci int documentEntity; 1267db96d56Sopenharmony_ci int inEntityValue; 1277db96d56Sopenharmony_ci#endif /* XML_DTD */ 1287db96d56Sopenharmony_ci} PROLOG_STATE; 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_civoid XmlPrologStateInit(PROLOG_STATE *); 1317db96d56Sopenharmony_ci#ifdef XML_DTD 1327db96d56Sopenharmony_civoid XmlPrologStateInitExternalEntity(PROLOG_STATE *); 1337db96d56Sopenharmony_ci#endif /* XML_DTD */ 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci#define XmlTokenRole(state, tok, ptr, end, enc) \ 1367db96d56Sopenharmony_ci (((state)->handler)(state, tok, ptr, end, enc)) 1377db96d56Sopenharmony_ci 1387db96d56Sopenharmony_ci#ifdef __cplusplus 1397db96d56Sopenharmony_ci} 1407db96d56Sopenharmony_ci#endif 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci#endif /* not XmlRole_INCLUDED */ 143