13473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 221e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack * Summary: Chained hash tables 3f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * Description: This module implements the hash table support used in 4f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * various places in the library. 53473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * 6be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software. 73473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * 8be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Bjorn Reese <bjorn.reese@systematic.dk> 93473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifndef __XML_HASH_H__ 123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define __XML_HASH_H__ 133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus 153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorextern "C" { 163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif 173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 1961f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * The hash table. 203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlHashTable xmlHashTable; 223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlHashTable *xmlHashTablePtr; 233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 245841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard#ifdef __cplusplus 255841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard} 265841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard#endif 275841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard 285841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard#include <libxml/xmlversion.h> 295841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard#include <libxml/parser.h> 30316a5c398919cc1503c59130f7aed14a1111cab7Daniel Veillard#include <libxml/dict.h> 315841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard 325841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard#ifdef __cplusplus 335841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillardextern "C" { 345841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard#endif 355841f0e0a44fdfaf6cee6511fbb71d5a76e3ff23Daniel Veillard 363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 37ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * Recent version of gcc produce a warning when a function pointer is assigned 38ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * to an object pointer, or vice versa. The following macro is a dirty hack 39ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * to allow suppression of the warning. If your architecture has function 40ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * pointers which are a different size than a void pointer, there may be some 41ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * serious trouble within the library. 42ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack */ 43ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack/** 44ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * XML_CAST_FPTR: 45ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * @fptr: pointer to a function 46ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * 47ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * Macro to do a casting from an object pointer to a 48ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * function pointer without encountering a warning from 49ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * gcc 50ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack * 51c0c6ce29187750f736ba26e7182bdc93fd617bccDaniel Veillard * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) 52c0c6ce29187750f736ba26e7182bdc93fd617bccDaniel Veillard * This macro violated ISO C aliasing rules (gcc4 on s390 broke) 53c0c6ce29187750f736ba26e7182bdc93fd617bccDaniel Veillard * so it is disabled now 54ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack */ 55c0c6ce29187750f736ba26e7182bdc93fd617bccDaniel Veillard 56c0c6ce29187750f736ba26e7182bdc93fd617bccDaniel Veillard#define XML_CAST_FPTR(fptr) fptr 57c0c6ce29187750f736ba26e7182bdc93fd617bccDaniel Veillard 58ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack 59ad0e67c57f26f691fc120d5c5336cee9885cf324William M. Brack/* 603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * function types: 613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 629d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 639d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlHashDeallocator: 649d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @payload: the data in the hash 659d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @name: the name associated 669d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 6761f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Callback to free data from a hash. 689d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef void (*xmlHashDeallocator)(void *payload, xmlChar *name); 709d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 719d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlHashCopier: 729d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @payload: the data in the hash 739d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @name: the name associated 749d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 7561f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Callback to copy data from a hash. 769d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 7761f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Returns a copy of the data or NULL in case of error. 789d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef void *(*xmlHashCopier)(void *payload, xmlChar *name); 809d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 819d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlHashScanner: 829d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @payload: the data in the hash 839d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @data: extra scannner data 849d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @name: the name associated 859d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 8661f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Callback when scanning data in a hash with the simple scanner. 879d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 889d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillardtypedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name); 899d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 909d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlHashScannerFull: 919d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @payload: the data in the hash 929d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @data: extra scannner data 939d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @name: the name associated 949d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @name2: the second name associated 959d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @name3: the third name associated 969d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 9761f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Callback when scanning data in a hash with the full scanner. 989d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 99e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyertypedef void (*xmlHashScannerFull)(void *payload, void *data, 100e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer const xmlChar *name, const xmlChar *name2, 101e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer const xmlChar *name3); 1023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 1033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 10461f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Constructor and destructor. 1053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 10676874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlHashTablePtr XMLCALL 10776874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashCreate (int size); 108316a5c398919cc1503c59130f7aed14a1111cab7Daniel VeillardXMLPUBFUN xmlHashTablePtr XMLCALL 109316a5c398919cc1503c59130f7aed14a1111cab7Daniel Veillard xmlHashCreateDict(int size, 110316a5c398919cc1503c59130f7aed14a1111cab7Daniel Veillard xmlDictPtr dict); 111f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 11276874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashFree (xmlHashTablePtr table, 1133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashDeallocator f); 1143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 1153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 11661f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Add a new entry to the hash table. 1173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 118f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 11976874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashAddEntry (xmlHashTablePtr table, 1203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *userdata); 122f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 12376874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashUpdateEntry(xmlHashTablePtr table, 1243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *userdata, 1263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashDeallocator f); 127f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 12876874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashAddEntry2(xmlHashTablePtr table, 1293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, 1313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *userdata); 132f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 13376874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashUpdateEntry2(xmlHashTablePtr table, 1343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, 1363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *userdata, 1373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashDeallocator f); 138f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 13976874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashAddEntry3(xmlHashTablePtr table, 1403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, 1423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name3, 1433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *userdata); 144f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 14576874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashUpdateEntry3(xmlHashTablePtr table, 1463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, 1483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name3, 1493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *userdata, 1503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashDeallocator f); 1513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 1523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 15361f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Remove an entry from the hash table. 1543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 155f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 15676874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, 1573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashDeallocator f); 158f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 15976874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, 1603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, xmlHashDeallocator f); 161f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 16276874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name, 1633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, const xmlChar *name3, 1643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashDeallocator f); 1653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 1663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 16761f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Retrieve the userdata. 1683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 169f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 17076874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashLookup (xmlHashTablePtr table, 1713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name); 172f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 17376874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashLookup2 (xmlHashTablePtr table, 1743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2); 176f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 17776874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashLookup3 (xmlHashTablePtr table, 1783473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 1793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, 1803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name3); 181f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 18207cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard xmlHashQLookup (xmlHashTablePtr table, 18307cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *name, 18407cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *prefix); 185f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 18607cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard xmlHashQLookup2 (xmlHashTablePtr table, 18707cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *name, 18807cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *prefix, 18907cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *name2, 19007cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *prefix2); 191f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 19207cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard xmlHashQLookup3 (xmlHashTablePtr table, 19307cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *name, 19407cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *prefix, 19507cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *name2, 19607cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *prefix2, 19707cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *name3, 19807cb8226c097ce3d8db934a07025c62803ad1f64Daniel Veillard const xmlChar *prefix3); 1993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 2003473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 20161f261749f44d6e6f938441598bc724cd1375c51Daniel Veillard * Helpers. 2023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 203f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN xmlHashTablePtr XMLCALL 20476874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashCopy (xmlHashTablePtr table, 2053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashCopier f); 206f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 20776874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashSize (xmlHashTablePtr table); 208f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 20976874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashScan (xmlHashTablePtr table, 2103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashScanner f, 2113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *data); 212f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 21376874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashScan3 (xmlHashTablePtr table, 2143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name, 2153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name2, 2163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const xmlChar *name3, 2173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlHashScanner f, 2183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *data); 219f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 22076874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashScanFull (xmlHashTablePtr table, 221e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer xmlHashScannerFull f, 222e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer void *data); 223f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 22476874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic xmlHashScanFull3(xmlHashTablePtr table, 225e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer const xmlChar *name, 226e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer const xmlChar *name2, 227e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer const xmlChar *name3, 228e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer xmlHashScannerFull f, 229e812624729df8ecb507aaafb780bef39124f8d9fThomas Broyer void *data); 2303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus 2313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} 2323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif 2333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif /* ! __XML_HASH_H__ */ 234