This module implements the hash table support used in various places in the library.  Table of Contents#define XML_CAST_FPTR Structure xmlHashTable struct _xmlHashTable
The content of this structure is not made public by the API.
 Typedef xmlHashTable * xmlHashTablePtr
 int	xmlHashAddEntry			(xmlHashTablePtr table,  					 const xmlChar * name,  					 void * userdata) 
int	xmlHashAddEntry2		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 void * userdata) 
int	xmlHashAddEntry3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 void * userdata) 
Function type: xmlHashCopier
void *	xmlHashCopier			(void * payload,  					 xmlChar * name)
 
xmlHashTablePtr	xmlHashCopy		(xmlHashTablePtr table,  					 xmlHashCopier f) 
xmlHashTablePtr	xmlHashCreate		(int size) 
xmlHashTablePtr	xmlHashCreateDict	(int size,  					 xmlDictPtr dict) 
Function type: xmlHashDeallocator
void	xmlHashDeallocator		(void * payload,  					 xmlChar * name)
 
void	xmlHashFree			(xmlHashTablePtr table,  					 xmlHashDeallocator f) 
void *	xmlHashLookup			(xmlHashTablePtr table,  					 const xmlChar * name) 
void *	xmlHashLookup2			(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2) 
void *	xmlHashLookup3			(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3) 
void *	xmlHashQLookup			(xmlHashTablePtr table,  					 const xmlChar * prefix,  					 const xmlChar * name) 
void *	xmlHashQLookup2			(xmlHashTablePtr table,  					 const xmlChar * prefix,  					 const xmlChar * name,  					 const xmlChar * prefix2,  					 const xmlChar * name2) 
void *	xmlHashQLookup3			(xmlHashTablePtr table,  					 const xmlChar * prefix,  					 const xmlChar * name,  					 const xmlChar * prefix2,  					 const xmlChar * name2,  					 const xmlChar * prefix3,  					 const xmlChar * name3) 
int	xmlHashRemoveEntry		(xmlHashTablePtr table,  					 const xmlChar * name,  					 xmlHashDeallocator f) 
int	xmlHashRemoveEntry2		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 xmlHashDeallocator f) 
int	xmlHashRemoveEntry3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 xmlHashDeallocator f) 
void	xmlHashScan			(xmlHashTablePtr table,  					 xmlHashScanner f,  					 void * data) 
void	xmlHashScan3			(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 xmlHashScanner f,  					 void * data) 
void	xmlHashScanFull			(xmlHashTablePtr table,  					 xmlHashScannerFull f,  					 void * data) 
void	xmlHashScanFull3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 xmlHashScannerFull f,  					 void * data) 
Function type: xmlHashScanner
void	xmlHashScanner			(void * payload,  					 void * data,  					 xmlChar * name)
 
Function type: xmlHashScannerFull
void	xmlHashScannerFull		(void * payload,  					 void * data,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3)
 
int	xmlHashSize			(xmlHashTablePtr table) 
int	xmlHashUpdateEntry		(xmlHashTablePtr table,  					 const xmlChar * name,  					 void * userdata,  					 xmlHashDeallocator f) 
int	xmlHashUpdateEntry2		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 void * userdata,  					 xmlHashDeallocator f) 
int	xmlHashUpdateEntry3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 void * userdata,  					 xmlHashDeallocator f) 
Description
Macro: XML_CAST_FPTR#define XML_CAST_FPTR Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now 
Structure xmlHashTable struct _xmlHashTable {
The content of this structure is not made public by the API.
} Function: xmlHashAddEntryint	xmlHashAddEntry			(xmlHashTablePtr table,  					 const xmlChar * name,  					 void * userdata) 
 Add the @userdata to the hash @table. This can later be retrieved by using the @name. Duplicate names generate errors. 
| table: | the hash table |  | name: | the name of the userdata |  | userdata: | a pointer to the userdata |  | Returns: | 0 the addition succeeded and -1 in case of error. |  
 Function: xmlHashAddEntry2int	xmlHashAddEntry2		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 void * userdata) 
 Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Duplicate tuples generate errors. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | userdata: | a pointer to the userdata |  | Returns: | 0 the addition succeeded and -1 in case of error. |  
 Function: xmlHashAddEntry3int	xmlHashAddEntry3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 void * userdata) 
 Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Duplicate entries generate errors. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | name3: | a third name of the userdata |  | userdata: | a pointer to the userdata |  | Returns: | 0 the addition succeeded and -1 in case of error. |  
 Function type: xmlHashCopierFunction type: xmlHashCopier
