From 35a201cc8ef0c3f5b2df88d2e528aabee1048348 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 18:47:09 +0200 Subject: Initial/Final commit --- libxml2-2.9.10/doc/devhelp/libxml2-hash.html | 219 +++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 libxml2-2.9.10/doc/devhelp/libxml2-hash.html (limited to 'libxml2-2.9.10/doc/devhelp/libxml2-hash.html') diff --git a/libxml2-2.9.10/doc/devhelp/libxml2-hash.html b/libxml2-2.9.10/doc/devhelp/libxml2-hash.html new file mode 100644 index 0000000..9f997fb --- /dev/null +++ b/libxml2-2.9.10/doc/devhelp/libxml2-hash.html @@ -0,0 +1,219 @@ + + + + + hash: Chained hash tables + + + + + + + + + + + + + + + + +

+ hash +

+

hash - Chained hash tables

+

This module implements the hash table support used in various places in the library.

+

Author(s): Bjorn Reese <bjorn.reese@systematic.dk>

+
+

Synopsis

+
#define XML_CAST_FPTR(fptr);
+typedef struct _xmlHashTable xmlHashTable;
+typedef xmlHashTable * xmlHashTablePtr;
+void	xmlHashScanFull			(xmlHashTablePtr table, 
xmlHashScannerFull f,
void * data); +void xmlHashScan (xmlHashTablePtr table,
xmlHashScanner f,
void * data); +typedef void xmlHashScannerFull (void * payload,
void * data,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3); +xmlHashTablePtr xmlHashCreateDict (int size,
xmlDictPtr dict); +int xmlHashAddEntry (xmlHashTablePtr table,
const xmlChar * name,
void * userdata); +int xmlHashUpdateEntry (xmlHashTablePtr table,
const xmlChar * name,
void * userdata,
xmlHashDeallocator f); +void * xmlHashQLookup3 (xmlHashTablePtr table,
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * prefix2,
const xmlChar * name2,
const xmlChar * prefix3,
const xmlChar * name3); +void * xmlHashQLookup2 (xmlHashTablePtr table,
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * prefix2,
const xmlChar * name2); +void xmlHashScan3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashScanner f,
void * data); +typedef void xmlHashScanner (void * payload,
void * data,
const xmlChar * name); +typedef void xmlHashDeallocator (void * payload,
const xmlChar * name); +xmlHashTablePtr xmlHashCreate (int size); +void xmlHashFree (xmlHashTablePtr table,
xmlHashDeallocator f); +void * xmlHashLookup (xmlHashTablePtr table,
const xmlChar * name); +void * xmlHashQLookup (xmlHashTablePtr table,
const xmlChar * prefix,
const xmlChar * name); +int xmlHashUpdateEntry2 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
void * userdata,
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); +xmlHashTablePtr xmlHashCopy (xmlHashTablePtr table,
xmlHashCopier f); +void xmlHashScanFull3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
xmlHashScannerFull f,
void * data); +int xmlHashUpdateEntry3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3,
void * userdata,
xmlHashDeallocator f); +void xmlHashDefaultDeallocator (void * entry,
const xmlChar * name); +void * xmlHashLookup3 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2,
const xmlChar * name3); +void * xmlHashLookup2 (xmlHashTablePtr table,
const xmlChar * name,
const xmlChar * name2); +int xmlHashRemoveEntry (xmlHashTablePtr table,
const xmlChar * name,
xmlHashDeallocator f); +typedef void * xmlHashCopier (void * payload,
const xmlChar * name); +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); +int xmlHashSize (xmlHashTablePtr table); +
+
+
+

Description

+
+
+

Details

+
+

Macro XML_CAST_FPTR

#define XML_CAST_FPTR(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

fptr:pointer to a function
+
+
+

Structure xmlHashTable

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

+

+
+

Typedef xmlHashTablePtr

xmlHashTable * xmlHashTablePtr;
+

+

+
+

Function 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 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 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 scanner data
name:the name associated
+
+

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 scanner data
name:the name associated
name2:the second name associated
name3:the third name associated
+
+

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.
+
+

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.
+
+

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.
+
+

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.
+
+

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 occurred.
+
+

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 occurred.
+
+

xmlHashDefaultDeallocator ()

void	xmlHashDefaultDeallocator	(void * entry, 
const
xmlChar * name)
+

Free a hash table entry with xmlFree.

+
entry:the hash table entry
name:the entry's name
+
+

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
+
+

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
+
+

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
+
+

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
+
+

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
+
+

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
+
+

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
+
+

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.
+
+

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.
+
+

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.
+
+

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
+
+

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
+
+

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
+
+

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
+
+

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
+
+

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.
+
+

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.
+
+

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.
+
+
+
+ + -- cgit v1.2.3