summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>1999-02-28 21:54:31 +0000
committerDaniel Veillard <veillard@src.gnome.org>1999-02-28 21:54:31 +0000
commitd692aa49bd18cfd649372e0a85c54e2a800d244e (patch)
tree3d76f877c195d223ed37892734275f445ef226ef
parent047434332fb064853c03bf7065d2ba178c3dd9db (diff)
downloadlibxml2-d692aa49bd18cfd649372e0a85c54e2a800d244e.tar.gz
Added call to create/free parser contexts, + doc, Daniel.
-rw-r--r--ChangeLog6
-rw-r--r--doc/html/gnome-xml-entities.html48
-rw-r--r--doc/html/gnome-xml-error.html12
-rw-r--r--doc/html/gnome-xml-parser.html176
-rw-r--r--doc/html/gnome-xml-parserinternals.html455
-rw-r--r--doc/html/gnome-xml-tree.html168
-rw-r--r--doc/html/gnome-xml-valid.html56
-rw-r--r--doc/html/index.sgml5
-rw-r--r--include/libxml/parser.h2
-rw-r--r--include/libxml/parserInternals.h12
-rw-r--r--parser.c253
-rw-r--r--parser.h2
-rw-r--r--parserInternals.h12
13 files changed, 876 insertions, 331 deletions
diff --git a/ChangeLog b/ChangeLog
index 2a2f843e..58a38513 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun Feb 28 22:51:33 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
+
+ * parser.c, parser.h, parserInternals.h: added a few extra
+ internal calls to allocate and free parser contexts ...
+ * doc/html/* : updated accordingly
+
Thu Feb 25 11:52:24 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
* configure.in, Makefile.am, doc/makefile.am : General changes for
diff --git a/doc/html/gnome-xml-entities.html b/doc/html/gnome-xml-entities.html
index 1e9e7ed6..eccca5ea 100644
--- a/doc/html/gnome-xml-entities.html
+++ b/doc/html/gnome-xml-entities.html
@@ -65,7 +65,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN2955"
+NAME="AEN2972"
></A
><H2
>Name</H2
@@ -73,7 +73,7 @@ NAME="AEN2955"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN2958"
+NAME="AEN2975"
></A
><H2
>Synopsis</H2
@@ -276,7 +276,7 @@ HREF="gnome-xml-entities.html#XMLENTITYPTR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3010"
+NAME="AEN3027"
></A
><H2
>Description</H2
@@ -286,14 +286,14 @@ NAME="AEN3010"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3013"
+NAME="AEN3030"
></A
><H2
>Details</H2
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3015"
+NAME="AEN3032"
></A
><H3
><A
@@ -319,7 +319,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3020"
+NAME="AEN3037"
></A
><H3
><A
@@ -345,7 +345,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3025"
+NAME="AEN3042"
></A
><H3
><A
@@ -371,7 +371,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3030"
+NAME="AEN3047"
></A
><H3
><A
@@ -397,7 +397,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3035"
+NAME="AEN3052"
></A
><H3
><A
@@ -423,7 +423,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3040"
+NAME="AEN3057"
></A
><H3
><A
@@ -449,7 +449,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3045"
+NAME="AEN3062"
></A
><H3
><A
@@ -475,7 +475,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3050"
+NAME="AEN3067"
></A
><H3
><A
@@ -501,7 +501,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3055"
+NAME="AEN3072"
></A
><H3
><A
@@ -527,7 +527,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3060"
+NAME="AEN3077"
></A
><H3
><A
@@ -692,7 +692,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3100"
+NAME="AEN3117"
></A
><H3
><A
@@ -857,7 +857,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3140"
+NAME="AEN3157"
></A
><H3
><A
@@ -938,7 +938,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3161"
+NAME="AEN3178"
></A
><H3
><A
@@ -1042,7 +1042,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3187"
+NAME="AEN3204"
></A
><H3
><A
@@ -1145,7 +1145,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3213"
+NAME="AEN3230"
></A
><H3
><A
@@ -1254,7 +1254,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3241"
+NAME="AEN3258"
></A
><H3
><A
@@ -1315,7 +1315,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3257"
+NAME="AEN3274"
></A
><H3
><A
@@ -1396,7 +1396,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3278"
+NAME="AEN3295"
></A
><H3
><A
@@ -1459,7 +1459,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3294"
+NAME="AEN3311"
></A
><H3
><A
@@ -1525,7 +1525,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3311"
+NAME="AEN3328"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-error.html b/doc/html/gnome-xml-error.html
index 1c09efbc..afb92b70 100644
--- a/doc/html/gnome-xml-error.html
+++ b/doc/html/gnome-xml-error.html
@@ -65,7 +65,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN3851"
+NAME="AEN3868"
></A
><H2
>Name</H2
@@ -73,7 +73,7 @@ NAME="AEN3851"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN3854"
+NAME="AEN3871"
></A
><H2
>Synopsis</H2
@@ -113,7 +113,7 @@ HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3861"
+NAME="AEN3878"
></A
><H2
>Description</H2
@@ -123,14 +123,14 @@ NAME="AEN3861"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3864"
+NAME="AEN3881"
></A
><H2
>Details</H2
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3866"
+NAME="AEN3883"
></A
><H3
><A
@@ -230,7 +230,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3890"
+NAME="AEN3907"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-parser.html b/doc/html/gnome-xml-parser.html
index c274be55..cbe2aac3 100644
--- a/doc/html/gnome-xml-parser.html
+++ b/doc/html/gnome-xml-parser.html
@@ -92,6 +92,13 @@ CLASS="SYNOPSIS"
HREF="gnome-xml-parser.html#XML-DEFAULT-VERSION"
>XML_DEFAULT_VERSION</A
>
+void (<A
+HREF="gnome-xml-parser.html#XMLPARSERINPUTDEALLOCATE"
+>*xmlParserInputDeallocate</A
+>) (<A
+HREF="gnome-xml-tree.html#CHAR"
+>CHAR</A
+>*);
typedef <A
HREF="gnome-xml-parser.html#XMLPARSERINPUTPTR"
>xmlParserInputPtr</A
@@ -600,7 +607,7 @@ HREF="gnome-xml-parser.html#XMLDEFAULTSAXHANDLERINIT"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN151"
+NAME="AEN153"
></A
><H2
>Description</H2
@@ -610,14 +617,14 @@ NAME="AEN151"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN154"
+NAME="AEN156"
></A
><H2
>Details</H2
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN156"
+NAME="AEN158"
></A
><H3
><A
@@ -643,7 +650,68 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN161"
+NAME="AEN163"
+></A
+><H3
+><A
+NAME="XMLPARSERINPUTDEALLOCATE"
+></A
+>xmlParserInputDeallocate()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E8E8F8"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void (*xmlParserInputDeallocate) (<A
+HREF="gnome-xml-tree.html#CHAR"
+>CHAR</A
+>*);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFE0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>Param1</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN178"
></A
><H3
><A
@@ -669,7 +737,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN166"
+NAME="AEN183"
></A
><H3
><A
@@ -695,7 +763,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN171"
+NAME="AEN188"
></A
><H3
><A
@@ -721,7 +789,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN176"
+NAME="AEN193"
></A
><H3
><A
@@ -747,7 +815,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN181"
+NAME="AEN198"
></A
><H3
><A
@@ -773,7 +841,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN186"
+NAME="AEN203"
></A
><H3
><A
@@ -799,7 +867,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN191"
+NAME="AEN208"
></A
><H3
><A
@@ -825,7 +893,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN196"
+NAME="AEN213"
></A
><H3
><A
@@ -851,7 +919,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN201"
+NAME="AEN218"
></A
><H3
><A
@@ -972,7 +1040,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN231"
+NAME="AEN248"
></A
><H3
><A
@@ -1096,7 +1164,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN261"
+NAME="AEN278"
></A
><H3
><A
@@ -1241,7 +1309,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN296"
+NAME="AEN313"
></A
><H3
><A
@@ -1323,7 +1391,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN316"
+NAME="AEN333"
></A
><H3
><A
@@ -1384,7 +1452,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN331"
+NAME="AEN348"
></A
><H3
><A
@@ -1445,7 +1513,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN346"
+NAME="AEN363"
></A
><H3
><A
@@ -1527,7 +1595,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN366"
+NAME="AEN383"
></A
><H3
><A
@@ -1609,7 +1677,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN386"
+NAME="AEN403"
></A
><H3
><A
@@ -1712,7 +1780,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN411"
+NAME="AEN428"
></A
><H3
><A
@@ -1830,7 +1898,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN439"
+NAME="AEN456"
></A
><H3
><A
@@ -1948,7 +2016,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN467"
+NAME="AEN484"
></A
><H3
><A
@@ -2051,7 +2119,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN492"
+NAME="AEN509"
></A
><H3
><A
@@ -2148,7 +2216,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN515"
+NAME="AEN532"
></A
><H3
><A
@@ -2245,7 +2313,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN538"
+NAME="AEN555"
></A
><H3
><A
@@ -2342,7 +2410,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN561"
+NAME="AEN578"
></A
><H3
><A
@@ -2368,7 +2436,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN566"
+NAME="AEN583"
></A
><H3
><A
@@ -2449,7 +2517,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN587"
+NAME="AEN604"
></A
><H3
><A
@@ -2553,7 +2621,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN613"
+NAME="AEN630"
></A
><H3
><A
@@ -2655,7 +2723,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN639"
+NAME="AEN656"
></A
><H3
><A
@@ -2754,7 +2822,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN664"
+NAME="AEN681"
></A
><H3
><A
@@ -2871,7 +2939,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN693"
+NAME="AEN710"
></A
><H3
><A
@@ -2949,7 +3017,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN713"
+NAME="AEN730"
></A
><H3
><A
@@ -3051,7 +3119,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN739"
+NAME="AEN756"
></A
><H3
><A
@@ -3176,7 +3244,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN770"
+NAME="AEN787"
></A
><H3
><A
@@ -3257,7 +3325,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN791"
+NAME="AEN808"
></A
><H3
><A
@@ -3353,7 +3421,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN815"
+NAME="AEN832"
></A
><H3
><A
@@ -3432,7 +3500,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN835"
+NAME="AEN852"
></A
><H3
><A
@@ -3514,7 +3582,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN856"
+NAME="AEN873"
></A
><H3
><A
@@ -3611,7 +3679,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN880"
+NAME="AEN897"
></A
><H3
><A
@@ -3691,7 +3759,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN900"
+NAME="AEN917"
></A
><H3
><A
@@ -3775,7 +3843,7 @@ as a result of the parsing.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN922"
+NAME="AEN939"
></A
><H3
><A
@@ -3898,7 +3966,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN952"
+NAME="AEN969"
></A
><H3
><A
@@ -4038,7 +4106,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN986"
+NAME="AEN1003"
></A
><H3
><A
@@ -4159,7 +4227,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1015"
+NAME="AEN1032"
></A
><H3
><A
@@ -4222,7 +4290,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1031"
+NAME="AEN1048"
></A
><H3
><A
@@ -4285,7 +4353,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1047"
+NAME="AEN1064"
></A
><H3
><A
@@ -4389,7 +4457,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1072"
+NAME="AEN1089"
></A
><H3
><A
@@ -4492,7 +4560,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1098"
+NAME="AEN1115"
></A
><H3
><A
@@ -4555,7 +4623,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1114"
+NAME="AEN1131"
></A
><H3
><A
@@ -4619,7 +4687,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1130"
+NAME="AEN1147"
></A
><H3
><A
@@ -4722,7 +4790,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1156"
+NAME="AEN1173"
></A
><H3
><A
@@ -4806,7 +4874,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1177"
+NAME="AEN1194"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-parserinternals.html b/doc/html/gnome-xml-parserinternals.html
index 28208887..df0e2faa 100644
--- a/doc/html/gnome-xml-parserinternals.html
+++ b/doc/html/gnome-xml-parserinternals.html
@@ -59,7 +59,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN3919"
+NAME="AEN3936"
></A
><H2
>Name</H2
@@ -67,7 +67,7 @@ NAME="AEN3919"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN3922"
+NAME="AEN3939"
></A
><H2
>Synopsis</H2
@@ -82,6 +82,38 @@ CELLPADDING="6"
CLASS="SYNOPSIS"
>&#13;
+<A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> <A
+HREF="gnome-xml-parserinternals.html#XMLCREATEDOCPARSERCTXT"
+>xmlCreateDocParserCtxt</A
+> (<A
+HREF="gnome-xml-tree.html#CHAR"
+>CHAR</A
+> *cur);
+<A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> <A
+HREF="gnome-xml-parserinternals.html#XMLCREATEFILEPARSERCTXT"
+>xmlCreateFileParserCtxt</A
+> (const char *filename);
+<A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> <A
+HREF="gnome-xml-parserinternals.html#XMLCREATEMEMORYPARSERCTXT"
+>xmlCreateMemoryParserCtxt</A
+> (char *buffer,
+ int size);
+void <A
+HREF="gnome-xml-parserinternals.html#XMLFREEPARSERCTXT"
+>xmlFreeParserCtxt</A
+> (<A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> ctxt);
void <A
HREF="gnome-xml-parserinternals.html#XMLHANDLEENTITY"
>xmlHandleEntity</A
@@ -558,7 +590,7 @@ HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN4060"
+NAME="AEN4086"
></A
><H2
>Description</H2
@@ -568,14 +600,333 @@ NAME="AEN4060"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN4063"
+NAME="AEN4089"
></A
><H2
>Details</H2
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4065"
+NAME="AEN4091"
+></A
+><H3
+><A
+NAME="XMLCREATEDOCPARSERCTXT"
+></A
+>xmlCreateDocParserCtxt()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E8E8F8"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> xmlCreateDocParserCtxt (<A
+HREF="gnome-xml-tree.html#CHAR"
+>CHAR</A
+> *cur);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFE0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>cur</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN4111"
+></A
+><H3
+><A
+NAME="XMLCREATEFILEPARSERCTXT"
+></A
+>xmlCreateFileParserCtxt()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E8E8F8"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> xmlCreateFileParserCtxt (const char *filename);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Create a parser context for a file content.
+Automatic support for ZLIB/Compress compressed document is provided
+by default if found at compile-time.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFE0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>filename</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the filename</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>the new parser context or NULL</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN4131"
+></A
+><H3
+><A
+NAME="XMLCREATEMEMORYPARSERCTXT"
+></A
+>xmlCreateMemoryParserCtxt()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E8E8F8"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> xmlCreateMemoryParserCtxt (char *buffer,
+ int size);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Create a parser context for an XML in-memory document.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFE0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>buffer</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> an pointer to a char array</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>size</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> the siwe of the array</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>the new parser context or NULL</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN4155"
+></A
+><H3
+><A
+NAME="XMLFREEPARSERCTXT"
+></A
+>xmlFreeParserCtxt()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E8E8F8"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void xmlFreeParserCtxt (<A
+HREF="gnome-xml-parser.html#XMLPARSERCTXTPTR"
+>xmlParserCtxtPtr</A
+> ctxt);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Free all the memory used by a parser context. However the parsed
+document in ctxt-&gt;doc is not freed.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFE0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>ctxt</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+> an XML parser context</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN4171"
></A
><H3
><A
@@ -661,7 +1012,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4086"
+NAME="AEN4192"
></A
><H3
><A
@@ -747,7 +1098,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4109"
+NAME="AEN4215"
></A
><H3
><A
@@ -856,7 +1207,7 @@ to get the Prefix if any.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4138"
+NAME="AEN4244"
></A
><H3
><A
@@ -941,7 +1292,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4161"
+NAME="AEN4267"
></A
><H3
><A
@@ -1022,7 +1373,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4182"
+NAME="AEN4288"
></A
><H3
><A
@@ -1089,7 +1440,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4199"
+NAME="AEN4305"
></A
><H3
><A
@@ -1177,7 +1528,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4223"
+NAME="AEN4329"
></A
><H3
><A
@@ -1262,7 +1613,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4246"
+NAME="AEN4352"
></A
><H3
><A
@@ -1346,7 +1697,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4268"
+NAME="AEN4374"
></A
><H3
><A
@@ -1430,7 +1781,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4290"
+NAME="AEN4396"
></A
><H3
><A
@@ -1513,7 +1864,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4312"
+NAME="AEN4418"
></A
><H3
><A
@@ -1596,7 +1947,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4334"
+NAME="AEN4440"
></A
><H3
><A
@@ -1680,7 +2031,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4355"
+NAME="AEN4461"
></A
><H3
><A
@@ -1811,7 +2162,7 @@ it is possible to return NULL and have publicID set.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4388"
+NAME="AEN4494"
></A
><H3
><A
@@ -1918,7 +2269,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4415"
+NAME="AEN4521"
></A
><H3
><A
@@ -2001,7 +2352,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4437"
+NAME="AEN4543"
></A
><H3
><A
@@ -2068,7 +2419,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4455"
+NAME="AEN4561"
></A
><H3
><A
@@ -2143,7 +2494,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4475"
+NAME="AEN4581"
></A
><H3
><A
@@ -2218,7 +2569,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4497"
+NAME="AEN4603"
></A
><H3
><A
@@ -2329,7 +2680,7 @@ or XML_ATTRIBUTE_FIXED. </TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4526"
+NAME="AEN4632"
></A
><H3
><A
@@ -2414,7 +2765,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4549"
+NAME="AEN4655"
></A
><H3
><A
@@ -2497,7 +2848,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4571"
+NAME="AEN4677"
></A
><H3
><A
@@ -2600,7 +2951,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4598"
+NAME="AEN4704"
></A
><H3
><A
@@ -2706,7 +3057,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4626"
+NAME="AEN4732"
></A
><H3
><A
@@ -2773,7 +3124,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4644"
+NAME="AEN4750"
></A
><H3
><A
@@ -2865,7 +3216,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4668"
+NAME="AEN4774"
></A
><H3
><A
@@ -2957,7 +3308,7 @@ hierarchy.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4693"
+NAME="AEN4799"
></A
><H3
><A
@@ -3080,7 +3431,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4724"
+NAME="AEN4830"
></A
><H3
><A
@@ -3162,7 +3513,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4746"
+NAME="AEN4852"
></A
><H3
><A
@@ -3230,7 +3581,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4764"
+NAME="AEN4870"
></A
><H3
><A
@@ -3317,7 +3668,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4787"
+NAME="AEN4893"
></A
><H3
><A
@@ -3400,7 +3751,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4809"
+NAME="AEN4915"
></A
><H3
><A
@@ -3484,7 +3835,7 @@ the entity value as the input.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4831"
+NAME="AEN4937"
></A
><H3
><A
@@ -3567,7 +3918,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4853"
+NAME="AEN4959"
></A
><H3
><A
@@ -3633,7 +3984,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4870"
+NAME="AEN4976"
></A
><H3
><A
@@ -3746,7 +4097,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4901"
+NAME="AEN5007"
></A
><H3
><A
@@ -3838,7 +4189,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4927"
+NAME="AEN5033"
></A
><H3
><A
@@ -3951,7 +4302,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4957"
+NAME="AEN5063"
></A
><H3
><A
@@ -4022,7 +4373,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4977"
+NAME="AEN5083"
></A
><H3
><A
@@ -4087,7 +4438,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN4994"
+NAME="AEN5100"
></A
><H3
><A
@@ -4172,7 +4523,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5017"
+NAME="AEN5123"
></A
><H3
><A
@@ -4255,7 +4606,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5039"
+NAME="AEN5145"
></A
><H3
><A
@@ -4340,7 +4691,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5062"
+NAME="AEN5168"
></A
><H3
><A
@@ -4423,7 +4774,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5084"
+NAME="AEN5190"
></A
><H3
><A
@@ -4508,7 +4859,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5107"
+NAME="AEN5213"
></A
><H3
><A
@@ -4589,7 +4940,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5128"
+NAME="AEN5234"
></A
><H3
><A
@@ -4654,7 +5005,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN5145"
+NAME="AEN5251"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-tree.html b/doc/html/gnome-xml-tree.html
index f6cf043b..f687d873 100644
--- a/doc/html/gnome-xml-tree.html
+++ b/doc/html/gnome-xml-tree.html
@@ -65,7 +65,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN1188"
+NAME="AEN1205"
></A
><H2
>Name</H2
@@ -73,7 +73,7 @@ NAME="AEN1188"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN1191"
+NAME="AEN1208"
></A
><H2
>Synopsis</H2
@@ -886,7 +886,7 @@ HREF="gnome-xml-tree.html#XMLSETCOMPRESSMODE"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN1412"
+NAME="AEN1429"
></A
><H2
>Description</H2
@@ -896,14 +896,14 @@ NAME="AEN1412"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN1415"
+NAME="AEN1432"
></A
><H2
>Details</H2
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1417"
+NAME="AEN1434"
></A
><H3
><A
@@ -942,7 +942,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1422"
+NAME="AEN1439"
></A
><H3
><A
@@ -955,7 +955,7 @@ NAME="CHAR"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1426"
+NAME="AEN1443"
></A
><H3
><A
@@ -981,7 +981,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1431"
+NAME="AEN1448"
></A
><H3
><A
@@ -1018,7 +1018,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1436"
+NAME="AEN1453"
></A
><H3
><A
@@ -1049,7 +1049,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1441"
+NAME="AEN1458"
></A
><H3
><A
@@ -1075,7 +1075,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1446"
+NAME="AEN1463"
></A
><H3
><A
@@ -1101,7 +1101,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1451"
+NAME="AEN1468"
></A
><H3
><A
@@ -1132,7 +1132,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1456"
+NAME="AEN1473"
></A
><H3
><A
@@ -1163,7 +1163,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1461"
+NAME="AEN1478"
></A
><H3
><A
@@ -1189,7 +1189,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1466"
+NAME="AEN1483"
></A
><H3
><A
@@ -1220,7 +1220,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1471"
+NAME="AEN1488"
></A
><H3
><A
@@ -1246,7 +1246,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1476"
+NAME="AEN1493"
></A
><H3
><A
@@ -1275,7 +1275,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1481"
+NAME="AEN1498"
></A
><H3
><A
@@ -1301,7 +1301,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1486"
+NAME="AEN1503"
></A
><H3
><A
@@ -1327,7 +1327,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1491"
+NAME="AEN1508"
></A
><H3
><A
@@ -1353,7 +1353,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1496"
+NAME="AEN1513"
></A
><H3
><A
@@ -1379,7 +1379,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1501"
+NAME="AEN1518"
></A
><H3
><A
@@ -1405,7 +1405,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1506"
+NAME="AEN1523"
></A
><H3
><A
@@ -1431,7 +1431,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1511"
+NAME="AEN1528"
></A
><H3
><A
@@ -1457,7 +1457,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1516"
+NAME="AEN1533"
></A
><H3
><A
@@ -1601,7 +1601,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1552"
+NAME="AEN1569"
></A
><H3
><A
@@ -1745,7 +1745,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1588"
+NAME="AEN1605"
></A
><H3
><A
@@ -1808,7 +1808,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1604"
+NAME="AEN1621"
></A
><H3
><A
@@ -1931,7 +1931,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1635"
+NAME="AEN1652"
></A
><H3
><A
@@ -2054,7 +2054,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1666"
+NAME="AEN1683"
></A
><H3
><A
@@ -2117,7 +2117,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1682"
+NAME="AEN1699"
></A
><H3
><A
@@ -2198,7 +2198,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1703"
+NAME="AEN1720"
></A
><H3
><A
@@ -2262,7 +2262,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1719"
+NAME="AEN1736"
></A
><H3
><A
@@ -2385,7 +2385,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1750"
+NAME="AEN1767"
></A
><H3
><A
@@ -2508,7 +2508,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1781"
+NAME="AEN1798"
></A
><H3
><A
@@ -2571,7 +2571,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1797"
+NAME="AEN1814"
></A
><H3
><A
@@ -2634,7 +2634,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1813"
+NAME="AEN1830"
></A
><H3
><A
@@ -2715,7 +2715,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1834"
+NAME="AEN1851"
></A
><H3
><A
@@ -2796,7 +2796,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1855"
+NAME="AEN1872"
></A
><H3
><A
@@ -2877,7 +2877,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1876"
+NAME="AEN1893"
></A
><H3
><A
@@ -2977,7 +2977,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1901"
+NAME="AEN1918"
></A
><H3
><A
@@ -3132,7 +3132,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1939"
+NAME="AEN1956"
></A
><H3
><A
@@ -3246,7 +3246,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN1967"
+NAME="AEN1984"
></A
><H3
><A
@@ -3407,7 +3407,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2006"
+NAME="AEN2023"
></A
><H3
><A
@@ -3509,7 +3509,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2032"
+NAME="AEN2049"
></A
><H3
><A
@@ -3590,7 +3590,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2053"
+NAME="AEN2070"
></A
><H3
><A
@@ -3711,7 +3711,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2083"
+NAME="AEN2100"
></A
><H3
><A
@@ -3810,7 +3810,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2108"
+NAME="AEN2125"
></A
><H3
><A
@@ -3912,7 +3912,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2134"
+NAME="AEN2151"
></A
><H3
><A
@@ -3993,7 +3993,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2155"
+NAME="AEN2172"
></A
><H3
><A
@@ -4095,7 +4095,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2181"
+NAME="AEN2198"
></A
><H3
><A
@@ -4194,7 +4194,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2206"
+NAME="AEN2223"
></A
><H3
><A
@@ -4275,7 +4275,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2227"
+NAME="AEN2244"
></A
><H3
><A
@@ -4356,7 +4356,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2248"
+NAME="AEN2265"
></A
><H3
><A
@@ -4434,7 +4434,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2268"
+NAME="AEN2285"
></A
><H3
><A
@@ -4541,7 +4541,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2295"
+NAME="AEN2312"
></A
><H3
><A
@@ -4604,7 +4604,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2311"
+NAME="AEN2328"
></A
><H3
><A
@@ -4706,7 +4706,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2337"
+NAME="AEN2354"
></A
><H3
><A
@@ -4813,7 +4813,7 @@ CLASS="PARAMETER"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2363"
+NAME="AEN2380"
></A
><H3
><A
@@ -4877,7 +4877,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2379"
+NAME="AEN2396"
></A
><H3
><A
@@ -4940,7 +4940,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2395"
+NAME="AEN2412"
></A
><H3
><A
@@ -5071,7 +5071,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2427"
+NAME="AEN2444"
></A
><H3
><A
@@ -5195,7 +5195,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2458"
+NAME="AEN2475"
></A
><H3
><A
@@ -5279,7 +5279,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2479"
+NAME="AEN2496"
></A
><H3
><A
@@ -5360,7 +5360,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2500"
+NAME="AEN2517"
></A
><H3
><A
@@ -5441,7 +5441,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2521"
+NAME="AEN2538"
></A
><H3
><A
@@ -5564,7 +5564,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2552"
+NAME="AEN2569"
></A
><H3
><A
@@ -5667,7 +5667,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2578"
+NAME="AEN2595"
></A
><H3
><A
@@ -5770,7 +5770,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2604"
+NAME="AEN2621"
></A
><H3
><A
@@ -5891,7 +5891,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2634"
+NAME="AEN2651"
></A
><H3
><A
@@ -6012,7 +6012,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2664"
+NAME="AEN2681"
></A
><H3
><A
@@ -6096,7 +6096,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2685"
+NAME="AEN2702"
></A
><H3
><A
@@ -6203,7 +6203,7 @@ CLASS="PARAMETER"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2711"
+NAME="AEN2728"
></A
><H3
><A
@@ -6287,7 +6287,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2732"
+NAME="AEN2749"
></A
><H3
><A
@@ -6394,7 +6394,7 @@ CLASS="PARAMETER"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2758"
+NAME="AEN2775"
></A
><H3
><A
@@ -6478,7 +6478,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2779"
+NAME="AEN2796"
></A
><H3
><A
@@ -6542,7 +6542,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2795"
+NAME="AEN2812"
></A
><H3
><A
@@ -6603,7 +6603,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2810"
+NAME="AEN2827"
></A
><H3
><A
@@ -6706,7 +6706,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2835"
+NAME="AEN2852"
></A
><H3
><A
@@ -6790,7 +6790,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2856"
+NAME="AEN2873"
></A
><H3
><A
@@ -6887,7 +6887,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2880"
+NAME="AEN2897"
></A
><H3
><A
@@ -6965,7 +6965,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2900"
+NAME="AEN2917"
></A
><H3
><A
@@ -7047,7 +7047,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2920"
+NAME="AEN2937"
></A
><H3
><A
@@ -7105,7 +7105,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN2935"
+NAME="AEN2952"
></A
><H3
><A
diff --git a/doc/html/gnome-xml-valid.html b/doc/html/gnome-xml-valid.html
index b6b6046f..f2b8b892 100644
--- a/doc/html/gnome-xml-valid.html
+++ b/doc/html/gnome-xml-valid.html
@@ -65,7 +65,7 @@ WIDTH="100%"></DIV
><DIV
CLASS="REFNAMEDIV"
><A
-NAME="AEN3342"
+NAME="AEN3359"
></A
><H2
>Name</H2
@@ -73,7 +73,7 @@ NAME="AEN3342"
><DIV
CLASS="REFSYNOPSISDIV"
><A
-NAME="AEN3345"
+NAME="AEN3362"
></A
><H2
>Synopsis</H2
@@ -315,7 +315,7 @@ HREF="gnome-xml-valid.html#XMLATTRIBUTETABLEPTR"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3409"
+NAME="AEN3426"
></A
><H2
>Description</H2
@@ -325,14 +325,14 @@ NAME="AEN3409"
><DIV
CLASS="REFSECT1"
><A
-NAME="AEN3412"
+NAME="AEN3429"
></A
><H2
>Details</H2
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3414"
+NAME="AEN3431"
></A
><H3
><A
@@ -358,7 +358,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3419"
+NAME="AEN3436"
></A
><H3
><A
@@ -384,7 +384,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3424"
+NAME="AEN3441"
></A
><H3
><A
@@ -410,7 +410,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3429"
+NAME="AEN3446"
></A
><H3
><A
@@ -436,7 +436,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3434"
+NAME="AEN3451"
></A
><H3
><A
@@ -462,7 +462,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3439"
+NAME="AEN3456"
></A
><H3
><A
@@ -488,7 +488,7 @@ CLASS="PROGRAMLISTING"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3444"
+NAME="AEN3461"
></A
><H3
><A
@@ -632,7 +632,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3480"
+NAME="AEN3497"
></A
><H3
><A
@@ -713,7 +713,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3501"
+NAME="AEN3518"
></A
><H3
><A
@@ -776,7 +776,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3517"
+NAME="AEN3534"
></A
><H3
><A
@@ -842,7 +842,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3534"
+NAME="AEN3551"
></A
><H3
><A
@@ -941,7 +941,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3559"
+NAME="AEN3576"
></A
><H3
><A
@@ -1022,7 +1022,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3580"
+NAME="AEN3597"
></A
><H3
><A
@@ -1085,7 +1085,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3596"
+NAME="AEN3613"
></A
><H3
><A
@@ -1226,7 +1226,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3631"
+NAME="AEN3648"
></A
><H3
><A
@@ -1307,7 +1307,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3652"
+NAME="AEN3669"
></A
><H3
><A
@@ -1370,7 +1370,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3668"
+NAME="AEN3685"
></A
><H3
><A
@@ -1436,7 +1436,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3685"
+NAME="AEN3702"
></A
><H3
><A
@@ -1518,7 +1518,7 @@ of error.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3706"
+NAME="AEN3723"
></A
><H3
><A
@@ -1581,7 +1581,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3722"
+NAME="AEN3739"
></A
><H3
><A
@@ -1663,7 +1663,7 @@ of error.</TD
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3743"
+NAME="AEN3760"
></A
><H3
><A
@@ -1864,7 +1864,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3792"
+NAME="AEN3809"
></A
><H3
><A
@@ -1945,7 +1945,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3813"
+NAME="AEN3830"
></A
><H3
><A
@@ -2008,7 +2008,7 @@ VALIGN="TOP"
><HR><DIV
CLASS="REFSECT2"
><A
-NAME="AEN3829"
+NAME="AEN3846"
></A
><H3
><A
diff --git a/doc/html/index.sgml b/doc/html/index.sgml
index a8a1de26..e7269da6 100644
--- a/doc/html/index.sgml
+++ b/doc/html/index.sgml
@@ -1,5 +1,6 @@
<ANCHOR id ="GNOME-XML-PARSER" href="gnome-xml/gnome-xml-parser.html">
<ANCHOR id ="XML-DEFAULT-VERSION" href="gnome-xml/gnome-xml-parser.html#XML-DEFAULT-VERSION">
+<ANCHOR id ="XMLPARSERINPUTDEALLOCATE" href="gnome-xml/gnome-xml-parser.html#XMLPARSERINPUTDEALLOCATE">
<ANCHOR id ="XMLPARSERINPUTPTR" href="gnome-xml/gnome-xml-parser.html#XMLPARSERINPUTPTR">
<ANCHOR id ="XMLPARSERNODEINFO" href="gnome-xml/gnome-xml-parser.html#XMLPARSERNODEINFO">
<ANCHOR id ="XMLPARSERNODEINFOSEQ" href="gnome-xml/gnome-xml-parser.html#XMLPARSERNODEINFOSEQ">
@@ -182,6 +183,10 @@
<ANCHOR id ="XMLPARSERERROR" href="gnome-xml/gnome-xml-error.html#XMLPARSERERROR">
<ANCHOR id ="XMLPARSERWARNING" href="gnome-xml/gnome-xml-error.html#XMLPARSERWARNING">
<ANCHOR id ="GNOME-XML-PARSERINTERNALS" href="gnome-xml/gnome-xml-parserinternals.html">
+<ANCHOR id ="XMLCREATEDOCPARSERCTXT" href="gnome-xml/gnome-xml-parserinternals.html#XMLCREATEDOCPARSERCTXT">
+<ANCHOR id ="XMLCREATEFILEPARSERCTXT" href="gnome-xml/gnome-xml-parserinternals.html#XMLCREATEFILEPARSERCTXT">
+<ANCHOR id ="XMLCREATEMEMORYPARSERCTXT" href="gnome-xml/gnome-xml-parserinternals.html#XMLCREATEMEMORYPARSERCTXT">
+<ANCHOR id ="XMLFREEPARSERCTXT" href="gnome-xml/gnome-xml-parserinternals.html#XMLFREEPARSERCTXT">
<ANCHOR id ="XMLHANDLEENTITY" href="gnome-xml/gnome-xml-parserinternals.html#XMLHANDLEENTITY">
<ANCHOR id ="XMLNAMESPACEPARSENCNAME" href="gnome-xml/gnome-xml-parserinternals.html#XMLNAMESPACEPARSENCNAME">
<ANCHOR id ="XMLNAMESPACEPARSEQNAME" href="gnome-xml/gnome-xml-parserinternals.html#XMLNAMESPACEPARSEQNAME">
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index ca0835fc..9cd4b5b1 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -20,12 +20,14 @@ extern "C" {
*/
#define XML_DEFAULT_VERSION "1.0"
+typedef void (* xmlParserInputDeallocate)(CHAR *);
typedef struct xmlParserInput {
const char *filename; /* The file analyzed, if any */
const CHAR *base; /* Base of the array to parse */
const CHAR *cur; /* Current char being parsed */
int line; /* Current line */
int col; /* Current column */
+ xmlParserInputDeallocate free; /* function to deallocate the base */
} xmlParserInput;
typedef xmlParserInput *xmlParserInputPtr;
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index 9cd6a212..d28da73a 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -16,6 +16,18 @@ extern "C" {
#endif
/*
+ * Parser context
+ */
+xmlParserCtxtPtr
+xmlCreateDocParserCtxt(CHAR *cur);
+xmlParserCtxtPtr
+xmlCreateFileParserCtxt(const char *filename);
+xmlParserCtxtPtr
+xmlCreateMemoryParserCtxt(char *buffer, int size);
+void
+xmlFreeParserCtxt(xmlParserCtxtPtr ctxt);
+
+/*
* Entities
*/
void
diff --git a/parser.c b/parser.c
index bd65d700..4e10aa73 100644
--- a/parser.c
+++ b/parser.c
@@ -58,13 +58,16 @@ int name##Push(xmlParserCtxtPtr ctxt, type value) { \
return(ctxt->name##Nr++); \
} \
type name##Pop(xmlParserCtxtPtr ctxt) { \
+ type ret; \
if (ctxt->name##Nr <= 0) return(0); \
ctxt->name##Nr--; \
if (ctxt->name##Nr > 0) \
ctxt->name = ctxt->name##Tab[ctxt->name##Nr - 1]; \
else \
ctxt->name = NULL; \
- return(ctxt->name); \
+ ret = ctxt->name##Tab[ctxt->name##Nr]; \
+ ctxt->name##Tab[ctxt->name##Nr] = 0; \
+ return(ret); \
} \
PUSH_AND_POP(xmlParserInputPtr, input)
@@ -148,6 +151,23 @@ xmlPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr input) {
}
/**
+ * xmlFreeInputStream:
+ * @input: an xmlParserInputPtr
+ *
+ * Free up an input stream.
+ */
+void
+xmlFreeInputStream(xmlParserInputPtr input) {
+ if (input == NULL) return;
+
+ if (input->filename != NULL) return;
+ if ((input->free != NULL) && (input->base != NULL))
+ input->free((char *) input->base);
+ memset(input, -1, sizeof(xmlParserInput));
+ free(input);
+}
+
+/**
* xmlNewEntityInputStream:
* @ctxt: an XML parser context
* @entity: an Entity pointer
@@ -182,6 +202,7 @@ xmlNewEntityInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
input->cur = entity->content;
input->line = 1;
input->col = 1;
+ input->free = NULL;
return(input);
}
@@ -214,6 +235,7 @@ xmlNewStringInputStream(xmlParserCtxtPtr ctxt, CHAR *string) {
input->cur = string;
input->line = 1;
input->col = 1;
+ input->free = NULL;
return(input);
}
@@ -4397,34 +4419,24 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
}
/**
- * xmlSAXParseDoc :
- * @sax: the SAX handler block
+ * xmlCreateFileParserCtxt :
* @cur: a pointer to an array of CHAR
- * @recovery: work in recovery mode, i.e. tries to read no Well Formed
- * documents
*
- * parse an XML in-memory document and build a tree.
- * It use the given SAX function block to handle the parsing callback.
- * If sax is NULL, fallback to the default DOM tree building routines.
- *
- * Returns the resulting document tree
+ * Create a parser context for an XML in-memory document.
+ *
+ * Returns the new parser context or NULL
*/
-
-xmlDocPtr
-xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery) {
- xmlDocPtr ret;
+xmlParserCtxtPtr
+xmlCreateDocParserCtxt(CHAR *cur) {
xmlParserCtxtPtr ctxt;
xmlParserInputPtr input;
- if (cur == NULL) return(NULL);
-
ctxt = (xmlParserCtxtPtr) malloc(sizeof(xmlParserCtxt));
if (ctxt == NULL) {
perror("malloc");
return(NULL);
}
xmlInitParserCtxt(ctxt);
- if (sax != NULL) ctxt->sax = sax;
input = (xmlParserInputPtr) malloc(sizeof(xmlParserInput));
if (input == NULL) {
perror("malloc");
@@ -4437,10 +4449,38 @@ xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery) {
input->col = 1;
input->base = cur;
input->cur = cur;
+ input->free = NULL;
inputPush(ctxt, input);
+ return(ctxt);
+}
+
+/**
+ * xmlSAXParseDoc :
+ * @sax: the SAX handler block
+ * @cur: a pointer to an array of CHAR
+ * @recovery: work in recovery mode, i.e. tries to read no Well Formed
+ * documents
+ *
+ * parse an XML in-memory document and build a tree.
+ * It use the given SAX function block to handle the parsing callback.
+ * If sax is NULL, fallback to the default DOM tree building routines.
+ *
+ * Returns the resulting document tree
+ */
+
+xmlDocPtr
+xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery) {
+ xmlDocPtr ret;
+ xmlParserCtxtPtr ctxt;
+
+ if (cur == NULL) return(NULL);
+ ctxt = xmlCreateDocParserCtxt(cur);
+ if (ctxt == NULL) return(NULL);
+ if (sax != NULL) ctxt->sax = sax;
+
xmlParseDocument(ctxt);
if ((ctxt->wellFormed) || recovery) ret = ctxt->doc;
else {
@@ -4448,12 +4488,7 @@ xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery) {
xmlFreeDoc(ctxt->doc);
ctxt->doc = NULL;
}
- free(ctxt->nodeTab);
- free(ctxt->inputTab);
- if (input->filename != NULL)
- free((char *)input->filename);
- free(input);
- free(ctxt);
+ xmlFreeParserCtxt(ctxt);
return(ret);
}
@@ -4488,23 +4523,19 @@ xmlRecoverDoc(CHAR *cur) {
}
/**
- * xmlSAXParseFile :
- * @sax: the SAX handler block
+ * xmlCreateFileParserCtxt :
* @filename: the filename
- * @recovery: work in recovery mode, i.e. tries to read no Well Formed
- * documents
*
- * parse an XML file and build a tree. Automatic support for ZLIB/Compress
- * compressed document is provided by default if found at compile-time.
- * It use the given SAX function block to handle the parsing callback.
- * If sax is NULL, fallback to the default DOM tree building routines.
+ * Create a parser context for a file content.
+ * Automatic support for ZLIB/Compress compressed document is provided
+ * by default if found at compile-time.
*
- * Returns the resulting document tree
+ * Returns the new parser context or NULL
*/
-
-xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
- int recovery) {
- xmlDocPtr ret;
+xmlParserCtxtPtr
+xmlCreateFileParserCtxt(const char *filename)
+{
+ xmlParserCtxtPtr ctxt;
#ifdef HAVE_ZLIB_H
gzFile input;
#else
@@ -4514,7 +4545,6 @@ xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
int len;
struct stat buf;
char *buffer;
- xmlParserCtxtPtr ctxt;
xmlParserInputPtr inputStream;
res = stat(filename, &buf);
@@ -4583,7 +4613,6 @@ retry_bigger:
return(NULL);
}
xmlInitParserCtxt(ctxt);
- if (sax != NULL) ctxt->sax = sax;
inputStream = (xmlParserInputPtr) malloc(sizeof(xmlParserInput));
if (inputStream == NULL) {
perror("malloc");
@@ -4600,8 +4629,35 @@ retry_bigger:
*/
inputStream->base = buffer;
inputStream->cur = buffer;
+ inputStream->free = (xmlParserInputDeallocate) free;
inputPush(ctxt, inputStream);
+ return(ctxt);
+}
+
+/**
+ * xmlSAXParseFile :
+ * @sax: the SAX handler block
+ * @filename: the filename
+ * @recovery: work in recovery mode, i.e. tries to read no Well Formed
+ * documents
+ *
+ * parse an XML file and build a tree. Automatic support for ZLIB/Compress
+ * compressed document is provided by default if found at compile-time.
+ * It use the given SAX function block to handle the parsing callback.
+ * If sax is NULL, fallback to the default DOM tree building routines.
+ *
+ * Returns the resulting document tree
+ */
+
+xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
+ int recovery) {
+ xmlDocPtr ret;
+ xmlParserCtxtPtr ctxt;
+
+ ctxt = xmlCreateFileParserCtxt(filename);
+ if (ctxt == NULL) return(NULL);
+ if (sax != NULL) ctxt->sax = sax;
xmlParseDocument(ctxt);
@@ -4611,13 +4667,7 @@ retry_bigger:
xmlFreeDoc(ctxt->doc);
ctxt->doc = NULL;
}
- free(buffer);
- free(ctxt->nodeTab);
- free(ctxt->inputTab);
- if (inputStream->filename != NULL)
- free((char *)inputStream->filename);
- free(inputStream);
- free(ctxt);
+ xmlFreeParserCtxt(ctxt);
return(ret);
}
@@ -4652,25 +4702,16 @@ xmlDocPtr xmlRecoverFile(const char *filename) {
}
/**
- * xmlSAXParseMemory :
- * @sax: the SAX handler block
+ * xmlCreateMemoryParserCtxt :
* @buffer: an pointer to a char array
* @size: the siwe of the array
- * @recovery: work in recovery mode, i.e. tries to read no Well Formed
- * documents
*
- * parse an XML in-memory block and use the given SAX function block
- * to handle the parsing callback. If sax is NULL, fallback to the default
- * DOM tree building routines.
- *
- * TODO : plug some encoding conversion routines here. !!!
+ * Create a parser context for an XML in-memory document.
*
- * Returns the resulting document tree
+ * Returns the new parser context or NULL
*/
-xmlDocPtr
-xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer, int size,
- int recovery) {
- xmlDocPtr ret;
+xmlParserCtxtPtr
+xmlCreateMemoryParserCtxt(char *buffer, int size) {
xmlParserCtxtPtr ctxt;
xmlParserInputPtr input;
@@ -4682,7 +4723,6 @@ xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer, int size,
return(NULL);
}
xmlInitParserCtxt(ctxt);
- if (sax != NULL) ctxt->sax = sax;
input = (xmlParserInputPtr) malloc(sizeof(xmlParserInput));
if (input == NULL) {
perror("malloc");
@@ -4701,8 +4741,36 @@ xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer, int size,
*/
input->base = buffer;
input->cur = buffer;
+ input->free = NULL;
inputPush(ctxt, input);
+ return(ctxt);
+}
+
+/**
+ * xmlSAXParseMemory :
+ * @sax: the SAX handler block
+ * @buffer: an pointer to a char array
+ * @size: the siwe of the array
+ * @recovery: work in recovery mode, i.e. tries to read no Well Formed
+ * documents
+ *
+ * parse an XML in-memory block and use the given SAX function block
+ * to handle the parsing callback. If sax is NULL, fallback to the default
+ * DOM tree building routines.
+ *
+ * TODO : plug some encoding conversion routines here. !!!
+ *
+ * Returns the resulting document tree
+ */
+xmlDocPtr
+xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer, int size, int recovery) {
+ xmlDocPtr ret;
+ xmlParserCtxtPtr ctxt;
+
+ ctxt = xmlCreateMemoryParserCtxt(buffer, size);
+ if (ctxt == NULL) return(NULL);
+ if (sax != NULL) ctxt->sax = sax;
xmlParseDocument(ctxt);
@@ -4712,12 +4780,7 @@ xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer, int size,
xmlFreeDoc(ctxt->doc);
ctxt->doc = NULL;
}
- free(ctxt->nodeTab);
- free(ctxt->inputTab);
- if (input->filename != NULL)
- free((char *)input->filename);
- free(input);
- free(ctxt);
+ xmlFreeParserCtxt(ctxt);
return(ret);
}
@@ -4761,23 +4824,47 @@ xmlDocPtr xmlRecoverMemory(char *buffer, int size) {
void
xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
{
- /* Allocate the Input stack */
- ctxt->inputTab = (xmlParserInputPtr *) malloc(5 * sizeof(xmlParserInputPtr));
- ctxt->inputNr = 0;
- ctxt->inputMax = 5;
- ctxt->input = NULL;
-
- /* Allocate the Node stack */
- ctxt->nodeTab = (xmlNodePtr *) malloc(10 * sizeof(xmlNodePtr));
- ctxt->nodeNr = 0;
- ctxt->nodeMax = 10;
- ctxt->node = NULL;
-
- ctxt->sax = &xmlDefaultSAXHandler;
- ctxt->doc = NULL;
- ctxt->wellFormed = 1;
- ctxt->record_info = 0;
- xmlInitNodeInfoSeq(&ctxt->node_seq);
+ /* Allocate the Input stack */
+ ctxt->inputTab = (xmlParserInputPtr *) malloc(5 * sizeof(xmlParserInputPtr));
+ ctxt->inputNr = 0;
+ ctxt->inputMax = 5;
+ ctxt->input = NULL;
+
+ /* Allocate the Node stack */
+ ctxt->nodeTab = (xmlNodePtr *) malloc(10 * sizeof(xmlNodePtr));
+ ctxt->nodeNr = 0;
+ ctxt->nodeMax = 10;
+ ctxt->node = NULL;
+
+ ctxt->sax = &xmlDefaultSAXHandler;
+ ctxt->doc = NULL;
+ ctxt->wellFormed = 1;
+ ctxt->record_info = 0;
+ xmlInitNodeInfoSeq(&ctxt->node_seq);
+}
+
+/**
+ * xmlFreeParserCtxt:
+ * @ctxt: an XML parser context
+ *
+ * Free all the memory used by a parser context. However the parsed
+ * document in ctxt->doc is not freed.
+ */
+
+void
+xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
+{
+ xmlParserInputPtr input;
+
+ if (ctxt == NULL) return;
+
+ while ((input = inputPop(ctxt)) != NULL) {
+ xmlFreeInputStream(input);
+ }
+
+ if (ctxt->nodeTab != NULL) free(ctxt->nodeTab);
+ if (ctxt->inputTab != NULL) free(ctxt->inputTab);
+ free(ctxt);
}
/**
diff --git a/parser.h b/parser.h
index ca0835fc..9cd4b5b1 100644
--- a/parser.h
+++ b/parser.h
@@ -20,12 +20,14 @@ extern "C" {
*/
#define XML_DEFAULT_VERSION "1.0"
+typedef void (* xmlParserInputDeallocate)(CHAR *);
typedef struct xmlParserInput {
const char *filename; /* The file analyzed, if any */
const CHAR *base; /* Base of the array to parse */
const CHAR *cur; /* Current char being parsed */
int line; /* Current line */
int col; /* Current column */
+ xmlParserInputDeallocate free; /* function to deallocate the base */
} xmlParserInput;
typedef xmlParserInput *xmlParserInputPtr;
diff --git a/parserInternals.h b/parserInternals.h
index 9cd6a212..d28da73a 100644
--- a/parserInternals.h
+++ b/parserInternals.h
@@ -16,6 +16,18 @@ extern "C" {
#endif
/*
+ * Parser context
+ */
+xmlParserCtxtPtr
+xmlCreateDocParserCtxt(CHAR *cur);
+xmlParserCtxtPtr
+xmlCreateFileParserCtxt(const char *filename);
+xmlParserCtxtPtr
+xmlCreateMemoryParserCtxt(char *buffer, int size);
+void
+xmlFreeParserCtxt(xmlParserCtxtPtr ctxt);
+
+/*
* Entities
*/
void