parserInternals.h

Go to the documentation of this file.
00001 /*
00002  * Summary: internals routines exported by the parser.
00003  * Description: this module exports a number of internal parsing routines
00004  *              they are not really all intended for applications but
00005  *              can prove useful doing low level processing.
00006  *
00007  * Copy: See Copyright for the status of this software.
00008  *
00009  * Author: Daniel Veillard
00010  */
00011 
00012 #ifndef __XML_PARSER_INTERNALS_H__
00013 #define __XML_PARSER_INTERNALS_H__
00014 
00015 #include <libxml/xmlversion.h>
00016 #include <libxml/parser.h>
00017 #include <libxml/HTMLparser.h>
00018 #include <libxml/chvalid.h>
00019 
00020 #ifdef __cplusplus
00021 extern "C" {
00022 #endif
00023 
00031 XMLPUBVAR unsigned int xmlParserMaxDepth;
00032 
00039 #define XML_MAX_NAMELEN 100
00040 
00047 #define INPUT_CHUNK 250
00048 
00049 /************************************************************************
00050  *                                  *
00051  * UNICODE version of the macros.                       *
00052  *                                  *
00053  ************************************************************************/
00063 #define IS_BYTE_CHAR(c)  xmlIsChar_ch(c)
00064 
00075 #define IS_CHAR(c)   xmlIsCharQ(c)
00076 
00083 #define IS_CHAR_CH(c)  xmlIsChar_ch(c)
00084 
00093 #define IS_BLANK(c)  xmlIsBlankQ(c)
00094 
00101 #define IS_BLANK_CH(c)  xmlIsBlank_ch(c)
00102 
00111 #define IS_BASECHAR(c) xmlIsBaseCharQ(c)
00112 
00121 #define IS_DIGIT(c) xmlIsDigitQ(c)
00122 
00129 #define IS_DIGIT_CH(c)  xmlIsDigit_ch(c)
00130 
00139 #define IS_COMBINING(c) xmlIsCombiningQ(c)
00140 
00147 #define IS_COMBINING_CH(c) 0 
00148 
00160 #define IS_EXTENDER(c) xmlIsExtenderQ(c)
00161 
00168 #define IS_EXTENDER_CH(c)  xmlIsExtender_ch(c)
00169 
00179 #define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
00180 
00190 #define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
00191 
00199 #define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
00200 
00208 #define IS_ASCII_LETTER(c)  (((0x41 <= (c)) && ((c) <= 0x5a)) || \
00209                  ((0x61 <= (c)) && ((c) <= 0x7a)))
00210 
00218 #define IS_ASCII_DIGIT(c)   ((0x30 <= (c)) && ((c) <= 0x39))
00219 
00229 #define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c)
00230 
00237 #define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
00238 
00245 #define SKIP_EOL(p)                             \
00246     if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; }          \
00247     if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; }
00248 
00255 #define MOVETO_ENDTAG(p)                        \
00256     while ((*p) && (*(p) != '>')) (p)++
00257 
00264 #define MOVETO_STARTTAG(p)                      \
00265     while ((*p) && (*(p) != '<')) (p)++
00266 
00270 XMLPUBVAR const xmlChar xmlStringText[];
00271 XMLPUBVAR const xmlChar xmlStringTextNoenc[];
00272 XMLPUBVAR const xmlChar xmlStringComment[];
00273 
00274 /*
00275  * Function to finish the work of the macros where needed.
00276  */
00277 XMLPUBFUN int XMLCALL                   xmlIsLetter     (int c);
00278 
00282 XMLPUBFUN xmlParserCtxtPtr XMLCALL  
00283             xmlCreateFileParserCtxt (const char *filename);
00284 XMLPUBFUN xmlParserCtxtPtr XMLCALL  
00285             xmlCreateURLParserCtxt  (const char *filename,
00286                          int options);
00287 XMLPUBFUN xmlParserCtxtPtr XMLCALL  
00288             xmlCreateMemoryParserCtxt(const char *buffer,
00289                          int size);
00290 XMLPUBFUN xmlParserCtxtPtr XMLCALL  
00291             xmlCreateEntityParserCtxt(const xmlChar *URL,
00292                          const xmlChar *ID,
00293                          const xmlChar *base);
00294 XMLPUBFUN int XMLCALL           
00295             xmlSwitchEncoding   (xmlParserCtxtPtr ctxt,
00296                          xmlCharEncoding enc);
00297 XMLPUBFUN int XMLCALL           
00298             xmlSwitchToEncoding (xmlParserCtxtPtr ctxt,
00299                      xmlCharEncodingHandlerPtr handler);
00300 XMLPUBFUN int XMLCALL           
00301             xmlSwitchInputEncoding  (xmlParserCtxtPtr ctxt,
00302                          xmlParserInputPtr input,
00303                      xmlCharEncodingHandlerPtr handler);
00304 
00305 #ifdef IN_LIBXML
00306 /* internal error reporting */
00307 XMLPUBFUN void XMLCALL
00308             __xmlErrEncoding    (xmlParserCtxtPtr ctxt,
00309                          xmlParserErrors xmlerr,
00310                          const char *msg,
00311                          const xmlChar * str1,
00312                          const xmlChar * str2);
00313 #endif
00314 
00318 XMLPUBFUN xmlParserInputPtr XMLCALL 
00319             xmlNewStringInputStream (xmlParserCtxtPtr ctxt,
00320                          const xmlChar *buffer);
00321 XMLPUBFUN xmlParserInputPtr XMLCALL 
00322             xmlNewEntityInputStream (xmlParserCtxtPtr ctxt,
00323                          xmlEntityPtr entity);
00324 XMLPUBFUN void XMLCALL          
00325             xmlPushInput        (xmlParserCtxtPtr ctxt,
00326                          xmlParserInputPtr input);
00327 XMLPUBFUN xmlChar XMLCALL           
00328             xmlPopInput     (xmlParserCtxtPtr ctxt);
00329 XMLPUBFUN void XMLCALL          
00330             xmlFreeInputStream  (xmlParserInputPtr input);
00331 XMLPUBFUN xmlParserInputPtr XMLCALL 
00332             xmlNewInputFromFile (xmlParserCtxtPtr ctxt,
00333                          const char *filename);
00334 XMLPUBFUN xmlParserInputPtr XMLCALL 
00335             xmlNewInputStream   (xmlParserCtxtPtr ctxt);
00336 
00340 XMLPUBFUN xmlChar * XMLCALL     
00341             xmlSplitQName       (xmlParserCtxtPtr ctxt,
00342                          const xmlChar *name,
00343                          xmlChar **prefix);
00344 
00348 XMLPUBFUN const xmlChar * XMLCALL       
00349             xmlParseName        (xmlParserCtxtPtr ctxt);
00350 XMLPUBFUN xmlChar * XMLCALL     
00351             xmlParseNmtoken     (xmlParserCtxtPtr ctxt);
00352 XMLPUBFUN xmlChar * XMLCALL     
00353             xmlParseEntityValue (xmlParserCtxtPtr ctxt,
00354                          xmlChar **orig);
00355 XMLPUBFUN xmlChar * XMLCALL     
00356             xmlParseAttValue    (xmlParserCtxtPtr ctxt);
00357 XMLPUBFUN xmlChar * XMLCALL     
00358             xmlParseSystemLiteral   (xmlParserCtxtPtr ctxt);
00359 XMLPUBFUN xmlChar * XMLCALL     
00360             xmlParsePubidLiteral    (xmlParserCtxtPtr ctxt);
00361 XMLPUBFUN void XMLCALL          
00362             xmlParseCharData    (xmlParserCtxtPtr ctxt,
00363                          int cdata);
00364 XMLPUBFUN xmlChar * XMLCALL     
00365             xmlParseExternalID  (xmlParserCtxtPtr ctxt,
00366                          xmlChar **publicID,
00367                          int strict);
00368 XMLPUBFUN void XMLCALL          
00369             xmlParseComment     (xmlParserCtxtPtr ctxt);
00370 XMLPUBFUN const xmlChar * XMLCALL       
00371             xmlParsePITarget    (xmlParserCtxtPtr ctxt);
00372 XMLPUBFUN void XMLCALL          
00373             xmlParsePI      (xmlParserCtxtPtr ctxt);
00374 XMLPUBFUN void XMLCALL          
00375             xmlParseNotationDecl    (xmlParserCtxtPtr ctxt);
00376 XMLPUBFUN void XMLCALL          
00377             xmlParseEntityDecl  (xmlParserCtxtPtr ctxt);
00378 XMLPUBFUN int XMLCALL           
00379             xmlParseDefaultDecl (xmlParserCtxtPtr ctxt,
00380                          xmlChar **value);
00381 XMLPUBFUN xmlEnumerationPtr XMLCALL 
00382             xmlParseNotationType    (xmlParserCtxtPtr ctxt);
00383 XMLPUBFUN xmlEnumerationPtr XMLCALL 
00384             xmlParseEnumerationType (xmlParserCtxtPtr ctxt);
00385 XMLPUBFUN int XMLCALL           
00386             xmlParseEnumeratedType  (xmlParserCtxtPtr ctxt,
00387                          xmlEnumerationPtr *tree);
00388 XMLPUBFUN int XMLCALL           
00389             xmlParseAttributeType   (xmlParserCtxtPtr ctxt,
00390                          xmlEnumerationPtr *tree);
00391 XMLPUBFUN void XMLCALL          
00392             xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
00393 XMLPUBFUN xmlElementContentPtr XMLCALL  
00394             xmlParseElementMixedContentDecl
00395                         (xmlParserCtxtPtr ctxt,
00396                          int inputchk);
00397 XMLPUBFUN xmlElementContentPtr XMLCALL  
00398             xmlParseElementChildrenContentDecl
00399                         (xmlParserCtxtPtr ctxt,
00400                          int inputchk);
00401 XMLPUBFUN int XMLCALL           
00402             xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
00403                          const xmlChar *name,
00404                          xmlElementContentPtr *result);
00405 XMLPUBFUN int XMLCALL           
00406             xmlParseElementDecl (xmlParserCtxtPtr ctxt);
00407 XMLPUBFUN void XMLCALL          
00408             xmlParseMarkupDecl  (xmlParserCtxtPtr ctxt);
00409 XMLPUBFUN int XMLCALL           
00410             xmlParseCharRef     (xmlParserCtxtPtr ctxt);
00411 XMLPUBFUN xmlEntityPtr XMLCALL      
00412             xmlParseEntityRef   (xmlParserCtxtPtr ctxt);
00413 XMLPUBFUN void XMLCALL          
00414             xmlParseReference   (xmlParserCtxtPtr ctxt);
00415 XMLPUBFUN void XMLCALL          
00416             xmlParsePEReference (xmlParserCtxtPtr ctxt);
00417 XMLPUBFUN void XMLCALL          
00418             xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt);
00419 #ifdef LIBXML_SAX1_ENABLED
00420 XMLPUBFUN const xmlChar * XMLCALL       
00421             xmlParseAttribute   (xmlParserCtxtPtr ctxt,
00422                          xmlChar **value);
00423 XMLPUBFUN const xmlChar * XMLCALL       
00424             xmlParseStartTag    (xmlParserCtxtPtr ctxt);
00425 XMLPUBFUN void XMLCALL          
00426             xmlParseEndTag      (xmlParserCtxtPtr ctxt);
00427 #endif /* LIBXML_SAX1_ENABLED */
00428 XMLPUBFUN void XMLCALL          
00429             xmlParseCDSect      (xmlParserCtxtPtr ctxt);
00430 XMLPUBFUN void XMLCALL          
00431             xmlParseContent     (xmlParserCtxtPtr ctxt);
00432 XMLPUBFUN void XMLCALL          
00433             xmlParseElement     (xmlParserCtxtPtr ctxt);
00434 XMLPUBFUN xmlChar * XMLCALL     
00435             xmlParseVersionNum  (xmlParserCtxtPtr ctxt);
00436 XMLPUBFUN xmlChar * XMLCALL     
00437             xmlParseVersionInfo (xmlParserCtxtPtr ctxt);
00438 XMLPUBFUN xmlChar * XMLCALL     
00439             xmlParseEncName     (xmlParserCtxtPtr ctxt);
00440 XMLPUBFUN const xmlChar * XMLCALL       
00441             xmlParseEncodingDecl    (xmlParserCtxtPtr ctxt);
00442 XMLPUBFUN int XMLCALL           
00443             xmlParseSDDecl      (xmlParserCtxtPtr ctxt);
00444 XMLPUBFUN void XMLCALL          
00445             xmlParseXMLDecl     (xmlParserCtxtPtr ctxt);
00446 XMLPUBFUN void XMLCALL          
00447             xmlParseTextDecl    (xmlParserCtxtPtr ctxt);
00448 XMLPUBFUN void XMLCALL          
00449             xmlParseMisc        (xmlParserCtxtPtr ctxt);
00450 XMLPUBFUN void XMLCALL          
00451             xmlParseExternalSubset  (xmlParserCtxtPtr ctxt,
00452                          const xmlChar *ExternalID,
00453                          const xmlChar *SystemID); 
00459 #define XML_SUBSTITUTE_NONE 0
00460 
00465 #define XML_SUBSTITUTE_REF  1
00466 
00471 #define XML_SUBSTITUTE_PEREF    2
00472 
00477 #define XML_SUBSTITUTE_BOTH     3
00478 
00479 XMLPUBFUN xmlChar * XMLCALL
00480         xmlStringDecodeEntities     (xmlParserCtxtPtr ctxt,
00481                          const xmlChar *str,
00482                          int what,
00483                          xmlChar end,
00484                          xmlChar  end2,
00485                          xmlChar end3);
00486 XMLPUBFUN xmlChar * XMLCALL
00487         xmlStringLenDecodeEntities  (xmlParserCtxtPtr ctxt,
00488                          const xmlChar *str,
00489                          int len,
00490                          int what,
00491                          xmlChar end,
00492                          xmlChar  end2,
00493                          xmlChar end3);
00494 
00495 /*
00496  * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
00497  */
00498 XMLPUBFUN int XMLCALL           nodePush        (xmlParserCtxtPtr ctxt,
00499                          xmlNodePtr value);
00500 XMLPUBFUN xmlNodePtr XMLCALL        nodePop         (xmlParserCtxtPtr ctxt);
00501 XMLPUBFUN int XMLCALL           inputPush       (xmlParserCtxtPtr ctxt,
00502                          xmlParserInputPtr value);
00503 XMLPUBFUN xmlParserInputPtr XMLCALL inputPop        (xmlParserCtxtPtr ctxt);
00504 XMLPUBFUN const xmlChar * XMLCALL   namePop         (xmlParserCtxtPtr ctxt);
00505 XMLPUBFUN int XMLCALL           namePush        (xmlParserCtxtPtr ctxt,
00506                          const xmlChar *value);
00507 
00508 /*
00509  * other commodities shared between parser.c and parserInternals.
00510  */
00511 XMLPUBFUN int XMLCALL           xmlSkipBlankChars   (xmlParserCtxtPtr ctxt);
00512 XMLPUBFUN int XMLCALL           xmlStringCurrentChar    (xmlParserCtxtPtr ctxt,
00513                          const xmlChar *cur,
00514                          int *len);
00515 XMLPUBFUN void XMLCALL          xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);
00516 XMLPUBFUN int XMLCALL           xmlCheckLanguageID  (const xmlChar *lang);
00517 
00518 /*
00519  * Really core function shared with HTML parser.
00520  */
00521 XMLPUBFUN int XMLCALL           xmlCurrentChar      (xmlParserCtxtPtr ctxt,
00522                          int *len);
00523 XMLPUBFUN int XMLCALL       xmlCopyCharMultiByte    (xmlChar *out,
00524                          int val);
00525 XMLPUBFUN int XMLCALL           xmlCopyChar     (int len,
00526                          xmlChar *out,
00527                          int val);
00528 XMLPUBFUN void XMLCALL          xmlNextChar     (xmlParserCtxtPtr ctxt);
00529 XMLPUBFUN void XMLCALL          xmlParserInputShrink    (xmlParserInputPtr in);
00530 
00531 #ifdef LIBXML_HTML_ENABLED
00532 /*
00533  * Actually comes from the HTML parser but launched from the init stuff.
00534  */
00535 XMLPUBFUN void XMLCALL          htmlInitAutoClose   (void);
00536 XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename,
00537                                              const char *encoding);
00538 #endif
00539 
00540 /*
00541  * Specific function to keep track of entities references
00542  * and used by the XSLT debugger.
00543  */
00544 #ifdef LIBXML_LEGACY_ENABLED
00545 
00554 typedef void    (*xmlEntityReferenceFunc)   (xmlEntityPtr ent,
00555                          xmlNodePtr firstNode,
00556                          xmlNodePtr lastNode);
00557   
00558 XMLPUBFUN void XMLCALL      xmlSetEntityReferenceFunc   (xmlEntityReferenceFunc func);
00559 
00560 XMLPUBFUN xmlChar * XMLCALL     
00561             xmlParseQuotedString    (xmlParserCtxtPtr ctxt);
00562 XMLPUBFUN void XMLCALL
00563                         xmlParseNamespace       (xmlParserCtxtPtr ctxt);
00564 XMLPUBFUN xmlChar * XMLCALL     
00565             xmlNamespaceParseNSDef  (xmlParserCtxtPtr ctxt);
00566 XMLPUBFUN xmlChar * XMLCALL     
00567             xmlScanName     (xmlParserCtxtPtr ctxt);
00568 XMLPUBFUN xmlChar * XMLCALL     
00569             xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt);
00570 XMLPUBFUN void XMLCALL  xmlParserHandleReference(xmlParserCtxtPtr ctxt);
00571 XMLPUBFUN xmlChar * XMLCALL     
00572             xmlNamespaceParseQName  (xmlParserCtxtPtr ctxt,
00573                          xmlChar **prefix);
00577 XMLPUBFUN xmlChar * XMLCALL
00578         xmlDecodeEntities       (xmlParserCtxtPtr ctxt,
00579                          int len,
00580                          int what,
00581                          xmlChar end,
00582                          xmlChar  end2,
00583                          xmlChar end3);
00584 XMLPUBFUN void XMLCALL          
00585             xmlHandleEntity     (xmlParserCtxtPtr ctxt,
00586                          xmlEntityPtr entity);
00587 
00588 #endif /* LIBXML_LEGACY_ENABLED */
00589 
00590 #ifdef IN_LIBXML
00591 /*
00592  * internal only
00593  */
00594 XMLPUBFUN void XMLCALL
00595     xmlErrMemory        (xmlParserCtxtPtr ctxt,
00596                  const char *extra);
00597 #endif
00598 
00599 #ifdef __cplusplus
00600 }
00601 #endif
00602 #endif /* __XML_PARSER_INTERNALS_H__ */
footer
 SourceForge.net Logo