<?xml version="1.0" encoding="ISO-8859-1"?>
<api name='libxml2-python'>
  <symbols>
    <function name='xmlRegisterXPathFunction' file='python'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Register a Python written function to the XPath interpreter</info>
      <return type='int' info="1 in case of success, 0 or -1 in case of error"/>
      <arg name='ctx' type='xmlXPathContextPtr' info='the xpathContext'/>
      <arg name='name' type='xmlChar *' info='the function name'/>
      <arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
      <arg name='f' type='pythonObject' info='the python function'/>
    </function>
    <function name='xmlNewNode' file='python'>
      <info>Create a new Node</info>
      <return type='xmlNodePtr' info="A new element node"/>
      <arg name='name' type='xmlChar *' info='the node name'/>
    </function>
    <function name='xmlCreatePushParser' file='python'>
      <info>Create a progressive XML parser context to build either an event flow if the SAX object is not None, or a DOM tree otherwise.</info>
      <return type='xmlParserCtxtPtr' info="the parser context or None in case of error"/>
      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
      <arg name='chunk' type='xmlChar *' info='the initial data'/>
      <arg name='size' type='int' info='the size of the initial data'/>
      <arg name='URI' type='xmlChar *' info='The URI used for base computations'/>
    </function>
    <function name='htmlCreatePushParser' file='python'>
      <cond>defined(LIBXML_HTML_ENABLED)</cond>
      <info>Create a progressive HTML parser context to build either an event flow if the SAX object is not None, or a DOM tree otherwise.</info>
      <return type='xmlParserCtxtPtr' info="the parser context or None in case of error"/>
      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
      <arg name='chunk' type='xmlChar *' info='the initial data'/>
      <arg name='size' type='int' info='the size of the initial data'/>
      <arg name='URI' type='xmlChar *' info='The URI used for base computations'/>
    </function>
    <function name='xmlSAXParseFile' file='python'>
      <info>Interface to parse an XML file or resource pointed by an URI to build an event flow to the SAX object</info>
      <return type='void'/>
      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
      <arg name='URI' type='xmlChar *' info='The URI of the resource'/>
      <arg name='recover' type='int' info='allow recovery in case of error'/>
    </function>
    <function name='htmlSAXParseFile' file='python'>
      <cond>defined(LIBXML_HTML_ENABLED)</cond>
      <info>Interface to parse an HTML file or resource pointed by an URI to build an event flow to the SAX object</info>
      <return type='void'/>
      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
      <arg name='URI' type='xmlChar *' info='The URI of the resource'/>
      <arg name='encoding' type='const char *' info='encoding or None'/>
    </function>
    <function name='xmlCreateOutputBuffer' file='python'>
      <info>Create a libxml2 output buffer from a Python file</info>
      <return type='xmlOutputBufferPtr' info="the output buffer"/>
      <arg name='file' type='pythonObject' info='the Python file'/>
      <arg name='encoding' type='xmlChar *' info='an optionnal encoding'/>
    </function>
    <function name='xmlCreateInputBuffer' file='python'>
      <info>Create a libxml2 input buffer from a Python file</info>
      <return type='xmlParserInputBufferPtr' info="the input buffer"/>
      <arg name='file' type='pythonObject' info='the Python file'/>
      <arg name='encoding' type='xmlChar *' info='an optionnal encoding'/>
    </function>
    <function name='xmlSetEntityLoader' file='python'>
      <info>Set the entity resolver as a python function</info>
      <return type='int' info="0 in case of success, -1 for error"/>
      <arg name='resolver' type='pythonObject' info='the Python function'/>
    </function>
    <!-- xmlParserCtxtPtr accessors -->
    <function name='xmlParserGetDoc' file='python_accessor'>
      <info>Get the document tree from a parser context.</info>
      <return type='xmlDocPtr' info="the document tree" field="myDoc"/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
    </function>
    <function name='xmlParserGetWellFormed' file='python_accessor'>
      <info>Get the well formed information from a parser context.</info>
      <return type='int' info="the wellFormed field" field="wellFormed"/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
    </function>
    <function name='xmlParserGetIsValid' file='python_accessor'>
      <info>Get the validity information from a parser context.</info>
      <return type='int' info="the valid field" field="valid"/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
    </function>
    <function name='xmlParserSetValidate' file='python_accessor'>
      <info>Switch the parser to validation mode.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='validate' type='int' info='1 to activate validation'/>
    </function>
    <function name='xmlParserSetReplaceEntities' file='python_accessor'>
      <info>Switch the parser to replace entities.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='replaceEntities' type='int' info='1 to replace entities'/>
    </function>
    <function name='xmlParserSetPedantic' file='python_accessor'>
      <info>Switch the parser to be pedantic.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='pedantic' type='int' info='1 to run in pedantic mode'/>
    </function>
    <function name='xmlParserSetLoadSubset' file='python_accessor'>
      <info>Switch the parser to load the DTD without validating.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='loadsubset' type='int' info='1 to load the DTD'/>
    </function>
    <function name='xmlParserSetLineNumbers' file='python_accessor'>
      <info>Switch on the generation of line number for elements nodes.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='linenumbers' type='int' info='1 to save line numbers'/>
    </function>
    <function name='xmlDebugMemory' file='python'>
      <info>Switch on the generation of line number for elements nodes. Also returns the number of bytes allocated and not freed by libxml2 since memory debugging was switched on.</info>
      <return type='int' info="returns the number of bytes allocated and not freed"/>
      <arg name='activate' type='int' info='1 switch on memory debugging 0 switch it off'/>
    </function>
    <function name='xmlDumpMemory' file='python'>
      <info>dump the memory allocated in the file .memdump</info>
      <return type='void'/>
    </function>
    <!-- xmlNsPtr accessors -->
    <function name='xmlNodeGetNs' file='python_accessor'>
      <info>Get the namespace of a node</info>
      <return type='xmlNsPtr' info="The namespace or None"/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlNodeGetNsDefs' file='python_accessor'>
      <info>Get the namespace of a node</info>
      <return type='xmlNsPtr' info="The namespace or None"/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
    </function>
    <!-- xmlXPathContextPtr accessors -->
    <function name='xmlXPathParserGetContext' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the xpathContext from an xpathParserContext</info>
      <return type='xmlXPathContextPtr' info="The XPath context" field="context"/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath parser context'/>
    </function>
    <function name='xmlXPathGetContextDoc' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the doc from an xpathContext</info>
      <return type='xmlDocPtr' info="The doc context" field="doc"/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathGetContextNode' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the current node from an xpathContext</info>
      <return type='xmlNodePtr' info="The node context" field="node"/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathSetContextDoc' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Set the doc of an xpathContext</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name="doc" type='xmlDocPtr' info="The doc context"/>
    </function>
    <function name='xmlXPathSetContextNode' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Set the current node of an xpathContext</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name="node" type='xmlNodePtr' info="The node context"/>
    </function>
    <function name='xmlXPathGetContextPosition' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the current node from an xpathContext</info>
      <return type='int' info="The node context" field="proximityPosition"/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathGetContextSize' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the current node from an xpathContext</info>
      <return type='int' info="The node context" field="contextSize"/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathGetFunction' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the current function name xpathContext</info>
      <return type='const xmlChar *' info="The function name" field="function"/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathGetFunctionURI' file='python_accessor'>
      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
      <info>Get the current function name URI xpathContext</info>
      <return type='const xmlChar *' info="The function name URI" field="functionURI"/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <!-- xmlURIPtr accessors -->
    <function name='xmlURIGetScheme' file='python_accessor'>
      <info>Get the scheme part from an URI</info>
      <return type='const char *' info="The URI scheme" field="scheme"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetScheme' file='python_accessor'>
      <info>Set the scheme part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='scheme' type='char *' info='The URI scheme part'/>
    </function>
    <function name='xmlURIGetOpaque' file='python_accessor'>
      <info>Get the opaque part from an URI</info>
      <return type='const char *' info="The URI opaque" field="opaque"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetOpaque' file='python_accessor'>
      <info>Set the opaque part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='opaque' type='char *' info='The URI opaque part'/>
    </function>
    <function name='xmlURIGetAuthority' file='python_accessor'>
      <info>Get the authority part from an URI</info>
      <return type='const char *' info="The URI authority" field="authority"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetAuthority' file='python_accessor'>
      <info>Set the authority part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='authority' type='char *' info='The URI authority part'/>
    </function>
    <function name='xmlURIGetServer' file='python_accessor'>
      <info>Get the server part from an URI</info>
      <return type='const char *' info="The URI server" field="server"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetServer' file='python_accessor'>
      <info>Set the server part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='server' type='char *' info='The URI server part'/>
    </function>
    <function name='xmlURIGetUser' file='python_accessor'>
      <info>Get the user part from an URI</info>
      <return type='const char *' info="The URI user" field="user"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetUser' file='python_accessor'>
      <info>Set the user part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='user' type='char *' info='The URI user part'/>
    </function>
    <function name='xmlURIGetPath' file='python_accessor'>
      <info>Get the path part from an URI</info>
      <return type='const char *' info="The URI path" field="path"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetPath' file='python_accessor'>
      <info>Set the path part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='path' type='char *' info='The URI path part'/>
    </function>
    <function name='xmlURIGetQuery' file='python_accessor'>
      <info>Get the query part from an URI</info>
      <return type='const char *' info="The URI query" field="query"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetQuery' file='python_accessor'>
      <info>Set the query part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='query' type='char *' info='The URI query part'/>
    </function>
    <function name='xmlURIGetFragment' file='python_accessor'>
      <info>Get the fragment part from an URI</info>
      <return type='const char *' info="The URI fragment" field="fragment"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetFragment' file='python_accessor'>
      <info>Set the fragment part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='fragment' type='char *' info='The URI fragment part'/>
    </function>
    <function name='xmlURIGetPort' file='python_accessor'>
      <info>Get the port part from an URI</info>
      <return type='int' info="The URI port" field="port"/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
    </function>
    <function name='xmlURISetPort' file='python_accessor'>
      <info>Set the port part of an URI.</info>
      <return type='void'/>
      <arg name='URI' type='xmlURIPtr' info='the URI'/>
      <arg name='port' type='int' info='The URI port part'/>
    </function>
    <!-- xmlErrorPtr accessors -->
    <function name='xmlErrorGetDomain' file='python_accessor'>
      <info>What part of the library raised this error</info>
      <return type='int' info="The error domain" field="domain"/>
      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
    </function>
    <function name='xmlErrorGetCode' file='python_accessor'>
      <info>The error code, e.g. an xmlParserError</info>
      <return type='int' info="The error code" field="code"/>
      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
    </function>
    <function name='xmlErrorGetMessage' file='python_accessor'>
      <info>human-readable informative error message</info>
      <return type='const char *' info="The error message" field="message"/>
      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
    </function>
    <function name='xmlErrorGetLevel' file='python_accessor'>
      <info>how consequent is the error</info>
      <return type='int' info="The error level" field="level"/>
      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
    </function>
    <function name='xmlErrorGetFile' file='python_accessor'>
      <info>the filename</info>
      <return type='const char *' info="The error file" field="file"/>
      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
    </function>
    <function name='xmlErrorGetLine' file='python_accessor'>
      <info>the line number if available</info>
      <return type='int' info="The error line" field="line"/>
      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
    </function>
    <function name='xmlPythonCleanupParser' file='python'>
      <info>Cleanup function for the XML library. It tries to reclaim all parsing related global memory allocated for the library processing. It doesn't deallocate any document related memory. Calling this function should not prevent reusing the library but one should call xmlCleanupParser() only when the process has finished using the library or XML document built with it.</info>
      <return type='void'/>
    </function>
    <function name='xmlMemoryUsed' file='python'>
      <info>Returns the total amount of memory allocated by libxml2</info>
      <return type='int' info='number of bytes allocated'/>
    </function>
  </symbols>
</api>