void *	xmlHashCopier			(void * payload,  					 xmlChar * name)
 Callback to copy data from a hash. | payload: | the data in the hash |  | name: | the name associated |  | Returns: | a copy of the data or NULL in case of error. |  
  
Function: xmlHashCopyxmlHashTablePtr	xmlHashCopy		(xmlHashTablePtr table,  					 xmlHashCopier f) 
 Scan the hash @table and applied @f to each value. 
| table: | the hash table |  | f: | the copier function for items in the hash |  | Returns: | the new table or NULL in case of error. |  
 Function: xmlHashCreatexmlHashTablePtr	xmlHashCreate		(int size) 
 Create a new xmlHashTablePtr. 
| size: | the size of the hash table |  | Returns: | the newly created object, or NULL if an error occured. |  
 Function: xmlHashCreateDictxmlHashTablePtr	xmlHashCreateDict	(int size,  					 xmlDictPtr dict) 
 Create a new xmlHashTablePtr which will use @dict as the internal dictionary 
| size: | the size of the hash table |  | dict: | a dictionary to use for the hash |  | Returns: | the newly created object, or NULL if an error occured. |  
 Function type: xmlHashDeallocatorFunction type: xmlHashDeallocator
void	xmlHashDeallocator		(void * payload,  					 xmlChar * name)
 Callback to free data from a hash. | payload: | the data in the hash |  | name: | the name associated |  
  
Function: xmlHashFreevoid	xmlHashFree			(xmlHashTablePtr table,  					 xmlHashDeallocator f) 
 Free the hash @table and its contents. The userdata is deallocated with @f if provided. 
| table: | the hash table |  | f: | the deallocator function for items in the hash |  
 Function: xmlHashLookupvoid *	xmlHashLookup			(xmlHashTablePtr table,  					 const xmlChar * name) 
 Find the userdata specified by the @name. 
| table: | the hash table |  | name: | the name of the userdata |  | Returns: | the pointer to the userdata |  
 Function: xmlHashLookup2void *	xmlHashLookup2			(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2) 
 Find the userdata specified by the (@name, @name2) tuple. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | Returns: | the pointer to the userdata |  
 Function: xmlHashLookup3void *	xmlHashLookup3			(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3) 
 Find the userdata specified by the (@name, @name2, @name3) tuple. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | name3: | a third name of the userdata |  | Returns: | the a pointer to the userdata |  
 Function: xmlHashQLookupvoid *	xmlHashQLookup			(xmlHashTablePtr table,  					 const xmlChar * prefix,  					 const xmlChar * name) 
 Find the userdata specified by the QName @prefix:@name/@name. 
| table: | the hash table |  | prefix: | the prefix of the userdata |  | name: | the name of the userdata |  | Returns: | the pointer to the userdata |  
 Function: xmlHashQLookup2void *	xmlHashQLookup2			(xmlHashTablePtr table,  					 const xmlChar * prefix,  					 const xmlChar * name,  					 const xmlChar * prefix2,  					 const xmlChar * name2) 
 Find the userdata specified by the QNames tuple 
| table: | the hash table |  | prefix: | the prefix of the userdata |  | name: | the name of the userdata |  | prefix2: | the second prefix of the userdata |  | name2: | a second name of the userdata |  | Returns: | the pointer to the userdata |  
 Function: xmlHashQLookup3void *	xmlHashQLookup3			(xmlHashTablePtr table,  					 const xmlChar * prefix,  					 const xmlChar * name,  					 const xmlChar * prefix2,  					 const xmlChar * name2,  					 const xmlChar * prefix3,  					 const xmlChar * name3) 
 Find the userdata specified by the (@name, @name2, @name3) tuple. 
| table: | the hash table |  | prefix: | the prefix of the userdata |  | name: | the name of the userdata |  | prefix2: | the second prefix of the userdata |  | name2: | a second name of the userdata |  | prefix3: | the third prefix of the userdata |  | name3: | a third name of the userdata |  | Returns: | the a pointer to the userdata |  
 Function: xmlHashRemoveEntryint	xmlHashRemoveEntry		(xmlHashTablePtr table,  					 const xmlChar * name,  					 xmlHashDeallocator f) 
 Find the userdata specified by the @name and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f. 
