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