1ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
2ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Summary: Chained hash tables
3ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Description: This module implements the hash table support used in
4ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 		various places in the library.
5ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
6ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Copy: See Copyright for the status of this software.
7ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
8ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Author: Bjorn Reese <bjorn.reese@systematic.dk>
9ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
10ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
11ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef __XML_HASH_H__
12ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define __XML_HASH_H__
13ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
14ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus
15ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectextern "C" {
16ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif
17ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
18ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
19ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * The hash table.
20ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
21ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef struct _xmlHashTable xmlHashTable;
22ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef xmlHashTable *xmlHashTablePtr;
23ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
24ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus
25ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}
26ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif
27ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
28ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlversion.h>
29ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/parser.h>
30ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/dict.h>
31ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
32ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus
33ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectextern "C" {
34ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif
35ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
36ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
37ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Recent version of gcc produce a warning when a function pointer is assigned
38ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * to an object pointer, or vice versa.  The following macro is a dirty hack
39ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * to allow suppression of the warning.  If your architecture has function
40ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * pointers which are a different size than a void pointer, there may be some
41ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * serious trouble within the library.
42ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
43ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
44ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * XML_CAST_FPTR:
45ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @fptr:  pointer to a function
46ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
47ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Macro to do a casting from an object pointer to a
48ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * function pointer without encountering a warning from
49ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * gcc
50ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
51ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
52ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * This macro violated ISO C aliasing rules (gcc4 on s390 broke)
53ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * so it is disabled now
54ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
55ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
56ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define XML_CAST_FPTR(fptr) fptr
57ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
58ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
59ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
60ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * function types:
61ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
62ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
63ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHashDeallocator:
64ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @payload:  the data in the hash
65ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name:  the name associated
66ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
67ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback to free data from a hash.
68ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
69ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
70ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
71ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHashCopier:
72ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @payload:  the data in the hash
73ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name:  the name associated
74ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
75ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback to copy data from a hash.
76ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
77ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns a copy of the data or NULL in case of error.
78ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
79ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
80ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
81ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHashScanner:
82ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @payload:  the data in the hash
83ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data:  extra scannner data
84ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name:  the name associated
85ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
86ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback when scanning data in a hash with the simple scanner.
87ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
88ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
89ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**
90ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHashScannerFull:
91ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @payload:  the data in the hash
92ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data:  extra scannner data
93ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name:  the name associated
94ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name2:  the second name associated
95ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name3:  the third name associated
96ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *
97ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback when scanning data in a hash with the full scanner.
98ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
99ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef void (*xmlHashScannerFull)(void *payload, void *data,
100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project				   const xmlChar *name, const xmlChar *name2,
101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project				   const xmlChar *name3);
102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Constructor and destructor.
105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN xmlHashTablePtr XMLCALL
107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashCreate	(int size);
108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN xmlHashTablePtr XMLCALL
109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashCreateDict(int size,
110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlDictPtr dict);
111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void XMLCALL
112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashFree	(xmlHashTablePtr table,
113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashDeallocator f);
114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Add a new entry to the hash table.
117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashAddEntry	(xmlHashTablePtr table,
120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name,
121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         void *userdata);
122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashUpdateEntry(xmlHashTablePtr table,
124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name,
125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         void *userdata,
126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashDeallocator f);
127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashAddEntry2(xmlHashTablePtr table,
129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name,
130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name2,
131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         void *userdata);
132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashUpdateEntry2(xmlHashTablePtr table,
134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name,
135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name2,
136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         void *userdata,
137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashDeallocator f);
138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashAddEntry3(xmlHashTablePtr table,
140ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name,
141ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name2,
142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name3,
143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         void *userdata);
144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashUpdateEntry3(xmlHashTablePtr table,
146ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name,
147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name2,
148ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         const xmlChar *name3,
149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project		                         void *userdata,
150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashDeallocator f);
151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Remove an entry from the hash table.
154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project                           xmlHashDeallocator f);
158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project                            const xmlChar *name2, xmlHashDeallocator f);
161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int  XMLCALL
162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project                            const xmlChar *name2, const xmlChar *name3,
164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project                            xmlHashDeallocator f);
165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Retrieve the userdata.
168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void * XMLCALL
170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashLookup	(xmlHashTablePtr table,
171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name);
172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void * XMLCALL
173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashLookup2	(xmlHashTablePtr table,
174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name2);
176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void * XMLCALL
177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashLookup3	(xmlHashTablePtr table,
178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name2,
180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name3);
181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void * XMLCALL
182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashQLookup	(xmlHashTablePtr table,
183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *prefix);
185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void * XMLCALL
186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashQLookup2	(xmlHashTablePtr table,
187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *prefix,
189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name2,
190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *prefix2);
191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void * XMLCALL
192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashQLookup3	(xmlHashTablePtr table,
193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *prefix,
195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name2,
196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *prefix2,
197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name3,
198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *prefix3);
199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project
200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/*
201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Helpers.
202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */
203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN xmlHashTablePtr XMLCALL
204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashCopy	(xmlHashTablePtr table,
205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashCopier f);
206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN int XMLCALL
207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashSize	(xmlHashTablePtr table);
208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void XMLCALL
209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashScan	(xmlHashTablePtr table,
210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashScanner f,
211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void XMLCALL
213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashScan3	(xmlHashTablePtr table,
214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name2,
216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name3,
217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashScanner f,
218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void XMLCALL
220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashScanFull	(xmlHashTablePtr table,
221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashScannerFull f,
222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN void XMLCALL
224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project			xmlHashScanFull3(xmlHashTablePtr table,
225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name,
226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name2,
227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 const xmlChar *name3,
228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 xmlHashScannerFull f,
229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project					 void *data);
230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus
231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}
232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif
233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* ! __XML_HASH_H__ */
234