### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 22 of 44
0 if success, or -1 in case of error'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
    </function>
    <function name='xmlCharEncFirstLine' file='encoding' module='encoding'>
      <info>Front-end for the encoding handler input function, but handle only the very first line, i.e. limit itself to 45 chars.</info>
      <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
      <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
      <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
    </function>
    <function name='xmlCharEncInFunc' file='encoding' module='encoding'>
      <info>Generic front-end for the encoding handler input function</info>
      <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char encoding transformation data structure'/>
      <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
      <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
    </function>
    <function name='xmlCharEncOutFunc' file='encoding' module='encoding'>
      <info>Generic front-end for the encoding handler output function a first call with @in == NULL has to be made firs to initiate the output in case of non-stateless encoding needing to initiate their state or the output (like the BOM in UTF16). In case of UTF8 sequence conversion errors for the given encoder, the content will be automatically remapped to a CharRef sequence.</info>
      <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
      <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
      <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
    </function>
    <functype name='xmlCharEncodingInputFunc' file='encoding' module='encoding'>
      <info>Take a block of chars in the original encoding and try to convert it to an UTF-8 block of chars out.</info>
      <return type='int' info='the number of bytes written, -1 if lack of space, or -2 if the transcoding failed. The value of @inlen after return is the number of octets consumed if the return value is positive, else unpredictiable. The value of @outlen after return is the number of octets consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the UTF-8 result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of chars in the original encoding'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </functype>
    <functype name='xmlCharEncodingOutputFunc' file='encoding' module='encoding'>
      <info>Take a block of UTF-8 chars in and try to convert it to another encoding. Note: a first call designed to produce heading info is called with in = NULL. If stateful this should also initialize the encoder state.</info>
      <return type='int' info='the number of bytes written, -1 if lack of space, or -2 if the transcoding failed. The value of @inlen after return is the number of octets consumed if the return value is positive, else unpredictiable. The value of @outlen after return is the number of octets produced.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </functype>
    <function name='xmlCharInRange' file='chvalid' module='chvalid'>
      <info>Does a binary search of the range table to determine if char is valid</info>
      <return type='int' info='true if character valid, false otherwise'/>
      <arg name='val' type='unsigned int' info='character to be validated'/>
      <arg name='rptr' type='const xmlChRangeGroup *' info='pointer to range to be used to validate'/>
    </function>
    <function name='xmlCharStrdup' file='xmlstring' module='xmlstring'>
      <info>a strdup for char&apos;s to xmlChar&apos;s</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const char *' info='the input char *'/>
    </function>
    <function name='xmlCharStrndup' file='xmlstring' module='xmlstring'>
      <info>a strndup for char&apos;s to xmlChar&apos;s</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const char *' info='the input char *'/>
      <arg name='len' type='int' info='the len of @cur'/>
    </function>
    <function name='xmlCheckFilename' file='xmlIO' module='xmlIO'>
      <info>function checks to see if @path is a valid source (file, socket...) for XML.  if stat is not available on the target machine,</info>
      <return type='int' info='1.  if stat fails, returns 0 (if calling stat on the filename fails, it can&apos;t be right). if stat succeeds and the file is a directory, returns 2.  otherwise returns 1.'/>
      <arg name='path' type='const char *' info='the path to check'/>
    </function>
    <function name='xmlCheckHTTPInput' file='xmlIO' module='xmlIO'>
      <info>Check an input in case it was created from an HTTP stream, in that case it will handle encoding and update of the base URL in case of redirection. It also checks for HTTP errors in which case the input is cleanly freed up and an appropriate error is raised in context</info>
      <return type='xmlParserInputPtr' info='the input or NULL in case of HTTP error.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='ret' type='xmlParserInputPtr' info='an XML parser input'/>
    </function>
    <function name='xmlCheckLanguageID' file='parserInternals' module='parser'>
      <info>Checks that the value conforms to the LanguageID production:  NOTE: this is somewhat deprecated, those productions were removed from the XML Second edition.  [33] LanguageID ::= Langcode (&apos;-&apos; Subcode)* [34] Langcode ::= ISO639Code |  IanaCode |  UserCode [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= (&apos;i&apos; | &apos;I&apos;) &apos;-&apos; ([a-z] | [A-Z])+ [37] UserCode ::= (&apos;x&apos; | &apos;X&apos;) &apos;-&apos; ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+  The current REC reference the sucessors of RFC 1766, currently 5646  http://www.rfc-editor.org/rfc/rfc5646.txt langtag       = language [&quot;-&quot; script] [&quot;-&quot; region] *(&quot;-&quot; variant) *(&quot;-&quot; extension) [&quot;-&quot; privateuse] language      = 2*3ALPHA            ; shortest ISO 639 code [&quot;-&quot; extlang]       ; sometimes followed by ; extended language subtags / 4ALPHA              ; or reserved for future use / 5*8ALPHA            ; or registered language subtag  extlang       = 3ALPHA              ; selected ISO 639 codes *2(&quot;-&quot; 3ALPHA)      ; permanently reserved  script        = 4ALPHA              ; ISO 15924 code  region        = 2ALPHA              ; ISO 3166-1 code / 3DIGIT              ; UN M.49 code  variant       = 5*8alphanum         ; registered variants / (DIGIT 3alphanum)  extension     = singleton 1*(&quot;-&quot; (2*8alphanum))  ; Single alphanumerics ; &quot;x&quot; reserved for private use singleton     = DIGIT               ; 0 - 9 / %x41-57             ; A - W / %x59-5A             ; Y - Z / %x61-77             ; a - w / %x79-7A             ; y - z  it sounds right to still allow Irregular i-xxx IANA and user codes too The parser below doesn&apos;t try to cope with extension or privateuse that could be added but that&apos;s not interoperable anyway</info>
      <return type='int' info='1 if correct 0 otherwise'/>
      <arg name='lang' type='const xmlChar *' info='pointer to the string value'/>
    </function>
    <function name='xmlCheckUTF8' file='xmlstring' module='xmlstring'>
      <info>Checks @utf for being valid UTF-8. @utf is assumed to be null-terminated. This function is not super-strict, as it will allow longer UTF-8 sequences than necessary. Note that Java is capable of producing these sequences if provoked. Also note, this routine checks for the 4-byte maximum size, but does not check for 0x10ffff maximum value.</info>
      <return type='int' info='value: true if @utf is valid.'/>
      <arg name='utf' type='const unsigned char *' info='Pointer to putative UTF-8 encoded string.'/>
    </function>
    <function name='xmlCheckVersion' file='xmlversion' module='parserInternals'>
      <info>check the compiled lib version against the include one. This can warn or immediately kill the application</info>
      <return type='void'/>
      <arg name='version' type='int' info='the include version number'/>
    </function>
    <function name='xmlChildElementCount' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
      <return type='unsigned long' info='the count of element child or 0 if not available'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
    </function>
    <function name='xmlCleanupCharEncodingHandlers' file='encoding' module='encoding'>
      <info>Cleanup the memory allocated for the char encoding support, it unregisters all the encoding handlers and the aliases.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupEncodingAliases' file='encoding' module='encoding'>
      <info>Unregisters all aliases</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupGlobals' file='globals' module='globals'>
      <info>Additional cleanup for multi-threading</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupInputCallbacks' file='xmlIO' module='xmlIO'>
      <info>clears the entire input callback table. this includes the compiled-in I/O.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupMemory' file='xmlmemory' module='xmlmemory'>
      <info>Free up all the memory allocated by the library for its own use. This should not be called by user level code.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupOutputCallbacks' file='xmlIO' module='xmlIO'>
      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
      <info>clears the entire output callback table. this includes the compiled-in I/O callbacks.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupParser' file='parser' module='parser'>
      <info>This function name is somewhat misleading. It does not clean up parser state, it cleans up memory allocated by the library itself. It is a cleanup function for the XML library. It tries to reclaim all related global memory allocated for the library processing. It doesn&apos;t deallocate any document related memory. One should call xmlCleanupParser() only when the process has finished using the library and all XML/HTML documents built with it. See also xmlInitParser() which has the opposite function of preparing the library for operations.  WARNING: if your application is multithreaded or has plugin support calling this may crash the application if another thread or a plugin is still using libxml2. It&apos;s sometimes very hard to guess if libxml2 is in use in the application, some libraries or plugins may use it without notice. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind !</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupPredefinedEntities' file='entities' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>Cleanup up the predefined entities table. Deprecated call</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupThreads' file='threads' module='threads'>
      <info>xmlCleanupThreads() is used to to cleanup all the thread related data of the libxml2 library once processing has ended.  WARNING: if your application is multithreaded or has plugin support calling this may crash the application if another thread or a plugin is still using libxml2. It&apos;s sometimes very hard to guess if libxml2 is in use in the application, some libraries or plugins may use it without notice. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind !</info>
      <return type='void'/>
    </function>
    <function name='xmlClearNodeInfoSeq' file='parser' module='parserInternals'>
      <info>-- Clear (release memory and reinitialize) node info sequence</info>
      <return type='void'/>
      <arg name='seq' type='xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
    </function>
    <function name='xmlClearParserCtxt' file='parser' module='parserInternals'>
      <info>Clear (release owned resources) and reinitialize a parser context</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlConvertSGMLCatalog' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>Convert all the SGML catalog entries as XML ones</info>
      <return type='int' info='the number of entries converted if successful, -1 otherwise'/>
      <arg name='catal' type='xmlCatalogPtr' info='the catalog'/>
    </function>
    <function name='xmlCopyAttributeTable' file='valid' module='valid'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Build a copy of an attribute table.</info>
      <return type='xmlAttributeTablePtr' info='the new xmlAttributeTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
    </function>
    <function name='xmlCopyChar' file='parserInternals' module='parserInternals'>
      <info>append the char value in the array</info>
      <return type='int' info='the number of xmlChar written'/>
      <arg name='len' type='int' info='Ignored, compatibility'/>
      <arg name='out' type='xmlChar *' info='pointer to an array of xmlChar'/>
      <arg name='val' type='int' info='the char value'/>
    </function>
    <function name='xmlCopyCharMultiByte' file='parserInternals' module='parserInternals'>
      <info>append the char value in the array</info>
      <return type='int' info='the number of xmlChar written'/>
      <arg name='out' type='xmlChar *' info='pointer to an array of xmlChar'/>
      <arg name='val' type='int' info='the char value'/>
    </function>
    <function name='xmlCopyDoc' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
      <info>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</info>
      <return type='xmlDocPtr' info='a new #xmlDocPtr, or NULL in case of error.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='recursive' type='int' info='if not zero do a recursive copy.'/>
    </function>
    <function name='xmlCopyDocElementContent' file='valid' module='valid'>
      <info>Build a copy of an element content description.</info>
      <return type='xmlElementContentPtr' info='the new xmlElementContentPtr or NULL in case of error.'/>
      <arg name='doc' type='xmlDocPtr' info='the document owning the element declaration'/>
      <arg name='cur' type='xmlElementContentPtr' info='An element content pointer.'/>
    </function>
    <function name='xmlCopyDtd' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Do a copy of the dtd.</info>
      <return type='xmlDtdPtr' info='a new #xmlDtdPtr, or NULL in case of error.'/>
      <arg name='dtd' type='xmlDtdPtr' info='the dtd'/>
    </function>
    <function name='xmlCopyElementContent' file='valid' module='valid'>
      <info>Build a copy of an element content description. Deprecated, use xmlCopyDocElementContent instead</info>
      <return type='xmlElementContentPtr' info='the new xmlElementContentPtr or NULL in case of error.'/>
      <arg name='cur' type='xmlElementContentPtr' info='An element content pointer.'/>
    </function>
    <function name='xmlCopyElementTable' file='valid' module='valid'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Build a copy of an element table.</info>
      <return type='xmlElementTablePtr' info='the new xmlElementTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlElementTablePtr' info='An element table'/>
    </function>
    <function name='xmlCopyEntitiesTable' file='entities' module='entities'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Build a copy of an entity table.</info>
      <return type='xmlEntitiesTablePtr' info='the new xmlEntitiesTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
    </function>
    <function name='xmlCopyEnumeration' file='valid' module='valid'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Copy an enumeration attribute node (recursive).</info>
      <return type='xmlEnumerationPtr' info='the xmlEnumerationPtr just created or NULL in case of error.'/>
      <arg name='cur' type='xmlEnumerationPtr' info='the tree to copy.'/>
    </function>
    <function name='xmlCopyError' file='xmlerror' module='error'>
      <info>Save the original error to the new place.</info>
      <return type='int' info='0 in case of success and -1 in case of error.'/>
      <arg name='from' type='xmlErrorPtr' info='a source error'/>
      <arg name='to' type='xmlErrorPtr' info='a target error'/>
    </function>
    <function name='xmlCopyNamespace' file='tree' module='tree'>
      <info>Do a copy of the namespace.</info>
      <return type='xmlNsPtr' info='a new #xmlNsPtr, or NULL in case of error.'/>
      <arg name='cur' type='xmlNsPtr' info='the namespace'/>
    </function>
    <function name='xmlCopyNamespaceList' file='tree' module='tree'>
      <info>Do a copy of an namespace list.</info>
      <return type='xmlNsPtr' info='a new #xmlNsPtr, or NULL in case of error.'/>
      <arg name='cur' type='xmlNsPtr' info='the first namespace'/>
    </function>
    <function name='xmlCopyNode' file='tree' module='tree'>
      <info>Do a copy of the node.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='extended' type='int' info='if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)'/>
    </function>
    <function name='xmlCopyNodeList' file='tree' module='tree'>
      <info>Do a recursive copy of the node list. Use xmlDocCopyNodeList() if possible to ensure string interning.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='node' type='xmlNodePtr' info='the first node in the list.'/>
    </function>
    <function name='xmlCopyNotationTable' file='valid' module='valid'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Build a copy of a notation table.</info>
      <return type='xmlNotationTablePtr' info='the new xmlNotationTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlNotationTablePtr' info='A notation table'/>
    </function>
    <function name='xmlCopyProp' file='tree' module='tree'>
      <info>Do a copy of the attribute.</info>
      <return type='xmlAttrPtr' info='a new #xmlAttrPtr, or NULL in case of error.'/>
      <arg name='target' type='xmlNodePtr' info='the element where the attribute will be grafted'/>
      <arg name='cur' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlCopyPropList' file='tree' module='tree'>
      <info>Do a copy of an attribute list.</info>
      <return type='xmlAttrPtr' info='a new #xmlAttrPtr, or NULL in case of error.'/>
      <arg name='target' type='xmlNodePtr' info='the element where the attributes will be grafted'/>
      <arg name='cur' type='xmlAttrPtr' info='the first attribute'/>
    </function>
    <function name='xmlCreateDocParserCtxt' file='parser' module='parser'>
      <info>Creates a parser context for an XML in-memory document.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
    </function>
    <function name='xmlCreateEntitiesTable' file='entities' module='entities'>
      <info>create and initialize an empty entities hash table. This really doesn&apos;t make sense and should be deprecated</info>
      <return type='xmlEntitiesTablePtr' info='the xmlEntitiesTablePtr just created or NULL in case of error.'/>
    </function>
    <function name='xmlCreateEntityParserCtxt' file='parserInternals' module='parser'>
      <info>Create a parser context for an external entity Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='URL' type='const xmlChar *' info='the entity URL'/>
      <arg name='ID' type='const xmlChar *' info='the entity PUBLIC ID'/>
      <arg name='base' type='const xmlChar *' info='a possible base for the target URI'/>
    </function>
    <function name='xmlCreateEnumeration' file='valid' module='valid'>
      <info>create and initialize an enumeration attribute node.</info>
      <return type='xmlEnumerationPtr' info='the xmlEnumerationPtr just created or NULL in case of error.'/>
      <arg name='name' type='const xmlChar *' info='the enumeration name or NULL'/>
    </function>
    <function name='xmlCreateFileParserCtxt' file='parserInternals' module='parser'>
      <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlCreateIOParserCtxt' file='parser' module='parser'>
      <info>Create a parser context for using the XML parser with an existing I/O stream</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
      <arg name='ioctx' type='void *' info='an I/O handler'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlCreateIntSubset' file='tree' module='tree'>
      <info>Create the internal subset of a document</info>
      <return type='xmlDtdPtr' info='a pointer to the new DTD structure'/>
      <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
      <arg name='name' type='const xmlChar *' info='the DTD name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external (PUBLIC) ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
    </function>
    <function name='xmlCreateMemoryParserCtxt' file='parserInternals' module='parser'>
      <info>Create a parser context for an XML in-memory document.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
    </function>
    <function name='xmlCreatePushParserCtxt' file='parser' module='parser'>
      <cond>defined(LIBXML_PUSH_ENABLED)</cond>
      <info>Create a parser context for using the XML parser in push mode. If @buffer and @size are non-NULL, the data is used to detect the encoding.  The remaining characters will be parsed so they don&apos;t need to be fed in again through xmlParseChunk. To allow content encoding detection, @size should be &gt;= 4 The value of @filename is used for fetching external entities and error/warning reports.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='chunk' type='const char *' info='a pointer to an array of chars'/>
      <arg name='size' type='int' info='number of chars in the array'/>
      <arg name='filename' type='const char *' info='an optional file name or URI'/>
    </function>
    <function name='xmlCreateURI' file='uri' module='uri'>
      <info>Simply creates an empty xmlURI</info>
      <return type='xmlURIPtr' info='the new structure or NULL in case of error'/>
    </function>
    <function name='xmlCreateURLParserCtxt' file='parserInternals' module='parser'>
      <info>Create a parser context for a file or URL content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time and for file accesses</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='filename' type='const char *' info='the filename or URL'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCtxtGetLastError' file='xmlerror' module='error'>
      <info>Get the last parsing error registered.</info>
      <return type='xmlErrorPtr' info='NULL if no error occurred or a pointer to the error'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
    </function>
    <function name='xmlCtxtReadDoc' file='parser' module='parser'>
      <info>parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='cur' type='const xmlChar *' info='a pointer to a zero terminated string'/>
      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCtxtReadFd' file='parser' module='parser'>
      <info>parse an XML from a file descriptor and build a tree. This reuses the existing @ctxt parser context NOTE that the file descriptor will not be closed when the reader is closed or reset.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='fd' type='int' info='an open file descriptor'/>
      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCtxtReadFile' file='parser' module='parser'>
      <info>parse an XML file from the filesystem or the network. This reuses the existing @ctxt parser context</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='filename' type='const char *' info='a file or URL'/>
      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCtxtReadIO' file='parser' module='parser'>
      <info>parse an XML document from I/O functions and source and build a tree. This reuses the existing @ctxt parser context</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
      <arg name='ioctx' type='void *' info='an I/O handler'/>
      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCtxtReadMemory' file='parser' module='parser'>
      <info>parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
      <arg name='options' type='int' info='a combination of xmlParserOption'/>
    </function>
    <function name='xmlCtxtReset' file='parser' module='parser'>
      <info>Reset a parser context</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlCtxtResetLastError' file='xmlerror' module='error'>
      <info>Cleanup the last global error registered. For parsing error this does not change the well-formedness result.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
    </function>
    <function name='xmlCtxtResetPush' file='parser' module='parser'>
      <info>Reset a push parser context</info>
      <return type='int' info='0 in case of success and 1 in case of error'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='chunk' type='const char *' info='a pointer to an array of chars'/>
      <arg name='size' type='int' info='number