diff options
author | Daniel Veillard <veillard@src.gnome.org> | 1999-02-28 21:54:31 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 1999-02-28 21:54:31 +0000 |
commit | d692aa49bd18cfd649372e0a85c54e2a800d244e (patch) | |
tree | 3d76f877c195d223ed37892734275f445ef226ef | |
parent | 047434332fb064853c03bf7065d2ba178c3dd9db (diff) | |
download | libxml2-d692aa49bd18cfd649372e0a85c54e2a800d244e.tar.gz |
Added call to create/free parser contexts, + doc, Daniel.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | doc/html/gnome-xml-entities.html | 48 | ||||
-rw-r--r-- | doc/html/gnome-xml-error.html | 12 | ||||
-rw-r--r-- | doc/html/gnome-xml-parser.html | 176 | ||||
-rw-r--r-- | doc/html/gnome-xml-parserinternals.html | 455 | ||||
-rw-r--r-- | doc/html/gnome-xml-tree.html | 168 | ||||
-rw-r--r-- | doc/html/gnome-xml-valid.html | 56 | ||||
-rw-r--r-- | doc/html/index.sgml | 5 | ||||
-rw-r--r-- | include/libxml/parser.h | 2 | ||||
-rw-r--r-- | include/libxml/parserInternals.h | 12 | ||||
-rw-r--r-- | parser.c | 253 | ||||
-rw-r--r-- | parser.h | 2 | ||||
-rw-r--r-- | parserInternals.h | 12 |
13 files changed, 876 insertions, 331 deletions
@@ -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 +> :</TD +><TD +WIDTH="80%" +ALIGN="LEFT" +VALIGN="TOP" +> </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" > +<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 +> :</TD +><TD +WIDTH="80%" +ALIGN="LEFT" +VALIGN="TOP" +> </TD +></TR +><TR +><TD +WIDTH="20%" +ALIGN="RIGHT" +VALIGN="TOP" +><I +CLASS="EMPHASIS" +>Returns</I +> :</TD +><TD +WIDTH="80%" +ALIGN="LEFT" +VALIGN="TOP" +> </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 +> :</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 +> :</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 +> :</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->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 +> :</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 @@ -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); } /** @@ -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 |