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