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

Structure xmlHashTable
struct _xmlHashTable { The content of this structure is not made public by the API. }

Function: xmlHashAddEntry

int	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: xmlHashAddEntry2

int	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: xmlHashAddEntry3

int	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: xmlHashCopier

Function 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: xmlHashCopy

xmlHashTablePtr	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: xmlHashCreate

xmlHashTablePtr	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: xmlHashCreateDict

xmlHashTablePtr	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: xmlHashDeallocator

Function 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: xmlHashFree

void	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: xmlHashLookup

void *	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: xmlHashLookup2

void *	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: xmlHashLookup3

void *	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: xmlHashQLookup

void *	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: xmlHashQLookup2

void *	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: xmlHashQLookup3

void *	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: xmlHashRemoveEntry

int	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: xmlHashRemoveEntry2

int	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: xmlHashRemoveEntry3

int	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: xmlHashScan

void	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: xmlHashScan3

void	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: xmlHashScanFull

void	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: xmlHashScanFull3

void	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: xmlHashScanner

Function 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: xmlHashScannerFull

Function 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: xmlHashSize

int	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: xmlHashUpdateEntry

int	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: xmlHashUpdateEntry2

int	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: xmlHashUpdateEntry3

int	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