webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parserInternals.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parserInternals.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,590 @@
+/*
+ * Summary: internals routines exported by the parser.
+ * Description: this module exports a number of internal parsing routines
+ *              they are not really all intended for applications but
+ *              can prove useful doing low level processing.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Daniel Veillard
+ */
+
+#ifndef __XML_PARSER_INTERNALS_H__
+#define __XML_PARSER_INTERNALS_H__
+
+//#include "Libxml2_xmlversion.h"
+#include "Libxml2_parser.h"
+//#include "Libxml2_HTMLparser.h" //removed from XML Engine
+#include "Libxml2_chvalid.h"
+
+#pragma warning(disable: 4127 4132)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//TODO: OPTIMIZE: Select more reasonable MAX length value for names!
+ /**
+  * XML_MAX_NAMELEN:
+  *
+  * Identifiers can be longer, but this will be more costly
+  * at runtime.
+  */
+#define XML_MAX_NAMELEN 100
+
+/**
+ * INPUT_CHUNK:
+ *
+ * The parser tries to always have that amount of input ready.
+ * One of the point is providing context when reporting errors.
+ */
+#define INPUT_CHUNK 250
+
+/**
+ * MIN_STACK_THRESHOLD:
+ *
+ * The safty buffer that defines number of bytes from stack overflow.
+ */
+#define MIN_STACK_THRESHOLD 600
+
+/**
+ * MAX_STACK_THRESHOLD:
+ *
+ * The safty buffer that defines number of bytes from stack overflow.
+ * This value is used for SAX parsing - buffer is bigger to account 
+ * for stack that might be allocated during user callbacks
+ */
+#define MAX_STACK_THRESHOLD 1000
+
+/************************************************************************
+ *                                                                      *
+ * UNICODE version of the macros.                                       *
+ *                                                                      *
+ ************************************************************************/
+/**
+ * IS_BYTE_CHAR:
+ * @c:  an byte value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ * [2] Char ::= #x9 | #xA | #xD | [#x20...]
+ * any byte character in the accepted range
+ */
+#define IS_BYTE_CHAR(c)  xmlIsChar_ch(c)
+
+/**
+ * IS_CHAR:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
+ *                  | [#x10000-#x10FFFF]
+ * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
+ */
+#define IS_CHAR(c)   xmlIsCharQ(c)
+
+/**
+ * IS_CHAR_CH:
+ * @c: an xmlChar (usually an unsigned char)
+ *
+ * Behaves like IS_CHAR on single-byte value
+ */
+#define IS_CHAR_CH(c)  xmlIsChar_ch(c)
+
+/**
+ * IS_BLANK:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ * [3] S ::= (#x20 | #x9 | #xD | #xA)+
+ */
+#define IS_BLANK(c)  xmlIsBlankQ(c)
+
+/**
+ * IS_BLANK_CH:
+ * @c:  an xmlChar value (normally unsigned char)
+ *
+ * Behaviour same as IS_BLANK
+ *
+ * OOM: never
+ */
+#define IS_BLANK_CH(c)  xmlIsBlank_ch(c)
+
+/**
+ * IS_BASECHAR:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ * [85] BaseChar ::= ... long list see REC ...
+ */
+#define IS_BASECHAR(c) xmlIsBaseCharQ(c)
+
+/**
+ * IS_DIGIT:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ * [88] Digit ::= ... long list see REC ...
+ */
+#define IS_DIGIT(c) xmlIsDigitQ(c)
+
+/**
+ * IS_DIGIT_CH:
+ * @c:  an xmlChar value (usually an unsigned char)
+ *
+ * Behaves like IS_DIGIT but with a single byte argument
+ */
+#define IS_DIGIT_CH(c)  xmlIsDigit_ch(c)
+
+/**
+ * IS_COMBINING:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ * [87] CombiningChar ::= ... long list see REC ...
+ */
+#define IS_COMBINING(c) xmlIsCombiningQ(c)
+
+/**
+ * IS_COMBINING_CH:
+ * @c:  an xmlChar (usually an unsigned char)
+ *
+ * Always false (all combining chars > 0xff)
+ */
+#define IS_COMBINING_CH(c) 0
+
+/**
+ * IS_EXTENDER:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ *
+ * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 |
+ *                   #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] |
+ *                   [#x309D-#x309E] | [#x30FC-#x30FE]
+ */
+#define IS_EXTENDER(c) xmlIsExtenderQ(c)
+
+/**
+ * IS_EXTENDER_CH:
+ * @c:  an xmlChar value (usually an unsigned char)
+ *
+ * Behaves like IS_EXTENDER but with a single-byte argument
+ */
+#define IS_EXTENDER_CH(c)  xmlIsExtender_ch(c)
+
+/**
+ * IS_IDEOGRAPHIC:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ *
+ * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
+ */
+#define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
+
+/**
+ * IS_LETTER:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ *
+ * [84] Letter ::= BaseChar | Ideographic
+ */
+#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
+
+/**
+ * IS_LETTER_CH:
+ * @c:  an xmlChar value (normally unsigned char)
+ *
+ * Macro behaves like IS_LETTER, but only check base chars
+ *
+ */
+#define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
+/**
+ * IS_PUBIDCHAR:
+ * @c:  an UNICODE value (int)
+ *
+ * Macro to check the following production in the XML spec:
+ *
+ *
+ * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
+ */
+#define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c)
+
+/**
+ * IS_PUBIDCHAR_CH:
+ * @c:  an xmlChar value (normally unsigned char)
+ *
+ * Same as IS_PUBIDCHAR but for single-byte value
+ */
+#define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
+
+/**
+ * SKIP_EOL:
+ * @p:  and UTF8 string pointer
+ *
+ * Skips the end of line chars.
+ */
+#define SKIP_EOL(p)                             \
+    if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; }          \
+    if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; }
+
+/**
+ * MOVETO_ENDTAG:
+ * @p:  and UTF8 string pointer
+ *
+ * Skips to the next '>' char.
+ */
+#define MOVETO_ENDTAG(p)                        \
+    while ((*p) && (*(p) != '>')) (p)++
+
+/**
+ * MOVETO_STARTTAG:
+ * @p:  and UTF8 string pointer
+ *
+ * Skips to the next '<' char.
+ */
+#define MOVETO_STARTTAG(p)                      \
+    while ((*p) && (*(p) != '<')) (p)++
+
+/**
+ * Global constants used for predefined strings.
+ */
+XMLPUBVAR const xmlChar xmlStringText[];
+XMLPUBVAR const xmlChar xmlStringTextNoenc[];
+XMLPUBVAR const xmlChar xmlStringComment[];
+
+/*
+ * Function to finish the work of the macros where needed.
+ */
+XMLPUBFUN int XMLCALL                   xmlIsLetter     (int c);
+
+/**
+ * Parser context.
+ */
+XMLPUBFUN xmlParserCtxtPtr XMLCALL  
+            xmlCreateFileParserCtxt (const char *filename);
+XMLPUBFUN xmlParserCtxtPtr XMLCALL  
+            xmlCreateURLParserCtxt  (const char *filename,
+                         int options);
+XMLPUBFUN xmlParserCtxtPtr XMLCALL  
+            xmlCreateMemoryParserCtxt(const char *buffer,
+                         int size);
+XMLPUBFUN xmlParserCtxtPtr XMLCALL  
+            xmlCreateEntityParserCtxt(const xmlChar *URL,
+                         const xmlChar *ID,
+                         const xmlChar *base);
+XMLPUBFUN int XMLCALL           
+            xmlSwitchEncoding   (xmlParserCtxtPtr ctxt,
+                         xmlCharEncoding enc);
+XMLPUBFUN int XMLCALL           
+            xmlSwitchToEncoding (xmlParserCtxtPtr ctxt,
+                     xmlCharEncodingHandlerPtr handler);
+XMLPUBFUN int XMLCALL           
+            xmlSwitchInputEncoding  (xmlParserCtxtPtr ctxt,
+                         xmlParserInputPtr input,
+                     xmlCharEncodingHandlerPtr handler);
+
+#ifdef IN_LIBXML
+/* internal error reporting */
+XMLPUBFUN void XMLCALL
+            __xmlErrEncoding    (xmlParserCtxtPtr ctxt,
+                         xmlParserErrors error,
+                         const char *msg,
+                         const xmlChar * str1,
+                         const xmlChar * str2);
+#endif
+/**
+ * Entities
+ */
+XMLPUBFUN void XMLCALL          
+            xmlHandleEntity     (xmlParserCtxtPtr ctxt,
+                         xmlEntityPtr entity);
+
+/**
+ * Input Streams.
+ */
+XMLPUBFUN xmlParserInputPtr XMLCALL 
+            xmlNewStringInputStream (xmlParserCtxtPtr ctxt,
+                         const xmlChar *buffer);
+XMLPUBFUN xmlParserInputPtr XMLCALL 
+            xmlNewEntityInputStream (xmlParserCtxtPtr ctxt,
+                         xmlEntityPtr entity);
+XMLPUBFUN void XMLCALL          
+            xmlPushInput        (xmlParserCtxtPtr ctxt,
+                         xmlParserInputPtr input);
+XMLPUBFUN xmlChar XMLCALL           
+            xmlPopInput     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlFreeInputStream  (xmlParserInputPtr input);
+XMLPUBFUN xmlParserInputPtr XMLCALL 
+            xmlNewInputFromFile (xmlParserCtxtPtr ctxt,
+                         const char *filename);
+XMLPUBFUN xmlParserInputPtr XMLCALL 
+            xmlNewInputStream   (xmlParserCtxtPtr ctxt);
+
+/**
+ * Namespaces.
+ */
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlSplitQName       (xmlParserCtxtPtr ctxt,
+                         const xmlChar *name,
+                         xmlChar **prefix);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlNamespaceParseQName  (xmlParserCtxtPtr ctxt,
+                         xmlChar **prefix);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlNamespaceParseNSDef  (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseQuotedString    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseNamespace   (xmlParserCtxtPtr ctxt);
+
+/**
+ * Generic production rules.
+ */
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlScanName     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN const xmlChar * XMLCALL       
+            xmlParseName        (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseNmtoken     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseEntityValue (xmlParserCtxtPtr ctxt,
+                         xmlChar **orig);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseAttValue    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseSystemLiteral   (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParsePubidLiteral    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseCharData    (xmlParserCtxtPtr ctxt,
+                         int cdata);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseExternalID  (xmlParserCtxtPtr ctxt,
+                         xmlChar **publicID,
+                         int strict);
+XMLPUBFUN void XMLCALL          
+            xmlParseComment     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN const xmlChar * XMLCALL       
+            xmlParsePITarget    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParsePI      (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseNotationDecl    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseEntityDecl  (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           
+            xmlParseDefaultDecl (xmlParserCtxtPtr ctxt,
+                         xmlChar **value);
+XMLPUBFUN xmlEnumerationPtr XMLCALL 
+            xmlParseNotationType    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlEnumerationPtr XMLCALL 
+            xmlParseEnumerationType (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           
+            xmlParseEnumeratedType  (xmlParserCtxtPtr ctxt,
+                         xmlEnumerationPtr *tree);
+XMLPUBFUN int XMLCALL           
+            xmlParseAttributeType   (xmlParserCtxtPtr ctxt,
+                         xmlEnumerationPtr *tree);
+XMLPUBFUN void XMLCALL          
+            xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlElementContentPtr XMLCALL  
+            xmlParseElementMixedContentDecl
+                        (xmlParserCtxtPtr ctxt,
+                         int inputchk);
+XMLPUBFUN xmlElementContentPtr XMLCALL  
+            xmlParseElementChildrenContentDecl
+                        (xmlParserCtxtPtr ctxt,
+                         int inputchk);
+XMLPUBFUN int XMLCALL           
+            xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
+                         const xmlChar *name,
+                         xmlElementContentPtr *result);
+XMLPUBFUN int XMLCALL           
+            xmlParseElementDecl (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseMarkupDecl  (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           
+            xmlParseCharRef     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlEntityPtr XMLCALL      
+            xmlParseEntityRef   (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseReference   (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParsePEReference (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt);
+XMLPUBFUN const xmlChar * XMLCALL       
+            xmlParseAttribute   (xmlParserCtxtPtr ctxt,
+                         xmlChar **value);
+XMLPUBFUN const xmlChar * XMLCALL       
+            xmlParseStartTag    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseEndTag      (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseCDSect      (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseContent     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseElement     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseVersionNum  (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseVersionInfo (xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL     
+            xmlParseEncName     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN const xmlChar * XMLCALL       
+            xmlParseEncodingDecl    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           
+            xmlParseSDDecl      (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseXMLDecl     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseTextDecl    (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseMisc        (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          
+            xmlParseExternalSubset  (xmlParserCtxtPtr ctxt,
+                         const xmlChar *ExternalID,
+                         const xmlChar *SystemID);
+/**
+ * XML_SUBSTITUTE_NONE:
+ *
+ * If no entities need to be substituted.
+ */
+#define XML_SUBSTITUTE_NONE 0
+/**
+ * XML_SUBSTITUTE_REF:
+ *
+ * Whether general entities need to be substituted.
+ */
+#define XML_SUBSTITUTE_REF  1
+/**
+ * XML_SUBSTITUTE_PEREF:
+ *
+ * Whether parameter entities need to be substituted.
+ */
+#define XML_SUBSTITUTE_PEREF    2
+/**
+ * XML_SUBSTITUTE_BOTH:
+ *
+ * Both general and parameter entities need to be substituted.
+ */
+#define XML_SUBSTITUTE_BOTH     3
+
+XMLPUBFUN xmlChar * XMLCALL
+        xmlDecodeEntities       (xmlParserCtxtPtr ctxt,
+                         int len,
+                         int what,
+                         xmlChar end,
+                         xmlChar  end2,
+                         xmlChar end3);
+XMLPUBFUN xmlChar * XMLCALL
+        xmlStringDecodeEntities     (xmlParserCtxtPtr ctxt,
+                         const xmlChar *str,
+                         int what,
+                         xmlChar end,
+                         xmlChar  end2,
+                         xmlChar end3);
+XMLPUBFUN xmlChar * XMLCALL
+        xmlStringLenDecodeEntities  (xmlParserCtxtPtr ctxt,
+                         const xmlChar *str,
+                         int len,
+                         int what,
+                         xmlChar end,
+                         xmlChar  end2,
+                         xmlChar end3);
+
+/*
+ * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
+ */
+XMLPUBFUN int XMLCALL           nodePush        (xmlParserCtxtPtr ctxt,
+                         xmlNodePtr value);
+XMLPUBFUN xmlNodePtr XMLCALL        nodePop         (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           inputPush       (xmlParserCtxtPtr ctxt,
+                         xmlParserInputPtr value);
+XMLPUBFUN xmlParserInputPtr XMLCALL inputPop        (xmlParserCtxtPtr ctxt);
+XMLPUBFUN const xmlChar * XMLCALL   namePop         (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           namePush        (xmlParserCtxtPtr ctxt,
+                         const xmlChar *value);
+
+/*
+ * other commodities shared between parser.c and parserInternals.
+ */
+XMLPUBFUN int XMLCALL           xmlSkipBlankChars   (xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           xmlStringCurrentChar    (xmlParserCtxtPtr ctxt,
+                         const xmlChar *cur,
+                         int *len);
+XMLPUBFUN void XMLCALL          xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          xmlParserHandleReference(xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL           xmlCheckLanguageID  (const xmlChar *lang);
+
+/*
+ * Really core function shared with HTML parser.
+ */
+XMLPUBFUN int XMLCALL           xmlCurrentChar      (xmlParserCtxtPtr ctxt,
+                         int *len);
+XMLPUBFUN int XMLCALL       xmlCopyCharMultiByte    (xmlChar *out,
+                         int val);
+XMLPUBFUN int XMLCALL           xmlCopyChar     (int len,
+                         xmlChar *out,
+                         int val);
+XMLPUBFUN void XMLCALL          xmlNextChar     (xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL          xmlParserInputShrink    (xmlParserInputPtr in);
+
+#ifdef LIBXML_HTML_ENABLED
+/*
+ * Actually comes from the HTML parser but launched from the init stuff.
+ */
+XMLPUBFUN void XMLCALL            htmlInitAutoClose   (void);
+//XMLPUBFUN htmlParserCtxtPtr XMLCALL   htmlCreateFileParserCtxt(const char *filename,
+//                                           const char *encoding);
+
+#endif
+
+/*
+ * Specific function to keep track of entities references
+ * and used by the XSLT debugger.
+ */
+/**
+ * xmlEntityReferenceFunc:
+ * @ent: the entity
+ * @firstNode:  the fist node in the chunk
+ * @lastNode:  the last nod in the chunk
+ *
+ * Callback function used when one needs to be able to track back the
+ * provenance of a chunk of nodes inherited from an entity replacement.
+ */
+typedef void    (*xmlEntityReferenceFunc)   (xmlEntityPtr ent,
+                         xmlNodePtr firstNode,
+                         xmlNodePtr lastNode);
+
+XMLPUBFUN void XMLCALL      xmlSetEntityReferenceFunc   (xmlEntityReferenceFunc func);
+
+#ifdef IN_LIBXML
+/*
+ * internal only
+ */
+XMLPUBFUN void XMLCALL
+    xmlErrMemory        (xmlParserCtxtPtr ctxt,
+                 const char *extra);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __XML_PARSER_INTERNALS_H__ */
+