Viewing file: libxml2-hash.html (41.58 KB) -rw-r--r-- Select action/file-type: (+ ) | (+ ) | (+ ) | Code (+ ) | Session (+ ) | (+ ) | SDB (+ ) | (+ ) | (+ ) | (+ ) | (+ ) | (+ ) |
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 ;
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);
typedef void * xmlHashCopier (void * payload, const xmlChar * name);
xmlHashTablePtr xmlHashCopy (xmlHashTablePtr table, xmlHashCopier f);
xmlHashTablePtr xmlHashCreate (int size);
xmlHashTablePtr xmlHashCreateDict (int size, xmlDictPtr dict);
typedef 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);
typedef void xmlHashScanner (void * payload, void * data, const xmlChar * name);
typedef 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
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
struct _xmlHashTable {
The content of this structure is not made public by the API.
} xmlHashTable;
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.