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, const 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, const xmlChar * name)
void xmlHashDefaultDeallocator (void * entry, const 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, const 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, const 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 occurred. |
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 occurred. |
Function type: xmlHashDeallocatorFunction type: xmlHashDeallocator
void xmlHashDeallocator (void * payload, const xmlChar * name)
Callback to free data from a hash. payload: | the data in the hash | name: | the name associated |
Function: xmlHashDefaultDeallocatorvoid xmlHashDefaultDeallocator (void * entry, const xmlChar * name)
Free a hash table entry with xmlFree.
entry: | the hash table entry | name: | the entry's name |
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, const 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 |