LTKCPP-- LLRP Toolkit C Plus Plus Library
parserInternals.h
1 /*
2  * Summary: internals routines 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 
31 XMLPUBVAR unsigned int xmlParserMaxDepth;
32 
40 #define XML_MAX_TEXT_LENGTH 10000000
41 
48 #define XML_MAX_NAMELEN 100
49 
56 #define INPUT_CHUNK 250
57 
58 /************************************************************************
59  * *
60  * UNICODE version of the macros. *
61  * *
62  ************************************************************************/
72 #define IS_BYTE_CHAR(c) xmlIsChar_ch(c)
73 
84 #define IS_CHAR(c) xmlIsCharQ(c)
85 
92 #define IS_CHAR_CH(c) xmlIsChar_ch(c)
93 
102 #define IS_BLANK(c) xmlIsBlankQ(c)
103 
110 #define IS_BLANK_CH(c) xmlIsBlank_ch(c)
111 
120 #define IS_BASECHAR(c) xmlIsBaseCharQ(c)
121 
130 #define IS_DIGIT(c) xmlIsDigitQ(c)
131 
138 #define IS_DIGIT_CH(c) xmlIsDigit_ch(c)
139 
148 #define IS_COMBINING(c) xmlIsCombiningQ(c)
149 
156 #define IS_COMBINING_CH(c) 0
157 
169 #define IS_EXTENDER(c) xmlIsExtenderQ(c)
170 
177 #define IS_EXTENDER_CH(c) xmlIsExtender_ch(c)
178 
188 #define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
189 
199 #define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
200 
208 #define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
209 
217 #define IS_ASCII_LETTER(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \
218  ((0x61 <= (c)) && ((c) <= 0x7a)))
219 
227 #define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39))
228 
238 #define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c)
239 
246 #define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
247 
254 #define SKIP_EOL(p) \
255  if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \
256  if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; }
257 
264 #define MOVETO_ENDTAG(p) \
265  while ((*p) && (*(p) != '>')) (p)++
266 
273 #define MOVETO_STARTTAG(p) \
274  while ((*p) && (*(p) != '<')) (p)++
275 
279 XMLPUBVAR const xmlChar xmlStringText[];
280 XMLPUBVAR const xmlChar xmlStringTextNoenc[];
281 XMLPUBVAR const xmlChar xmlStringComment[];
282 
283 /*
284  * Function to finish the work of the macros where needed.
285  */
286 XMLPUBFUN int XMLCALL xmlIsLetter (int c);
287 
291 XMLPUBFUN xmlParserCtxtPtr XMLCALL
292  xmlCreateFileParserCtxt (const char *filename);
293 XMLPUBFUN xmlParserCtxtPtr XMLCALL
294  xmlCreateURLParserCtxt (const char *filename,
295  int options);
296 XMLPUBFUN xmlParserCtxtPtr XMLCALL
297  xmlCreateMemoryParserCtxt(const char *buffer,
298  int size);
299 XMLPUBFUN xmlParserCtxtPtr XMLCALL
300  xmlCreateEntityParserCtxt(const xmlChar *URL,
301  const xmlChar *ID,
302  const xmlChar *base);
303 XMLPUBFUN int XMLCALL
304  xmlSwitchEncoding (xmlParserCtxtPtr ctxt,
305  xmlCharEncoding enc);
306 XMLPUBFUN int XMLCALL
307  xmlSwitchToEncoding (xmlParserCtxtPtr ctxt,
308  xmlCharEncodingHandlerPtr handler);
309 XMLPUBFUN int XMLCALL
310  xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt,
311  xmlParserInputPtr input,
312  xmlCharEncodingHandlerPtr handler);
313 
314 #ifdef IN_LIBXML
315 /* internal error reporting */
316 XMLPUBFUN void XMLCALL
317  __xmlErrEncoding (xmlParserCtxtPtr ctxt,
318  xmlParserErrors xmlerr,
319  const char *msg,
320  const xmlChar * str1,
321  const xmlChar * str2);
322 #endif
323 
327 XMLPUBFUN xmlParserInputPtr XMLCALL
328  xmlNewStringInputStream (xmlParserCtxtPtr ctxt,
329  const xmlChar *buffer);
330 XMLPUBFUN xmlParserInputPtr XMLCALL
331  xmlNewEntityInputStream (xmlParserCtxtPtr ctxt,
332  xmlEntityPtr entity);
333 XMLPUBFUN int XMLCALL
334  xmlPushInput (xmlParserCtxtPtr ctxt,
335  xmlParserInputPtr input);
336 XMLPUBFUN xmlChar XMLCALL
337  xmlPopInput (xmlParserCtxtPtr ctxt);
338 XMLPUBFUN void XMLCALL
339  xmlFreeInputStream (xmlParserInputPtr input);
340 XMLPUBFUN xmlParserInputPtr XMLCALL
341  xmlNewInputFromFile (xmlParserCtxtPtr ctxt,
342  const char *filename);
343 XMLPUBFUN xmlParserInputPtr XMLCALL
344  xmlNewInputStream (xmlParserCtxtPtr ctxt);
345 
349 XMLPUBFUN xmlChar * XMLCALL
350  xmlSplitQName (xmlParserCtxtPtr ctxt,
351  const xmlChar *name,
352  xmlChar **prefix);
353 
357 XMLPUBFUN const xmlChar * XMLCALL
358  xmlParseName (xmlParserCtxtPtr ctxt);
359 XMLPUBFUN xmlChar * XMLCALL
360  xmlParseNmtoken (xmlParserCtxtPtr ctxt);
361 XMLPUBFUN xmlChar * XMLCALL
362  xmlParseEntityValue (xmlParserCtxtPtr ctxt,
363  xmlChar **orig);
364 XMLPUBFUN xmlChar * XMLCALL
365  xmlParseAttValue (xmlParserCtxtPtr ctxt);
366 XMLPUBFUN xmlChar * XMLCALL
367  xmlParseSystemLiteral (xmlParserCtxtPtr ctxt);
368 XMLPUBFUN xmlChar * XMLCALL
369  xmlParsePubidLiteral (xmlParserCtxtPtr ctxt);
370 XMLPUBFUN void XMLCALL
371  xmlParseCharData (xmlParserCtxtPtr ctxt,
372  int cdata);
373 XMLPUBFUN xmlChar * XMLCALL
374  xmlParseExternalID (xmlParserCtxtPtr ctxt,
375  xmlChar **publicID,
376  int strict);
377 XMLPUBFUN void XMLCALL
378  xmlParseComment (xmlParserCtxtPtr ctxt);
379 XMLPUBFUN const xmlChar * XMLCALL
380  xmlParsePITarget (xmlParserCtxtPtr ctxt);
381 XMLPUBFUN void XMLCALL
382  xmlParsePI (xmlParserCtxtPtr ctxt);
383 XMLPUBFUN void XMLCALL
384  xmlParseNotationDecl (xmlParserCtxtPtr ctxt);
385 XMLPUBFUN void XMLCALL
386  xmlParseEntityDecl (xmlParserCtxtPtr ctxt);
387 XMLPUBFUN int XMLCALL
388  xmlParseDefaultDecl (xmlParserCtxtPtr ctxt,
389  xmlChar **value);
390 XMLPUBFUN xmlEnumerationPtr XMLCALL
391  xmlParseNotationType (xmlParserCtxtPtr ctxt);
392 XMLPUBFUN xmlEnumerationPtr XMLCALL
393  xmlParseEnumerationType (xmlParserCtxtPtr ctxt);
394 XMLPUBFUN int XMLCALL
395  xmlParseEnumeratedType (xmlParserCtxtPtr ctxt,
396  xmlEnumerationPtr *tree);
397 XMLPUBFUN int XMLCALL
398  xmlParseAttributeType (xmlParserCtxtPtr ctxt,
399  xmlEnumerationPtr *tree);
400 XMLPUBFUN void XMLCALL
401  xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
402 XMLPUBFUN xmlElementContentPtr XMLCALL
403  xmlParseElementMixedContentDecl
404  (xmlParserCtxtPtr ctxt,
405  int inputchk);
406 XMLPUBFUN xmlElementContentPtr XMLCALL
407  xmlParseElementChildrenContentDecl
408  (xmlParserCtxtPtr ctxt,
409  int inputchk);
410 XMLPUBFUN int XMLCALL
411  xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
412  const xmlChar *name,
413  xmlElementContentPtr *result);
414 XMLPUBFUN int XMLCALL
415  xmlParseElementDecl (xmlParserCtxtPtr ctxt);
416 XMLPUBFUN void XMLCALL
417  xmlParseMarkupDecl (xmlParserCtxtPtr ctxt);
418 XMLPUBFUN int XMLCALL
419  xmlParseCharRef (xmlParserCtxtPtr ctxt);
420 XMLPUBFUN xmlEntityPtr XMLCALL
421  xmlParseEntityRef (xmlParserCtxtPtr ctxt);
422 XMLPUBFUN void XMLCALL
423  xmlParseReference (xmlParserCtxtPtr ctxt);
424 XMLPUBFUN void XMLCALL
425  xmlParsePEReference (xmlParserCtxtPtr ctxt);
426 XMLPUBFUN void XMLCALL
427  xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt);
428 #ifdef LIBXML_SAX1_ENABLED
429 XMLPUBFUN const xmlChar * XMLCALL
430  xmlParseAttribute (xmlParserCtxtPtr ctxt,
431  xmlChar **value);
432 XMLPUBFUN const xmlChar * XMLCALL
433  xmlParseStartTag (xmlParserCtxtPtr ctxt);
434 XMLPUBFUN void XMLCALL
435  xmlParseEndTag (xmlParserCtxtPtr ctxt);
436 #endif /* LIBXML_SAX1_ENABLED */
437 XMLPUBFUN void XMLCALL
438  xmlParseCDSect (xmlParserCtxtPtr ctxt);
439 XMLPUBFUN void XMLCALL
440  xmlParseContent (xmlParserCtxtPtr ctxt);
441 XMLPUBFUN void XMLCALL
442  xmlParseElement (xmlParserCtxtPtr ctxt);
443 XMLPUBFUN xmlChar * XMLCALL
444  xmlParseVersionNum (xmlParserCtxtPtr ctxt);
445 XMLPUBFUN xmlChar * XMLCALL
446  xmlParseVersionInfo (xmlParserCtxtPtr ctxt);
447 XMLPUBFUN xmlChar * XMLCALL
448  xmlParseEncName (xmlParserCtxtPtr ctxt);
449 XMLPUBFUN const xmlChar * XMLCALL
450  xmlParseEncodingDecl (xmlParserCtxtPtr ctxt);
451 XMLPUBFUN int XMLCALL
452  xmlParseSDDecl (xmlParserCtxtPtr ctxt);
453 XMLPUBFUN void XMLCALL
454  xmlParseXMLDecl (xmlParserCtxtPtr ctxt);
455 XMLPUBFUN void XMLCALL
456  xmlParseTextDecl (xmlParserCtxtPtr ctxt);
457 XMLPUBFUN void XMLCALL
458  xmlParseMisc (xmlParserCtxtPtr ctxt);
459 XMLPUBFUN void XMLCALL
460  xmlParseExternalSubset (xmlParserCtxtPtr ctxt,
461  const xmlChar *ExternalID,
462  const xmlChar *SystemID);
468 #define XML_SUBSTITUTE_NONE 0
469 
474 #define XML_SUBSTITUTE_REF 1
475 
480 #define XML_SUBSTITUTE_PEREF 2
481 
486 #define XML_SUBSTITUTE_BOTH 3
487 
488 XMLPUBFUN xmlChar * XMLCALL
489  xmlStringDecodeEntities (xmlParserCtxtPtr ctxt,
490  const xmlChar *str,
491  int what,
492  xmlChar end,
493  xmlChar end2,
494  xmlChar end3);
495 XMLPUBFUN xmlChar * XMLCALL
496  xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt,
497  const xmlChar *str,
498  int len,
499  int what,
500  xmlChar end,
501  xmlChar end2,
502  xmlChar end3);
503 
504 /*
505  * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
506  */
507 XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt,
508  xmlNodePtr value);
509 XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt);
510 XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt,
511  xmlParserInputPtr value);
512 XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt);
513 XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt);
514 XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt,
515  const xmlChar *value);
516 
517 /*
518  * other commodities shared between parser.c and parserInternals.
519  */
520 XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt);
521 XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt,
522  const xmlChar *cur,
523  int *len);
524 XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);
525 XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang);
526 
527 /*
528  * Really core function shared with HTML parser.
529  */
530 XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt,
531  int *len);
532 XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out,
533  int val);
534 XMLPUBFUN int XMLCALL xmlCopyChar (int len,
535  xmlChar *out,
536  int val);
537 XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt);
538 XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in);
539 
540 #ifdef LIBXML_HTML_ENABLED
541 /*
542  * Actually comes from the HTML parser but launched from the init stuff.
543  */
544 XMLPUBFUN void XMLCALL htmlInitAutoClose (void);
545 XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename,
546  const char *encoding);
547 #endif
548 
549 /*
550  * Specific function to keep track of entities references
551  * and used by the XSLT debugger.
552  */
553 #ifdef LIBXML_LEGACY_ENABLED
554 
563 typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent,
564  xmlNodePtr firstNode,
565  xmlNodePtr lastNode);
566 
567 XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func);
568 
569 XMLPUBFUN xmlChar * XMLCALL
570  xmlParseQuotedString (xmlParserCtxtPtr ctxt);
571 XMLPUBFUN void XMLCALL
572  xmlParseNamespace (xmlParserCtxtPtr ctxt);
573 XMLPUBFUN xmlChar * XMLCALL
574  xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt);
575 XMLPUBFUN xmlChar * XMLCALL
576  xmlScanName (xmlParserCtxtPtr ctxt);
577 XMLPUBFUN xmlChar * XMLCALL
578  xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt);
579 XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt);
580 XMLPUBFUN xmlChar * XMLCALL
581  xmlNamespaceParseQName (xmlParserCtxtPtr ctxt,
582  xmlChar **prefix);
586 XMLPUBFUN xmlChar * XMLCALL
587  xmlDecodeEntities (xmlParserCtxtPtr ctxt,
588  int len,
589  int what,
590  xmlChar end,
591  xmlChar end2,
592  xmlChar end3);
593 XMLPUBFUN void XMLCALL
594  xmlHandleEntity (xmlParserCtxtPtr ctxt,
595  xmlEntityPtr entity);
596 
597 #endif /* LIBXML_LEGACY_ENABLED */
598 
599 #ifdef IN_LIBXML
600 /*
601  * internal only
602  */
603 XMLPUBFUN void XMLCALL
604  xmlErrMemory (xmlParserCtxtPtr ctxt,
605  const char *extra);
606 #endif
607 
608 #ifdef __cplusplus
609 }
610 #endif
611 #endif /* __XML_PARSER_INTERNALS_H__ */