1 /* 2 * Summary: internals routines and limits exported by the parser. 3 * Description: this module exports a number of internal parsing routines 4 * they are not really all intended for applications but 5 * can prove useful doing low level processing. 6 * 7 * Copy: See Copyright for the status of this software. 8 * 9 * Author: Daniel Veillard 10 */ 11 12 #ifndef __XML_PARSER_INTERNALS_H__ 13 #define __XML_PARSER_INTERNALS_H__ 14 15 #include <libxml/xmlversion.h> 16 #include <libxml/parser.h> 17 #include <libxml/HTMLparser.h> 18 #include <libxml/chvalid.h> 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 /** 25 * xmlParserMaxDepth: 26 * 27 * arbitrary depth limit for the XML documents that we allow to 28 * process. This is not a limitation of the parser but a safety 29 * boundary feature, use XML_PARSE_HUGE option to override it. 30 */ 31 XMLPUBVAR unsigned int xmlParserMaxDepth; 32 33 /** 34 * XML_MAX_TEXT_LENGTH: 35 * 36 * Maximum size allowed for a single text node when building a tree. 37 * This is not a limitation of the parser but a safety boundary feature, 38 * use XML_PARSE_HUGE option to override it. 39 * Introduced in 2.9.0 40 */ 41 #define XML_MAX_TEXT_LENGTH 10000000 42 43 /** 44 * XML_MAX_NAME_LENGTH: 45 * 46 * Maximum size allowed for a markup identitier 47 * This is not a limitation of the parser but a safety boundary feature, 48 * use XML_PARSE_HUGE option to override it. 49 * Note that with the use of parsing dictionaries overriding the limit 50 * may result in more runtime memory usage in face of "unfriendly' content 51 * Introduced in 2.9.0 52 */ 53 #define XML_MAX_NAME_LENGTH 50000 54 55 /** 56 * XML_MAX_DICTIONARY_LIMIT: 57 * 58 * Maximum size allowed by the parser for a dictionary by default 59 * This is not a limitation of the parser but a safety boundary feature, 60 * use XML_PARSE_HUGE option to override it. 61 * Introduced in 2.9.0 62 */ 63 #define XML_MAX_DICTIONARY_LIMIT 10000000 64 65 /** 66 * XML_MAX_LOOKUP_LIMIT: 67 * 68 * Maximum size allowed by the parser for ahead lookup 69 * This is an upper boundary enforced by the parser to avoid bad 70 * behaviour on "unfriendly' content 71 * Introduced in 2.9.0 72 */ 73 #define XML_MAX_LOOKUP_LIMIT 10000000 74 75 /** 76 * XML_MAX_NAMELEN: 77 * 78 * Identifiers can be longer, but this will be more costly 79 * at runtime. 80 */ 81 #define XML_MAX_NAMELEN 100 82 83 /** 84 * INPUT_CHUNK: 85 * 86 * The parser tries to always have that amount of input ready. 87 * One of the point is providing context when reporting errors. 88 */ 89 #define INPUT_CHUNK 250 90 91 /************************************************************************ 92 * * 93 * UNICODE version of the macros. * 94 * * 95 ************************************************************************/ 96 /** 97 * IS_BYTE_CHAR: 98 * @c: an byte value (int) 99 * 100 * Macro to check the following production in the XML spec: 101 * 102 * [2] Char ::= #x9 | #xA | #xD | [#x20...] 103 * any byte character in the accepted range 104 */ 105 #define IS_BYTE_CHAR(c) xmlIsChar_ch(c) 106 107 /** 108 * IS_CHAR: 109 * @c: an UNICODE value (int) 110 * 111 * Macro to check the following production in the XML spec: 112 * 113 * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] 114 * | [#x10000-#x10FFFF] 115 * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. 116 */ 117 #define IS_CHAR(c) xmlIsCharQ(c) 118 119 /** 120 * IS_CHAR_CH: 121 * @c: an xmlChar (usually an unsigned char) 122 * 123 * Behaves like IS_CHAR on single-byte value 124 */ 125 #define IS_CHAR_CH(c) xmlIsChar_ch(c) 126 127 /** 128 * IS_BLANK: 129 * @c: an UNICODE value (int) 130 * 131 * Macro to check the following production in the XML spec: 132 * 133 * [3] S ::= (#x20 | #x9 | #xD | #xA)+ 134 */ 135 #define IS_BLANK(c) xmlIsBlankQ(c) 136 137 /** 138 * IS_BLANK_CH: 139 * @c: an xmlChar value (normally unsigned char) 140 * 141 * Behaviour same as IS_BLANK 142 */ 143 #define IS_BLANK_CH(c) xmlIsBlank_ch(c) 144 145 /** 146 * IS_BASECHAR: 147 * @c: an UNICODE value (int) 148 * 149 * Macro to check the following production in the XML spec: 150 * 151 * [85] BaseChar ::= ... long list see REC ... 152 */ 153 #define IS_BASECHAR(c) xmlIsBaseCharQ(c) 154 155 /** 156 * IS_DIGIT: 157 * @c: an UNICODE value (int) 158 * 159 * Macro to check the following production in the XML spec: 160 * 161 * [88] Digit ::= ... long list see REC ... 162 */ 163 #define IS_DIGIT(c) xmlIsDigitQ(c) 164 165 /** 166 * IS_DIGIT_CH: 167 * @c: an xmlChar value (usually an unsigned char) 168 * 169 * Behaves like IS_DIGIT but with a single byte argument 170 */ 171 #define IS_DIGIT_CH(c) xmlIsDigit_ch(c) 172 173 /** 174 * IS_COMBINING: 175 * @c: an UNICODE value (int) 176 * 177 * Macro to check the following production in the XML spec: 178 * 179 * [87] CombiningChar ::= ... long list see REC ... 180 */ 181 #define IS_COMBINING(c) xmlIsCombiningQ(c) 182 183 /** 184 * IS_COMBINING_CH: 185 * @c: an xmlChar (usually an unsigned char) 186 * 187 * Always false (all combining chars > 0xff) 188 */ 189 #define IS_COMBINING_CH(c) 0 190 191 /** 192 * IS_EXTENDER: 193 * @c: an UNICODE value (int) 194 * 195 * Macro to check the following production in the XML spec: 196 * 197 * 198 * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | 199 * #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | 200 * [#x309D-#x309E] | [#x30FC-#x30FE] 201 */ 202 #define IS_EXTENDER(c) xmlIsExtenderQ(c) 203 204 /** 205 * IS_EXTENDER_CH: 206 * @c: an xmlChar value (usually an unsigned char) 207 * 208 * Behaves like IS_EXTENDER but with a single-byte argument 209 */ 210 #define IS_EXTENDER_CH(c) xmlIsExtender_ch(c) 211 212 /** 213 * IS_IDEOGRAPHIC: 214 * @c: an UNICODE value (int) 215 * 216 * Macro to check the following production in the XML spec: 217 * 218 * 219 * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] 220 */ 221 #define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c) 222 223 /** 224 * IS_LETTER: 225 * @c: an UNICODE value (int) 226 * 227 * Macro to check the following production in the XML spec: 228 * 229 * 230 * [84] Letter ::= BaseChar | Ideographic 231 */ 232 #define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c)) 233 234 /** 235 * IS_LETTER_CH: 236 * @c: an xmlChar value (normally unsigned char) 237 * 238 * Macro behaves like IS_LETTER, but only check base chars 239 * 240 */ 241 #define IS_LETTER_CH(c) xmlIsBaseChar_ch(c) 242 243 /** 244 * IS_ASCII_LETTER: 245 * @c: an xmlChar value 246 * 247 * Macro to check [a-zA-Z] 248 * 249 */ 250 #define IS_ASCII_LETTER(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ 251 ((0x61 <= (c)) && ((c) <= 0x7a))) 252 253 /** 254 * IS_ASCII_DIGIT: 255 * @c: an xmlChar value 256 * 257 * Macro to check [0-9] 258 * 259 */ 260 #define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39)) 261 262 /** 263 * IS_PUBIDCHAR: 264 * @c: an UNICODE value (int) 265 * 266 * Macro to check the following production in the XML spec: 267 * 268 * 269 * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] 270 */ 271 #define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c) 272 273 /** 274 * IS_PUBIDCHAR_CH: 275 * @c: an xmlChar value (normally unsigned char) 276 * 277 * Same as IS_PUBIDCHAR but for single-byte value 278 */ 279 #define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c) 280 281 /** 282 * SKIP_EOL: 283 * @p: and UTF8 string pointer 284 * 285 * Skips the end of line chars. 286 */ 287 #define SKIP_EOL(p) \ 288 if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \ 289 if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; } 290 291 /** 292 * MOVETO_ENDTAG: 293 * @p: and UTF8 string pointer 294 * 295 * Skips to the next '>' char. 296 */ 297 #define MOVETO_ENDTAG(p) \ 298 while ((*p) && (*(p) != '>')) (p)++ 299 300 /** 301 * MOVETO_STARTTAG: 302 * @p: and UTF8 string pointer 303 * 304 * Skips to the next '<' char. 305 */ 306 #define MOVETO_STARTTAG(p) \ 307 while ((*p) && (*(p) != '<')) (p)++ 308 309 /** 310 * Global variables used for predefined strings. 311 */ 312 XMLPUBVAR const xmlChar xmlStringText[]; 313 XMLPUBVAR const xmlChar xmlStringTextNoenc[]; 314 XMLPUBVAR const xmlChar xmlStringComment[]; 315 316 /* 317 * Function to finish the work of the macros where needed. 318 */ 319 XMLPUBFUN int XMLCALL xmlIsLetter (int c); 320 321 /** 322 * Parser context. 323 */ 324 XMLPUBFUN xmlParserCtxtPtr XMLCALL 325 xmlCreateFileParserCtxt (const char *filename); 326 XMLPUBFUN xmlParserCtxtPtr XMLCALL 327 xmlCreateURLParserCtxt (const char *filename, 328 int options); 329 XMLPUBFUN xmlParserCtxtPtr XMLCALL 330 xmlCreateMemoryParserCtxt(const char *buffer, 331 int size); 332 XMLPUBFUN xmlParserCtxtPtr XMLCALL 333 xmlCreateEntityParserCtxt(const xmlChar *URL, 334 const xmlChar *ID, 335 const xmlChar *base); 336 XMLPUBFUN int XMLCALL 337 xmlSwitchEncoding (xmlParserCtxtPtr ctxt, 338 xmlCharEncoding enc); 339 XMLPUBFUN int XMLCALL 340 xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, 341 xmlCharEncodingHandlerPtr handler); 342 XMLPUBFUN int XMLCALL 343 xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt, 344 xmlParserInputPtr input, 345 xmlCharEncodingHandlerPtr handler); 346 347 #ifdef IN_LIBXML 348 /* internal error reporting */ 349 XMLPUBFUN void XMLCALL 350 __xmlErrEncoding (xmlParserCtxtPtr ctxt, 351 xmlParserErrors xmlerr, 352 const char *msg, 353 const xmlChar * str1, 354 const xmlChar * str2) LIBXML_ATTR_FORMAT(3,0); 355 #endif 356 357 /** 358 * Input Streams. 359 */ 360 XMLPUBFUN xmlParserInputPtr XMLCALL 361 xmlNewStringInputStream (xmlParserCtxtPtr ctxt, 362 const xmlChar *buffer); 363 XMLPUBFUN xmlParserInputPtr XMLCALL 364 xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, 365 xmlEntityPtr entity); 366 XMLPUBFUN int XMLCALL 367 xmlPushInput (xmlParserCtxtPtr ctxt, 368 xmlParserInputPtr input); 369 XMLPUBFUN xmlChar XMLCALL 370 xmlPopInput (xmlParserCtxtPtr ctxt); 371 XMLPUBFUN void XMLCALL 372 xmlFreeInputStream (xmlParserInputPtr input); 373 XMLPUBFUN xmlParserInputPtr XMLCALL 374 xmlNewInputFromFile (xmlParserCtxtPtr ctxt, 375 const char *filename); 376 XMLPUBFUN xmlParserInputPtr XMLCALL 377 xmlNewInputStream (xmlParserCtxtPtr ctxt); 378 379 /** 380 * Namespaces. 381 */ 382 XMLPUBFUN xmlChar * XMLCALL 383 xmlSplitQName (xmlParserCtxtPtr ctxt, 384 const xmlChar *name, 385 xmlChar **prefix); 386 387 /** 388 * Generic production rules. 389 */ 390 XMLPUBFUN const xmlChar * XMLCALL 391 xmlParseName (xmlParserCtxtPtr ctxt); 392 XMLPUBFUN xmlChar * XMLCALL 393 xmlParseNmtoken (xmlParserCtxtPtr ctxt); 394 XMLPUBFUN xmlChar * XMLCALL 395 xmlParseEntityValue (xmlParserCtxtPtr ctxt, 396 xmlChar **orig); 397 XMLPUBFUN xmlChar * XMLCALL 398 xmlParseAttValue (xmlParserCtxtPtr ctxt); 399 XMLPUBFUN xmlChar * XMLCALL 400 xmlParseSystemLiteral (xmlParserCtxtPtr ctxt); 401 XMLPUBFUN xmlChar * XMLCALL 402 xmlParsePubidLiteral (xmlParserCtxtPtr ctxt); 403 XMLPUBFUN void XMLCALL 404 xmlParseCharData (xmlParserCtxtPtr ctxt, 405 int cdata); 406 XMLPUBFUN xmlChar * XMLCALL 407 xmlParseExternalID (xmlParserCtxtPtr ctxt, 408 xmlChar **publicID, 409 int strict); 410 XMLPUBFUN void XMLCALL 411 xmlParseComment (xmlParserCtxtPtr ctxt); 412 XMLPUBFUN const xmlChar * XMLCALL 413 xmlParsePITarget (xmlParserCtxtPtr ctxt); 414 XMLPUBFUN void XMLCALL 415 xmlParsePI (xmlParserCtxtPtr ctxt); 416 XMLPUBFUN void XMLCALL 417 xmlParseNotationDecl (xmlParserCtxtPtr ctxt); 418 XMLPUBFUN void XMLCALL 419 xmlParseEntityDecl (xmlParserCtxtPtr ctxt); 420 XMLPUBFUN int XMLCALL 421 xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, 422 xmlChar **value); 423 XMLPUBFUN xmlEnumerationPtr XMLCALL 424 xmlParseNotationType (xmlParserCtxtPtr ctxt); 425 XMLPUBFUN xmlEnumerationPtr XMLCALL 426 xmlParseEnumerationType (xmlParserCtxtPtr ctxt); 427 XMLPUBFUN int XMLCALL 428 xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, 429 xmlEnumerationPtr *tree); 430 XMLPUBFUN int XMLCALL 431 xmlParseAttributeType (xmlParserCtxtPtr ctxt, 432 xmlEnumerationPtr *tree); 433 XMLPUBFUN void XMLCALL 434 xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt); 435 XMLPUBFUN xmlElementContentPtr XMLCALL 436 xmlParseElementMixedContentDecl 437 (xmlParserCtxtPtr ctxt, 438 int inputchk); 439 XMLPUBFUN xmlElementContentPtr XMLCALL 440 xmlParseElementChildrenContentDecl 441 (xmlParserCtxtPtr ctxt, 442 int inputchk); 443 XMLPUBFUN int XMLCALL 444 xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, 445 const xmlChar *name, 446 xmlElementContentPtr *result); 447 XMLPUBFUN int XMLCALL 448 xmlParseElementDecl (xmlParserCtxtPtr ctxt); 449 XMLPUBFUN void XMLCALL 450 xmlParseMarkupDecl (xmlParserCtxtPtr ctxt); 451 XMLPUBFUN int XMLCALL 452 xmlParseCharRef (xmlParserCtxtPtr ctxt); 453 XMLPUBFUN xmlEntityPtr XMLCALL 454 xmlParseEntityRef (xmlParserCtxtPtr ctxt); 455 XMLPUBFUN void XMLCALL 456 xmlParseReference (xmlParserCtxtPtr ctxt); 457 XMLPUBFUN void XMLCALL 458 xmlParsePEReference (xmlParserCtxtPtr ctxt); 459 XMLPUBFUN void XMLCALL 460 xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt); 461 #ifdef LIBXML_SAX1_ENABLED 462 XMLPUBFUN const xmlChar * XMLCALL 463 xmlParseAttribute (xmlParserCtxtPtr ctxt, 464 xmlChar **value); 465 XMLPUBFUN const xmlChar * XMLCALL 466 xmlParseStartTag (xmlParserCtxtPtr ctxt); 467 XMLPUBFUN void XMLCALL 468 xmlParseEndTag (xmlParserCtxtPtr ctxt); 469 #endif /* LIBXML_SAX1_ENABLED */ 470 XMLPUBFUN void XMLCALL 471 xmlParseCDSect (xmlParserCtxtPtr ctxt); 472 XMLPUBFUN void XMLCALL 473 xmlParseContent (xmlParserCtxtPtr ctxt); 474 XMLPUBFUN void XMLCALL 475 xmlParseElement (xmlParserCtxtPtr ctxt); 476 XMLPUBFUN xmlChar * XMLCALL 477 xmlParseVersionNum (xmlParserCtxtPtr ctxt); 478 XMLPUBFUN xmlChar * XMLCALL 479 xmlParseVersionInfo (xmlParserCtxtPtr ctxt); 480 XMLPUBFUN xmlChar * XMLCALL 481 xmlParseEncName (xmlParserCtxtPtr ctxt); 482 XMLPUBFUN const xmlChar * XMLCALL 483 xmlParseEncodingDecl (xmlParserCtxtPtr ctxt); 484 XMLPUBFUN int XMLCALL 485 xmlParseSDDecl (xmlParserCtxtPtr ctxt); 486 XMLPUBFUN void XMLCALL 487 xmlParseXMLDecl (xmlParserCtxtPtr ctxt); 488 XMLPUBFUN void XMLCALL 489 xmlParseTextDecl (xmlParserCtxtPtr ctxt); 490 XMLPUBFUN void XMLCALL 491 xmlParseMisc (xmlParserCtxtPtr ctxt); 492 XMLPUBFUN void XMLCALL 493 xmlParseExternalSubset (xmlParserCtxtPtr ctxt, 494 const xmlChar *ExternalID, 495 const xmlChar *SystemID); 496 /** 497 * XML_SUBSTITUTE_NONE: 498 * 499 * If no entities need to be substituted. 500 */ 501 #define XML_SUBSTITUTE_NONE 0 502 /** 503 * XML_SUBSTITUTE_REF: 504 * 505 * Whether general entities need to be substituted. 506 */ 507 #define XML_SUBSTITUTE_REF 1 508 /** 509 * XML_SUBSTITUTE_PEREF: 510 * 511 * Whether parameter entities need to be substituted. 512 */ 513 #define XML_SUBSTITUTE_PEREF 2 514 /** 515 * XML_SUBSTITUTE_BOTH: 516 * 517 * Both general and parameter entities need to be substituted. 518 */ 519 #define XML_SUBSTITUTE_BOTH 3 520 521 XMLPUBFUN xmlChar * XMLCALL 522 xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, 523 const xmlChar *str, 524 int what, 525 xmlChar end, 526 xmlChar end2, 527 xmlChar end3); 528 XMLPUBFUN xmlChar * XMLCALL 529 xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt, 530 const xmlChar *str, 531 int len, 532 int what, 533 xmlChar end, 534 xmlChar end2, 535 xmlChar end3); 536 537 /* 538 * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. 539 */ 540 XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt, 541 xmlNodePtr value); 542 XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt); 543 XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt, 544 xmlParserInputPtr value); 545 XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt); 546 XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt); 547 XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt, 548 const xmlChar *value); 549 550 /* 551 * other commodities shared between parser.c and parserInternals. 552 */ 553 XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt); 554 XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt, 555 const xmlChar *cur, 556 int *len); 557 XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt); 558 XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang); 559 560 /* 561 * Really core function shared with HTML parser. 562 */ 563 XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt, 564 int *len); 565 XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out, 566 int val); 567 XMLPUBFUN int XMLCALL xmlCopyChar (int len, 568 xmlChar *out, 569 int val); 570 XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt); 571 XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in); 572 573 #ifdef LIBXML_HTML_ENABLED 574 /* 575 * Actually comes from the HTML parser but launched from the init stuff. 576 */ 577 XMLPUBFUN void XMLCALL htmlInitAutoClose (void); 578 XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename, 579 const char *encoding); 580 #endif 581 582 /* 583 * Specific function to keep track of entities references 584 * and used by the XSLT debugger. 585 */ 586 #ifdef LIBXML_LEGACY_ENABLED 587 /** 588 * xmlEntityReferenceFunc: 589 * @ent: the entity 590 * @firstNode: the fist node in the chunk 591 * @lastNode: the last nod in the chunk 592 * 593 * Callback function used when one needs to be able to track back the 594 * provenance of a chunk of nodes inherited from an entity replacement. 595 */ 596 typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent, 597 xmlNodePtr firstNode, 598 xmlNodePtr lastNode); 599 600 XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func); 601 602 XMLPUBFUN xmlChar * XMLCALL 603 xmlParseQuotedString (xmlParserCtxtPtr ctxt); 604 XMLPUBFUN void XMLCALL 605 xmlParseNamespace (xmlParserCtxtPtr ctxt); 606 XMLPUBFUN xmlChar * XMLCALL 607 xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt); 608 XMLPUBFUN xmlChar * XMLCALL 609 xmlScanName (xmlParserCtxtPtr ctxt); 610 XMLPUBFUN xmlChar * XMLCALL 611 xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt); 612 XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt); 613 XMLPUBFUN xmlChar * XMLCALL 614 xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, 615 xmlChar **prefix); 616 /** 617 * Entities 618 */ 619 XMLPUBFUN xmlChar * XMLCALL 620 xmlDecodeEntities (xmlParserCtxtPtr ctxt, 621 int len, 622 int what, 623 xmlChar end, 624 xmlChar end2, 625 xmlChar end3); 626 XMLPUBFUN void XMLCALL 627 xmlHandleEntity (xmlParserCtxtPtr ctxt, 628 xmlEntityPtr entity); 629 630 #endif /* LIBXML_LEGACY_ENABLED */ 631 632 #ifdef IN_LIBXML 633 /* 634 * internal only 635 */ 636 XMLPUBFUN void XMLCALL 637 xmlErrMemory (xmlParserCtxtPtr ctxt, 638 const char *extra); 639 #endif 640 641 #ifdef __cplusplus 642 } 643 #endif 644 #endif /* __XML_PARSER_INTERNALS_H__ */ 645