<?xml version="1.0" encoding="ISO-8859-1"?>
<api name='libxml2-python'>
  <symbols>
    <function name='xmlRegisterXPathFunction' file='python'>
      <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='xmlRegisterErrorHandler' file='python'>
      <info>Register a Python written function to for error reporting. The function is called back as f(ctx, error).</info>
      <return type='int' info="1 in case of success, 0 or -1 in case of error"/>
      <arg name='f' type='pythonObject' info='the python function'/>
      <arg name='ctx' type='pythonObject' info='a context for the callback'/>
    </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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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'>
      <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>
  </symbols>
</api>