| table: | the hash table |  | name: | the name of the userdata |  | f: | the deallocator function for removed item (if any) |  | Returns: | 0 if the removal succeeded and -1 in case of error or not found. |  
 Function: xmlHashRemoveEntry2int	xmlHashRemoveEntry2		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 xmlHashDeallocator f) 
 Find the userdata specified by the (@name, @name2) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | f: | the deallocator function for removed item (if any) |  | Returns: | 0 if the removal succeeded and -1 in case of error or not found. |  
 Function: xmlHashRemoveEntry3int	xmlHashRemoveEntry3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 xmlHashDeallocator f) 
 Find the userdata specified by the (@name, @name2, @name3) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | name3: | a third name of the userdata |  | f: | the deallocator function for removed item (if any) |  | Returns: | 0 if the removal succeeded and -1 in case of error or not found. |  
 Function: xmlHashScanvoid	xmlHashScan			(xmlHashTablePtr table,  					 xmlHashScanner f,  					 void * data) 
 Scan the hash @table and applied @f to each value. 
| table: | the hash table |  | f: | the scanner function for items in the hash |  | data: | extra data passed to f |  
 Function: xmlHashScan3void	xmlHashScan3			(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 xmlHashScanner f,  					 void * data) 
 Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match. 
| table: | the hash table |  | name: | the name of the userdata or NULL |  | name2: | a second name of the userdata or NULL |  | name3: | a third name of the userdata or NULL |  | f: | the scanner function for items in the hash |  | data: | extra data passed to f |  
 Function: xmlHashScanFullvoid	xmlHashScanFull			(xmlHashTablePtr table,  					 xmlHashScannerFull f,  					 void * data) 
 Scan the hash @table and applied @f to each value. 
| table: | the hash table |  | f: | the scanner function for items in the hash |  | data: | extra data passed to f |  
 Function: xmlHashScanFull3void	xmlHashScanFull3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 xmlHashScannerFull f,  					 void * data) 
 Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match. 
| table: | the hash table |  | name: | the name of the userdata or NULL |  | name2: | a second name of the userdata or NULL |  | name3: | a third name of the userdata or NULL |  | f: | the scanner function for items in the hash |  | data: | extra data passed to f |  
 Function type: xmlHashScannerFunction type: xmlHashScanner
void	xmlHashScanner			(void * payload,  					 void * data,  					 xmlChar * name)
 Callback when scanning data in a hash with the simple scanner. | payload: | the data in the hash |  | data: | extra scannner data |  | name: | the name associated |  
  
Function type: xmlHashScannerFullFunction type: xmlHashScannerFull
void	xmlHashScannerFull		(void * payload,  					 void * data,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3)
 Callback when scanning data in a hash with the full scanner. | payload: | the data in the hash |  | data: | extra scannner data |  | name: | the name associated |  | name2: | the second name associated |  | name3: | the third name associated |  
  
Function: xmlHashSizeint	xmlHashSize			(xmlHashTablePtr table) 
 Query the number of elements installed in the hash @table. 
| table: | the hash table |  | Returns: | the number of elements in the hash table or -1 in case of error |  
 Function: xmlHashUpdateEntryint	xmlHashUpdateEntry		(xmlHashTablePtr table,  					 const xmlChar * name,  					 void * userdata,  					 xmlHashDeallocator f) 
 Add the @userdata to the hash @table. This can later be retrieved by using the @name. Existing entry for this @name will be removed and freed with @f if found. 
| table: | the hash table |  | name: | the name of the userdata |  | userdata: | a pointer to the userdata |  | f: | the deallocator function for replaced item (if any) |  | Returns: | 0 the addition succeeded and -1 in case of error. |  
 Function: xmlHashUpdateEntry2int	xmlHashUpdateEntry2		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 void * userdata,  					 xmlHashDeallocator f) 
 Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Existing entry for this tuple will be removed and freed with @f if found. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | userdata: | a pointer to the userdata |  | f: | the deallocator function for replaced item (if any) |  | Returns: | 0 the addition succeeded and -1 in case of error. |  
 Function: xmlHashUpdateEntry3int	xmlHashUpdateEntry3		(xmlHashTablePtr table,  					 const xmlChar * name,  					 const xmlChar * name2,  					 const xmlChar * name3,  					 void * userdata,  					 xmlHashDeallocator f) 
 Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Existing entry for this tuple will be removed and freed with @f if found. 
| table: | the hash table |  | name: | the name of the userdata |  | name2: | a second name of the userdata |  | name3: | a third name of the userdata |  | userdata: | a pointer to the userdata |  | f: | the deallocator function for replaced item (if any) |  | Returns: | 0 the addition succeeded and -1 in case of error. |  
 Daniel Veillard  |