### ----------------------------------------------------
### -- LibXML
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxml2-api.xml
### ----------------------------------------------------
### -- Chunk 26 of 44
    <function name='xmlInitializeCatalog' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>Do the catalog initialization. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
      <return type='void'/>
    </function>
    <function name='xmlInitializeDict' file='dict' module='dict'>
      <info>Do the dictionary mutex initialization. this function is deprecated</info>
      <return type='int' info='0 if initialization was already done, and 1 if that call led to the initialization'/>
    </function>
    <function name='xmlInitializeGlobalState' file='globals' module='globals'>
      <info>xmlInitializeGlobalState() initialize a global state with all the default values of the library.</info>
      <return type='void'/>
      <arg name='gs' type='xmlGlobalStatePtr' info='a pointer to a newly allocated global state'/>
    </function>
    <function name='xmlInitializePredefinedEntities' file='entities' module='legacy'>
      <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
      <info>Set up the predefined entities. Deprecated call</info>
      <return type='void'/>
    </function>
    <functype name='xmlInputCloseCallback' file='xmlIO' module='xmlIO'>
      <info>Callback used in the I/O Input API to close the resource</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='context' type='void *' info='an Input context'/>
    </functype>
    <functype name='xmlInputMatchCallback' file='xmlIO' module='xmlIO'>
      <info>Callback used in the I/O Input API to detect if the current handler can provide input fonctionnalities for this resource.</info>
      <return type='int' info='1 if yes and 0 if another Input module should be used'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlInputOpenCallback' file='xmlIO' module='xmlIO'>
      <info>Callback used in the I/O Input API to open the resource</info>
      <return type='void *' info='an Input context or NULL in case or error'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlInputReadCallback' file='xmlIO' module='xmlIO'>
      <info>Callback used in the I/O Input API to read the resource</info>
      <return type='int' info='the number of bytes read or -1 in case of error'/>
      <arg name='context' type='void *' info='an Input context'/>
      <arg name='buffer' type='char *' info='the buffer to store data read'/>
      <arg name='len' type='int' info='the length of the buffer in bytes'/>
    </functype>
    <function name='xmlIsBaseChar' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsBaseChar_ch or xmlIsBaseCharQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsBlank' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsBlank_ch or xmlIsBlankQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsBlankNode' file='tree' module='tree'>
      <info>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</info>
      <return type='int' info='1 yes, 0 no'/>
      <arg name='node' type='const xmlNode *' info='the node'/>
    </function>
    <function name='xmlIsChar' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsChar_ch or xmlIsCharQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsCombining' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsCombiningQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsDigit' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsDigit_ch or xmlIsDigitQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsExtender' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsExtender_ch or xmlIsExtenderQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsID' file='valid' module='valid'>
      <info>Determine whether an attribute is of type ID. In case we have DTD(s) then this is done if DTD loading has been requested. In the case of HTML documents parsed with the HTML parser, then ID detection is done systematically.</info>
      <return type='int' info='0 or 1 depending on the lookup result'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='elem' type='xmlNodePtr' info='the element carrying the attribute'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlIsIdeographic' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsIdeographicQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsLetter' file='parserInternals' module='parserInternals'>
      <info>Check whether the character is allowed by the production [84] Letter ::= BaseChar | Ideographic</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsMainThread' file='threads' module='threads'>
      <info>xmlIsMainThread() check whether the current thread is the main thread.</info>
      <return type='int' info='1 if the current thread is the main thread, 0 otherwise'/>
    </function>
    <function name='xmlIsMixedElement' file='valid' module='valid'>
      <info>Search in the DtDs whether an element accept Mixed content (or ANY) basically if it is supposed to accept text childs</info>
      <return type='int' info='0 if no, 1 if yes, and -1 if no element description is available'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the element name'/>
    </function>
    <function name='xmlIsPubidChar' file='chvalid' module='chvalid'>
      <info>This function is DEPRECATED. Use xmlIsPubidChar_ch or xmlIsPubidCharQ instead</info>
      <return type='int' info='true if argument valid, false otherwise'/>
      <arg name='ch' type='unsigned int' info='character to validate'/>
    </function>
    <function name='xmlIsRef' file='valid' module='valid'>
      <info>Determine whether an attribute is of type Ref. In case we have DTD(s) then this is simple, otherwise we use an heuristic: name Ref (upper or lowercase).</info>
      <return type='int' info='0 or 1 depending on the lookup result'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='elem' type='xmlNodePtr' info='the element carrying the attribute'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlIsXHTML' file='tree' module='xmlsave'>
      <info>Try to find if the document correspond to an XHTML DTD</info>
      <return type='int' info='1 if true, 0 if not and -1 in case of error'/>
      <arg name='systemID' type='const xmlChar *' info='the system identifier'/>
      <arg name='publicID' type='const xmlChar *' info='the public identifier'/>
    </function>
    <function name='xmlKeepBlanksDefault' file='parser' module='parserInternals'>
      <info>Set and return the previous value for default blanks text nodes support. The 1.x version of the parser used an heuristic to try to detect ignorable white spaces. As a result the SAX callback was generating xmlSAX2IgnorableWhitespace() callbacks instead of characters() one, and when using the DOM output text nodes containing those blanks were not generated. The 2.x and later version will switch to the XML standard way and ignorableWhitespace() are only generated when running the parser in validating mode and when the current element doesn&apos;t allow CDATA or mixed content. This function is provided as a way to force the standard behavior on 1.X libs and to switch back to the old mode for compatibility when running 1.X client code on 2.X . Upgrade of 1.X code should be done by using xmlIsBlankNode() commodity function to detect the &quot;empty&quot; nodes generated. This value also affect autogeneration of indentation when saving code if blanks sections are kept, indentation is not generated.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlLastElementChild' file='tree' module='tree'>
      <cond>defined(LIBXML_TREE_ENABLED)</cond>
      <info>Finds the last child node of that element which is a Element node 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='xmlNodePtr' info='the last element child or NULL if not available'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
    </function>
    <function name='xmlLineNumbersDefault' file='parser' module='parserInternals'>
      <info>Set and return the previous value for enabling line numbers in elements contents. This may break on old application and is turned off by default.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlLinkGetData' file='list' module='list'>
      <info>See Returns.</info>
      <return type='void *' info='a pointer to the data referenced from this link'/>
      <arg name='lk' type='xmlLinkPtr' info='a link'/>
    </function>
    <function name='xmlListAppend' file='list' module='list'>
      <info>Insert data in the ordered list at the end for this value</info>
      <return type='int' info='0 in case of success, 1 in case of failure'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='the data'/>
    </function>
    <function name='xmlListClear' file='list' module='list'>
      <info>Remove the all data in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListCopy' file='list' module='list'>
      <info>Move all the element from the old list in the new list</info>
      <return type='int' info='0 in case of success 1 in case of error'/>
      <arg name='cur' type='xmlListPtr' info='the new list'/>
      <arg name='old' type='const xmlListPtr' info='the old list'/>
    </function>
    <function name='xmlListCreate' file='list' module='list'>
      <info>Create a new list</info>
      <return type='xmlListPtr' info='the new list or NULL in case of error'/>
      <arg name='deallocator' type='xmlListDeallocator' info='an optional deallocator function'/>
      <arg name='compare' type='xmlListDataCompare' info='an optional comparison function'/>
    </function>
    <functype name='xmlListDataCompare' file='list' module='list'>
      <info>Callback function used to compare 2 data.</info>
      <return type='int' info='0 is equality, -1 or 1 otherwise depending on the ordering.'/>
      <arg name='data0' type='const void *' info='the first data'/>
      <arg name='data1' type='const void *' info='the second data'/>
    </functype>
    <functype name='xmlListDeallocator' file='list' module='list'>
      <info>Callback function used to free data from a list.</info>
      <return type='void'/>
      <arg name='lk' type='xmlLinkPtr' info='the data to deallocate'/>
    </functype>
    <function name='xmlListDelete' file='list' module='list'>
      <info>Deletes the list and its associated data</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListDup' file='list' module='list'>
      <info>Duplicate the list</info>
      <return type='xmlListPtr' info='a new copy of the list or NULL in case of error'/>
      <arg name='old' type='const xmlListPtr' info='the list'/>
    </function>
    <function name='xmlListEmpty' file='list' module='list'>
      <info>Is the list empty ?</info>
      <return type='int' info='1 if the list is empty, 0 if not empty and -1 in case of error'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListEnd' file='list' module='list'>
      <info>Get the last element in the list</info>
      <return type='xmlLinkPtr' info='the last element in the list, or NULL'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListFront' file='list' module='list'>
      <info>Get the first element in the list</info>
      <return type='xmlLinkPtr' info='the first element in the list, or NULL'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListInsert' file='list' module='list'>
      <info>Insert data in the ordered list at the beginning for this value</info>
      <return type='int' info='0 in case of success, 1 in case of failure'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='the data'/>
    </function>
    <function name='xmlListMerge' file='list' module='list'>
      <info>include all the elements of the second list in the first one and clear the second list</info>
      <return type='void'/>
      <arg name='l1' type='xmlListPtr' info='the original list'/>
      <arg name='l2' type='xmlListPtr' info='the new list'/>
    </function>
    <function name='xmlListPopBack' file='list' module='list'>
      <info>Removes the last element in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListPopFront' file='list' module='list'>
      <info>Removes the first element in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListPushBack' file='list' module='list'>
      <info>add the new data at the end of the list</info>
      <return type='int' info='1 if successful, 0 otherwise'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='new data'/>
    </function>
    <function name='xmlListPushFront' file='list' module='list'>
      <info>add the new data at the beginning of the list</info>
      <return type='int' info='1 if successful, 0 otherwise'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='new data'/>
    </function>
    <function name='xmlListRemoveAll' file='list' module='list'>
      <info>Remove the all instance associated to data in the list</info>
      <return type='int' info='the number of deallocation, or 0 if not found'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='list data'/>
    </function>
    <function name='xmlListRemoveFirst' file='list' module='list'>
      <info>Remove the first instance associated to data in the list</info>
      <return type='int' info='1 if a deallocation occurred, or 0 if not found'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='list data'/>
    </function>
    <function name='xmlListRemoveLast' file='list' module='list'>
      <info>Remove the last instance associated to data in the list</info>
      <return type='int' info='1 if a deallocation occurred, or 0 if not found'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='list data'/>
    </function>
    <function name='xmlListReverse' file='list' module='list'>
      <info>Reverse the order of the elements in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListReverseSearch' file='list' module='list'>
      <info>Search the list in reverse order for an existing value of @data</info>
      <return type='void *' info='the value associated to @data or NULL in case of error'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='a search value'/>
    </function>
    <function name='xmlListReverseWalk' file='list' module='list'>
      <info>Walk all the element of the list in reverse order and apply the walker function to it</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='walker' type='xmlListWalker' info='a processing function'/>
      <arg name='user' type='void *' info='a user parameter passed to the walker function'/>
    </function>
    <function name='xmlListSearch' file='list' module='list'>
      <info>Search the list for an existing value of @data</info>
      <return type='void *' info='the value associated to @data or NULL in case of error'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='a search value'/>
    </function>
    <function name='xmlListSize' file='list' module='list'>
      <info>Get the number of elements in the list</info>
      <return type='int' info='the number of elements in the list or -1 in case of error'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListSort' file='list' module='list'>
      <info>Sort all the elements in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListWalk' file='list' module='list'>
      <info>Walk all the element of the first from first to last and apply the walker function to it</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='walker' type='xmlListWalker' info='a processing function'/>
      <arg name='user' type='void *' info='a user parameter passed to the walker function'/>
    </function>
    <functype name='xmlListWalker' file='list' module='list'>
      <info>Callback function used when walking a list with xmlListWalk().</info>
      <return type='int' info='0 to stop walking the list, 1 otherwise.'/>
      <arg name='data' type='const void *' info='the data found in the list'/>
      <arg name='user' type='void *' info='extra user provided data to the walker'/>
    </functype>
    <function name='xmlLoadACatalog' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>Load the catalog and build the associated data structures. This can be either an XML Catalog or an SGML Catalog It will recurse in SGML CATALOG entries. On the other hand XML Catalogs are not handled recursively.</info>
      <return type='xmlCatalogPtr' info='the catalog parsed or NULL in case of error'/>
      <arg name='filename' type='const char *' info='a file path'/>
    </function>
    <function name='xmlLoadCatalog' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>Load the catalog and makes its definitions effective for the default external entity loader. It will recurse in SGML CATALOG entries. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
      <return type='int' info='0 in case of success -1 in case of error'/>
      <arg name='filename' type='const char *' info='a file path'/>
    </function>
    <function name='xmlLoadCatalogs' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>Load the catalogs and makes their definitions effective for the default external entity loader. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
      <return type='void'/>
      <arg name='pathss' type='const char *' info='a list of directories separated by a colon or a space.'/>
    </function>
    <function name='xmlLoadExternalEntity' file='parser' module='xmlIO'>
      <info>Load an external entity, note that the use of this function for unparsed entities may generate problems</info>
      <return type='xmlParserInputPtr' info='the xmlParserInputPtr or NULL'/>
      <arg name='URL' type='const char *' info='the URL for the entity to load'/>
      <arg name='ID' type='const char *' info='the Public ID for the entity to load'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the context in which the entity is called or NULL'/>
    </function>
    <function name='xmlLoadSGMLSuperCatalog' file='catalog' module='catalog'>
      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
      <info>Load an SGML super catalog. It won&apos;t expand CATALOG or DELEGATE references. This is only needed for manipulating SGML Super Catalogs like adding and removing CATALOG or DELEGATE entries.</info>
      <return type='xmlCatalogPtr' info='the catalog parsed or NULL in case of error'/>
      <arg name='filename' type='const char *' info='a file path'/>
    </function>
    <function name='xmlLockLibrary' file='threads' module='threads'>
      <info>xmlLockLibrary() is used to take out a re-entrant lock on the libxml2 library.</info>
      <return type='void'/>
    </function>
    <function name='xmlLsCountNode' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Count the children of @node.</info>
      <return type='int' info='the number of children of @node.'/>
      <arg name='node' type='xmlNodePtr' info='the node to count'/>
    </function>
    <function name='xmlLsOneNode' file='debugXML' module='debugXML'>
      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
      <info>Dump to @output the type and name of @node.</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node to dump'/>
    </function>
    <function name='xmlMallocAtomicLoc' file='xmlmemory' module='xmlmemory'>
      <info>a malloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='size' type='size_t' info='an unsigned int specifying the size in byte to allocate.'/>
      <arg name='file' type='const char *' info='the file name or NULL'/>
      <arg name='line' type='int' info='the line number'/>
    </function>
    <functype name='xmlMallocFunc' file='xmlmemory' module='xmlmemory'>
      <info>Signature for a malloc() implementation.</info>
      <return type='void *' info='a pointer to the newly allocated block or NULL in case of error.'/>
      <arg name='size' type='size_t' info='the size requested in bytes'/>
    </functype>
    <function name='xmlMallocLoc' file='xmlmemory' module='xmlmemory'>
      <info>a malloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
      <arg name='file' type='const char *' info='the file name or NULL'/>
      <arg name='line' type='int' info='the line number'/>
    </function>
    <function name='xmlMemBlocks' file='xmlmemory' module='xmlmemory'>
      <info>Provides the number of memory areas currently allocated</info>
      <return type='int' info='an int representing the number of blocks'/>
    </function>
    <function name='xmlMemDisplay' file='xmlmemory' module='xmlmemory'>
      <info>show in-extenso the memory blocks allocated</info>
      <return type='void'/>
      <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file, if NULL, the result is written to the file .memorylist'/>
    </function>
    <function name='xmlMemDisplayLast' file='xmlmemory' module='xmlmemory'>
      <info>the last nbBytes of memory allocated and not freed, useful for dumping the memory left allocated between two places at runtime.</info>
      <return type='void'/>
      <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file, if NULL, the result is written to the file .memorylist'/>
      <arg name='nbBytes' type='long' info='the amount of memory to dump'/>
    </function>
    <function name='xmlMemFree' file='xmlmemory' module='xmlmemory'>
      <info>a free() equivalent, with error checking.</info>
      <return type='void'/>
      <arg name='ptr' type='void *' info='the memory block pointer'/>
    </function>
    <function name='xmlMemGet' file='xmlmemory' module='xmlmemory'>
      <info>Provides the memory access functions set currently in use</info>
      <return type='int' info='0 on success'/>
      <arg name='freeFunc' type='xmlFreeFunc *' info='place to save the free() function in use'/>
      <arg name='mallocFunc' type='xmlMallocFunc *' info='place to save the malloc() function in use'/>
      <arg name='reallocFunc' type='xmlReallocFunc *' info='place to save the realloc() function in use'/>
      <arg name='strdupFunc' type='xmlStrdupFunc *' info='place to save the strdup() function in use'/>
    </function>
    <function name='xmlMemMalloc' file='xmlmemory' module='xmlmemory'>
      <info>a malloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
    </function>
    <function name='xmlMemRealloc' file='xmlmemory' module='xmlmemory'>
      <info>a realloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='ptr' type='void *' info='the initial memory block pointer'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
    </function>
    <function name='xmlMemSetup' file='xmlmemory' module='xmlmemory'>
      <info>Override the default memory access functions with a new set This has to be called before any other libxml routines !  Should this be blocked if there was already some allocations done ?</info>
      <return type='int' info='0 on success'/>
      <arg name='freeFunc' type='xmlFreeFunc' info='the free() function to use'/>
      <arg name='mallocFunc' type='xmlMallocFunc' info='the malloc() function to use'/>
      <arg name='reallocFunc' type='xmlReallocFunc' info='the realloc() function to use'/>
      <arg name='strdupFunc' type='xmlStrdupFunc' info='the strdup() function to use'/>
    </function>
    <function name='xmlMemShow' file='xmlmemory' module='xmlmemory'>
      <info>show a show display of the memory allocated, and dump the @nr last allocated areas which were not freed</info>
      <return type='void'/>
      <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file'/>
      <arg name='nr' type='int' info='number of entries to dump'/>
    </function>
    <function name='xmlMemStrdupLoc' file='xmlmemory' module='xmlmemory'>
      <info>a strdup() equivalent, with logging of the allocation info.</info>
      <return type='char *' info='a pointer to the new string or NULL if allocation error occurred.'/>
      <arg name='str' type='const char *' info='the initial string pointer'/>
      <arg name='file' type='const char *' info='the file name or NULL'/>
      <arg name='line' type='int' info='the line number'/>
    </function>
    <function name='xmlMemUsed' file='xmlmemory' module='xmlmemory'>
      <info>Provides the amount of memory currently allocated</info>
      <return type='int' info='an int representing the amount of memory allocated.'/>
    </function>
    <function name='xmlMemoryDump' file='xmlmemory' module='xmlmemory'>
      <info>Dump in-extenso the memory blocks allocated to the file .memorylist</info>
      <return type='void'/>
    </function>
    <function name='xmlMemoryStrdup' file='xmlmemory' module='xmlmemory'>
      <info>a strdup() equivalent, with logging of the allocation info.</info>
      <return type='char *' info='a pointer to the new string or NULL if allocation error occurred.'/>
      <arg name='str' type='const char *' info='the initial string pointer'/>
    </function>
    <function name='xmlModuleClose' file='xmlmodule' module='xmlmodule'>
      <cond>defined(LIBXML_MODULES_ENABLED)</cond>
      <info>The close operations unload the associated module and free the data associated to the module.</info>
      <return type='int' info='0 in case of success, -1 in case of argument error and -2 if the module could not be closed/unloaded.'/>
      <arg name='module' type='xmlModulePtr' info='the module handle'/>
    </function>
    <function name='xmlModuleFree' file='xmlmodule' module='xmlmodule'>
      <cond>defined(LIBXML_MODULES_ENABLED)</cond>
      <info>The free operations free the data associated to the module but does not unload the associated shared library which may still be in use.</info>
      <return type='int' info='0 in case of success, -1 in case of argument error'/>
      <arg name='module' type='xmlModulePtr' info='the module handle'/>
    </function>
    <function name='xmlModuleOpen' file='xmlmodule' module='xmlmodule'>
      <cond>defined(LIBXML_MODULES_ENABLED)</cond>
      <info>Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * . TODO: options are not yet implemented.</info>
      <return type='xmlModulePtr' info='a handle for the module or NULL in case of error'/>
      <arg name='name' type='const char *' info='the module name'/>
      <arg name='options' type='int' info='a set of xmlModuleOption'/>
    </function>
    <function name='xmlModuleSymbol' file='xmlmodule' module='xmlmodule'>
      <cond>defined(LIBXML_MODULES_ENABLED)</cond>
      <info>Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * .</info>
      <return type='int' info='0 if the symbol was found, or -1 in case of error'/>
      <arg name='module' type='xmlModulePtr' info='the module'/>
      <arg name='name' type='const char *' info='the name of the symbol'/>
      <arg name='symbol' type='void **' info='the resulting symbol address'/>
    </function>
    <function name='xmlMutexLock' file='threads' module='