  
    
    
    
    
    
    
    
  
  
    
      
        
          
libxml2-globals.html            
Prev          
        
        
          
general.html            
Up          
        
        
          
index.html            
Home          
        
        
          
libxml2-list.html            
Next          
        
        
libxml2 Reference Manual      
    
    
      
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_FPTRXML_CAST_FPTR (fptr);
typedef struct _xmlHashTable 
#xmlHashTablexmlHashTable ;
typedef 
libxml2-hash.html#xmlHashTablexmlHashTable  * #xmlHashTablePtrxmlHashTablePtr ;
void	
#xmlHashScanFullxmlHashScanFull 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashScannerFullxmlHashScannerFull  f, 					 void * data);
void	
#xmlHashScanxmlHashScan 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashScannerxmlHashScanner  f, 					 void * data);
typedef void 
#xmlHashScannerFullxmlHashScannerFull 		(void * payload, 					 void * data, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3);
libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr 	#xmlHashCreateDictxmlHashCreateDict 	(int size, 					 libxml2-dict.html#xmlDictPtrxmlDictPtr  dict);
int	
#xmlHashAddEntryxmlHashAddEntry 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 void * userdata);
int	
#xmlHashUpdateEntryxmlHashUpdateEntry 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 void * userdata, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
void *	
#xmlHashQLookup3xmlHashQLookup3 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix3, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3);
void *	
#xmlHashQLookup2xmlHashQLookup2 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2);
void	
#xmlHashScan3xmlHashScan3 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 libxml2-hash.html#xmlHashScannerxmlHashScanner  f, 					 void * data);
typedef void 
#xmlHashScannerxmlHashScanner 			(void * payload, 					 void * data, 					 libxml2-xmlstring.html#xmlCharxmlChar  * name);
typedef void 
#xmlHashDeallocatorxmlHashDeallocator 		(void * payload, 					 libxml2-xmlstring.html#xmlCharxmlChar  * name);
libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr 	#xmlHashCreatexmlHashCreate 		(int size);
void	
#xmlHashFreexmlHashFree 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
void *	
#xmlHashLookupxmlHashLookup 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name);
void *	
#xmlHashQLookupxmlHashQLookup 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name);
int	
#xmlHashUpdateEntry2xmlHashUpdateEntry2 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 void * userdata, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
int	
#xmlHashRemoveEntry2xmlHashRemoveEntry2 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
int	
#xmlHashRemoveEntry3xmlHashRemoveEntry3 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr 	#xmlHashCopyxmlHashCopy 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashCopierxmlHashCopier  f);
void	
#xmlHashScanFull3xmlHashScanFull3 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 libxml2-hash.html#xmlHashScannerFullxmlHashScannerFull  f, 					 void * data);
int	
#xmlHashUpdateEntry3xmlHashUpdateEntry3 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 void * userdata, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
void *	
#xmlHashLookup3xmlHashLookup3 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3);
void *	
#xmlHashLookup2xmlHashLookup2 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2);
int	
#xmlHashRemoveEntryxmlHashRemoveEntry 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  f);
typedef void * 
#xmlHashCopierxmlHashCopier 			(void * payload, 					 libxml2-xmlstring.html#xmlCharxmlChar  * name);
int	
#xmlHashAddEntry2xmlHashAddEntry2 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 void * userdata);
int	
#xmlHashAddEntry3xmlHashAddEntry3 		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 void * userdata);
int	
#xmlHashSizexmlHashSize 			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table);
    
    
      
Description
    
    
      
Details
      
        
Macro XML_CAST_FPTR
#define #XML_CAST_FPTRXML_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
libxml2-hash.html#xmlHashTablexmlHashTable  * xmlHashTablePtr;
        
        
Function type xmlHashCopier
void *	xmlHashCopier			(void * payload, 					 libxml2-xmlstring.html#xmlCharxmlChar  * 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, 					 libxml2-xmlstring.html#xmlCharxmlChar  * 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, 					 libxml2-xmlstring.html#xmlCharxmlChar  * 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
void	xmlHashScannerFull		(void * payload, 					 void * data, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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         
        
xmlHashAddEntry ()
int	xmlHashAddEntry			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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 ()
libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr 	xmlHashCopy		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashCopierxmlHashCopier  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 ()
libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr 	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.         
        
xmlHashCreateDict ()
libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr 	xmlHashCreateDict	(int size, 					 libxml2-dict.html#xmlDictPtrxmlDictPtr  dict)Create a new libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  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.         
        
xmlHashFree ()
void	xmlHashFree			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * prefix3, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * 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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashScannerxmlHashScanner  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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 libxml2-hash.html#xmlHashScannerxmlHashScanner  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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 libxml2-hash.html#xmlHashScannerFullxmlHashScannerFull  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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 libxml2-hash.html#xmlHashScannerFullxmlHashScannerFull  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			( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 void * userdata, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 void * userdata, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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		( libxml2-hash.html#xmlHashTablePtrxmlHashTablePtr  table, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name2, 					 const libxml2-xmlstring.html#xmlCharxmlChar  * name3, 					 void * userdata, 					 libxml2-hash.html#xmlHashDeallocatorxmlHashDeallocator  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.         
      
    
  
