• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>hash: Chained hash tables</title>
5<meta name="generator" content="Libxml2 devhelp stylesheet">
6<link rel="start" href="index.html" title="libxml2 Reference Manual">
7<link rel="up" href="general.html" title="API">
8<link rel="stylesheet" href="style.css" type="text/css">
9<link rel="chapter" href="general.html" title="API">
10</head>
11<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
12<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
13<td><a accesskey="p" href="libxml2-globals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
14<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
15<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
16<td><a accesskey="n" href="libxml2-list.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
17<th width="100%" align="center">libxml2 Reference Manual</th>
18</tr></table>
19<h2><span class="refentrytitle">hash</span></h2>
20<p>hash - Chained hash tables</p>
21<p>This module implements the hash table support used in various places in the library. </p>
22<p>Author(s): Bjorn Reese &lt;bjorn.reese@systematic.dk&gt; </p>
23<div class="refsynopsisdiv">
24<h2>Synopsis</h2>
25<pre class="synopsis">#define <a href="#XML_CAST_FPTR">XML_CAST_FPTR</a>(fptr);
26typedef struct _xmlHashTable <a href="#xmlHashTable">xmlHashTable</a>;
27typedef <a href="libxml2-hash.html#xmlHashTable">xmlHashTable</a> * <a href="#xmlHashTablePtr">xmlHashTablePtr</a>;
28int	<a href="#xmlHashAddEntry">xmlHashAddEntry</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 void * userdata);
29int	<a href="#xmlHashAddEntry2">xmlHashAddEntry2</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 void * userdata);
30int	<a href="#xmlHashAddEntry3">xmlHashAddEntry3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 void * userdata);
31typedef void * <a href="#xmlHashCopier">xmlHashCopier</a>			(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
32<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCopy">xmlHashCopy</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashCopier">xmlHashCopier</a> f);
33<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCreate">xmlHashCreate</a>		(int size);
34<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCreateDict">xmlHashCreateDict</a>	(int size, <br>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
35typedef void <a href="#xmlHashDeallocator">xmlHashDeallocator</a>		(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
36void	<a href="#xmlHashDefaultDeallocator">xmlHashDefaultDeallocator</a>	(void * entry, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
37void	<a href="#xmlHashFree">xmlHashFree</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
38void *	<a href="#xmlHashLookup">xmlHashLookup</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
39void *	<a href="#xmlHashLookup2">xmlHashLookup2</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2);
40void *	<a href="#xmlHashLookup3">xmlHashLookup3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3);
41void *	<a href="#xmlHashQLookup">xmlHashQLookup</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
42void *	<a href="#xmlHashQLookup2">xmlHashQLookup2</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2);
43void *	<a href="#xmlHashQLookup3">xmlHashQLookup3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix3, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3);
44int	<a href="#xmlHashRemoveEntry">xmlHashRemoveEntry</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
45int	<a href="#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
46int	<a href="#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
47void	<a href="#xmlHashScan">xmlHashScan</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> f, <br>					 void * data);
48void	<a href="#xmlHashScan3">xmlHashScan3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> f, <br>					 void * data);
49void	<a href="#xmlHashScanFull">xmlHashScanFull</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f, <br>					 void * data);
50void	<a href="#xmlHashScanFull3">xmlHashScanFull3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f, <br>					 void * data);
51typedef void <a href="#xmlHashScanner">xmlHashScanner</a>			(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
52typedef void <a href="#xmlHashScannerFull">xmlHashScannerFull</a>		(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3);
53int	<a href="#xmlHashSize">xmlHashSize</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table);
54int	<a href="#xmlHashUpdateEntry">xmlHashUpdateEntry</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 void * userdata, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
55int	<a href="#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 void * userdata, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
56int	<a href="#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 void * userdata, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
57</pre>
58</div>
59<div class="refsect1" lang="en"><h2>Description</h2></div>
60<div class="refsect1" lang="en">
61<h2>Details</h2>
62<div class="refsect2" lang="en">
63<div class="refsect2" lang="en">
64<h3>
65<a name="XML_CAST_FPTR">Macro </a>XML_CAST_FPTR</h3>
66<pre class="programlisting">#define <a href="#XML_CAST_FPTR">XML_CAST_FPTR</a>(fptr);
67</pre>
68<p>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 **)(&amp;fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now</p>
69<div class="variablelist"><table border="0">
70<col align="left">
71<tbody><tr>
72<td><span class="term"><i><tt>fptr</tt></i>:</span></td>
73<td>pointer to a function</td>
74</tr></tbody>
75</table></div>
76</div>
77<hr>
78<div class="refsect2" lang="en">
79<h3>
80<a name="xmlHashTable">Structure </a>xmlHashTable</h3>
81<pre class="programlisting">struct _xmlHashTable {
82The content of this structure is not made public by the API.
83} xmlHashTable;
84</pre>
85<p></p>
86</div>
87<hr>
88<div class="refsect2" lang="en">
89<h3>
90<a name="xmlHashTablePtr">Typedef </a>xmlHashTablePtr</h3>
91<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTable">xmlHashTable</a> * xmlHashTablePtr;
92</pre>
93<p></p>
94</div>
95<hr>
96<div class="refsect2" lang="en">
97<h3>
98<a name="xmlHashCopier"></a>Function type xmlHashCopier</h3>
99<pre class="programlisting">void *	xmlHashCopier			(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
100</pre>
101<p>Callback to copy data from a hash.</p>
102<div class="variablelist"><table border="0">
103<col align="left">
104<tbody>
105<tr>
106<td><span class="term"><i><tt>payload</tt></i>:</span></td>
107<td>the data in the hash</td>
108</tr>
109<tr>
110<td><span class="term"><i><tt>name</tt></i>:</span></td>
111<td>the name associated</td>
112</tr>
113<tr>
114<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
115<td>a copy of the data or NULL in case of error.</td>
116</tr>
117</tbody>
118</table></div>
119</div>
120<hr>
121<div class="refsect2" lang="en">
122<h3>
123<a name="xmlHashDeallocator"></a>Function type xmlHashDeallocator</h3>
124<pre class="programlisting">void	xmlHashDeallocator		(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
125</pre>
126<p>Callback to free data from a hash.</p>
127<div class="variablelist"><table border="0">
128<col align="left">
129<tbody>
130<tr>
131<td><span class="term"><i><tt>payload</tt></i>:</span></td>
132<td>the data in the hash</td>
133</tr>
134<tr>
135<td><span class="term"><i><tt>name</tt></i>:</span></td>
136<td>the name associated</td>
137</tr>
138</tbody>
139</table></div>
140</div>
141<hr>
142<div class="refsect2" lang="en">
143<h3>
144<a name="xmlHashScanner"></a>Function type xmlHashScanner</h3>
145<pre class="programlisting">void	xmlHashScanner			(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
146</pre>
147<p>Callback when scanning data in a hash with the simple scanner.</p>
148<div class="variablelist"><table border="0">
149<col align="left">
150<tbody>
151<tr>
152<td><span class="term"><i><tt>payload</tt></i>:</span></td>
153<td>the data in the hash</td>
154</tr>
155<tr>
156<td><span class="term"><i><tt>data</tt></i>:</span></td>
157<td>extra scanner data</td>
158</tr>
159<tr>
160<td><span class="term"><i><tt>name</tt></i>:</span></td>
161<td>the name associated</td>
162</tr>
163</tbody>
164</table></div>
165</div>
166<hr>
167<div class="refsect2" lang="en">
168<h3>
169<a name="xmlHashScannerFull"></a>Function type xmlHashScannerFull</h3>
170<pre class="programlisting">void	xmlHashScannerFull		(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3)<br>
171</pre>
172<p>Callback when scanning data in a hash with the full scanner.</p>
173<div class="variablelist"><table border="0">
174<col align="left">
175<tbody>
176<tr>
177<td><span class="term"><i><tt>payload</tt></i>:</span></td>
178<td>the data in the hash</td>
179</tr>
180<tr>
181<td><span class="term"><i><tt>data</tt></i>:</span></td>
182<td>extra scanner data</td>
183</tr>
184<tr>
185<td><span class="term"><i><tt>name</tt></i>:</span></td>
186<td>the name associated</td>
187</tr>
188<tr>
189<td><span class="term"><i><tt>name2</tt></i>:</span></td>
190<td>the second name associated</td>
191</tr>
192<tr>
193<td><span class="term"><i><tt>name3</tt></i>:</span></td>
194<td>the third name associated</td>
195</tr>
196</tbody>
197</table></div>
198</div>
199<hr>
200<div class="refsect2" lang="en">
201<h3>
202<a name="xmlHashAddEntry"></a>xmlHashAddEntry ()</h3>
203<pre class="programlisting">int	xmlHashAddEntry			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 void * userdata)<br>
204</pre>
205<p>Add the @userdata to the hash @table. This can later be retrieved by using the @name. Duplicate names generate errors.</p>
206<div class="variablelist"><table border="0">
207<col align="left">
208<tbody>
209<tr>
210<td><span class="term"><i><tt>table</tt></i>:</span></td>
211<td>the hash table</td>
212</tr>
213<tr>
214<td><span class="term"><i><tt>name</tt></i>:</span></td>
215<td>the name of the userdata</td>
216</tr>
217<tr>
218<td><span class="term"><i><tt>userdata</tt></i>:</span></td>
219<td>a pointer to the userdata</td>
220</tr>
221<tr>
222<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
223<td>0 the addition succeeded and -1 in case of error.</td>
224</tr>
225</tbody>
226</table></div>
227</div>
228<hr>
229<div class="refsect2" lang="en">
230<h3>
231<a name="xmlHashAddEntry2"></a>xmlHashAddEntry2 ()</h3>
232<pre class="programlisting">int	xmlHashAddEntry2		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 void * userdata)<br>
233</pre>
234<p>Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Duplicate tuples generate errors.</p>
235<div class="variablelist"><table border="0">
236<col align="left">
237<tbody>
238<tr>
239<td><span class="term"><i><tt>table</tt></i>:</span></td>
240<td>the hash table</td>
241</tr>
242<tr>
243<td><span class="term"><i><tt>name</tt></i>:</span></td>
244<td>the name of the userdata</td>
245</tr>
246<tr>
247<td><span class="term"><i><tt>name2</tt></i>:</span></td>
248<td>a second name of the userdata</td>
249</tr>
250<tr>
251<td><span class="term"><i><tt>userdata</tt></i>:</span></td>
252<td>a pointer to the userdata</td>
253</tr>
254<tr>
255<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
256<td>0 the addition succeeded and -1 in case of error.</td>
257</tr>
258</tbody>
259</table></div>
260</div>
261<hr>
262<div class="refsect2" lang="en">
263<h3>
264<a name="xmlHashAddEntry3"></a>xmlHashAddEntry3 ()</h3>
265<pre class="programlisting">int	xmlHashAddEntry3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 void * userdata)<br>
266</pre>
267<p>Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Duplicate entries generate errors.</p>
268<div class="variablelist"><table border="0">
269<col align="left">
270<tbody>
271<tr>
272<td><span class="term"><i><tt>table</tt></i>:</span></td>
273<td>the hash table</td>
274</tr>
275<tr>
276<td><span class="term"><i><tt>name</tt></i>:</span></td>
277<td>the name of the userdata</td>
278</tr>
279<tr>
280<td><span class="term"><i><tt>name2</tt></i>:</span></td>
281<td>a second name of the userdata</td>
282</tr>
283<tr>
284<td><span class="term"><i><tt>name3</tt></i>:</span></td>
285<td>a third name of the userdata</td>
286</tr>
287<tr>
288<td><span class="term"><i><tt>userdata</tt></i>:</span></td>
289<td>a pointer to the userdata</td>
290</tr>
291<tr>
292<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
293<td>0 the addition succeeded and -1 in case of error.</td>
294</tr>
295</tbody>
296</table></div>
297</div>
298<hr>
299<div class="refsect2" lang="en">
300<h3>
301<a name="xmlHashCopy"></a>xmlHashCopy ()</h3>
302<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCopy		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashCopier">xmlHashCopier</a> f)<br>
303</pre>
304<p>Scan the hash @table and applied @f to each value.</p>
305<div class="variablelist"><table border="0">
306<col align="left">
307<tbody>
308<tr>
309<td><span class="term"><i><tt>table</tt></i>:</span></td>
310<td>the hash table</td>
311</tr>
312<tr>
313<td><span class="term"><i><tt>f</tt></i>:</span></td>
314<td>the copier function for items in the hash</td>
315</tr>
316<tr>
317<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
318<td>the new table or NULL in case of error.</td>
319</tr>
320</tbody>
321</table></div>
322</div>
323<hr>
324<div class="refsect2" lang="en">
325<h3>
326<a name="xmlHashCreate"></a>xmlHashCreate ()</h3>
327<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCreate		(int size)<br>
328</pre>
329<p>Create a new <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>.</p>
330<div class="variablelist"><table border="0">
331<col align="left">
332<tbody>
333<tr>
334<td><span class="term"><i><tt>size</tt></i>:</span></td>
335<td>the size of the hash table</td>
336</tr>
337<tr>
338<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
339<td>the newly created object, or NULL if an error occurred.</td>
340</tr>
341</tbody>
342</table></div>
343</div>
344<hr>
345<div class="refsect2" lang="en">
346<h3>
347<a name="xmlHashCreateDict"></a>xmlHashCreateDict ()</h3>
348<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCreateDict	(int size, <br>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
349</pre>
350<p>Create a new <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> which will use @dict as the internal dictionary</p>
351<div class="variablelist"><table border="0">
352<col align="left">
353<tbody>
354<tr>
355<td><span class="term"><i><tt>size</tt></i>:</span></td>
356<td>the size of the hash table</td>
357</tr>
358<tr>
359<td><span class="term"><i><tt>dict</tt></i>:</span></td>
360<td>a dictionary to use for the hash</td>
361</tr>
362<tr>
363<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
364<td>the newly created object, or NULL if an error occurred.</td>
365</tr>
366</tbody>
367</table></div>
368</div>
369<hr>
370<div class="refsect2" lang="en">
371<h3>
372<a name="xmlHashDefaultDeallocator"></a>xmlHashDefaultDeallocator ()</h3>
373<pre class="programlisting">void	xmlHashDefaultDeallocator	(void * entry, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
374</pre>
375<p>Free a hash table entry with <a href="libxml2-globals.html#xmlFree">xmlFree</a>.</p>
376<div class="variablelist"><table border="0">
377<col align="left">
378<tbody>
379<tr>
380<td><span class="term"><i><tt>entry</tt></i>:</span></td>
381<td>the hash table entry</td>
382</tr>
383<tr>
384<td><span class="term"><i><tt>name</tt></i>:</span></td>
385<td>the entry's name</td>
386</tr>
387</tbody>
388</table></div>
389</div>
390<hr>
391<div class="refsect2" lang="en">
392<h3>
393<a name="xmlHashFree"></a>xmlHashFree ()</h3>
394<pre class="programlisting">void	xmlHashFree			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
395</pre>
396<p>Free the hash @table and its contents. The userdata is deallocated with @f if provided.</p>
397<div class="variablelist"><table border="0">
398<col align="left">
399<tbody>
400<tr>
401<td><span class="term"><i><tt>table</tt></i>:</span></td>
402<td>the hash table</td>
403</tr>
404<tr>
405<td><span class="term"><i><tt>f</tt></i>:</span></td>
406<td>the deallocator function for items in the hash</td>
407</tr>
408</tbody>
409</table></div>
410</div>
411<hr>
412<div class="refsect2" lang="en">
413<h3>
414<a name="xmlHashLookup"></a>xmlHashLookup ()</h3>
415<pre class="programlisting">void *	xmlHashLookup			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
416</pre>
417<p>Find the userdata specified by the @name.</p>
418<div class="variablelist"><table border="0">
419<col align="left">
420<tbody>
421<tr>
422<td><span class="term"><i><tt>table</tt></i>:</span></td>
423<td>the hash table</td>
424</tr>
425<tr>
426<td><span class="term"><i><tt>name</tt></i>:</span></td>
427<td>the name of the userdata</td>
428</tr>
429<tr>
430<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
431<td>the pointer to the userdata</td>
432</tr>
433</tbody>
434</table></div>
435</div>
436<hr>
437<div class="refsect2" lang="en">
438<h3>
439<a name="xmlHashLookup2"></a>xmlHashLookup2 ()</h3>
440<pre class="programlisting">void *	xmlHashLookup2			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2)<br>
441</pre>
442<p>Find the userdata specified by the (@name, @name2) tuple.</p>
443<div class="variablelist"><table border="0">
444<col align="left">
445<tbody>
446<tr>
447<td><span class="term"><i><tt>table</tt></i>:</span></td>
448<td>the hash table</td>
449</tr>
450<tr>
451<td><span class="term"><i><tt>name</tt></i>:</span></td>
452<td>the name of the userdata</td>
453</tr>
454<tr>
455<td><span class="term"><i><tt>name2</tt></i>:</span></td>
456<td>a second name of the userdata</td>
457</tr>
458<tr>
459<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
460<td>the pointer to the userdata</td>
461</tr>
462</tbody>
463</table></div>
464</div>
465<hr>
466<div class="refsect2" lang="en">
467<h3>
468<a name="xmlHashLookup3"></a>xmlHashLookup3 ()</h3>
469<pre class="programlisting">void *	xmlHashLookup3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3)<br>
470</pre>
471<p>Find the userdata specified by the (@name, @name2, @name3) tuple.</p>
472<div class="variablelist"><table border="0">
473<col align="left">
474<tbody>
475<tr>
476<td><span class="term"><i><tt>table</tt></i>:</span></td>
477<td>the hash table</td>
478</tr>
479<tr>
480<td><span class="term"><i><tt>name</tt></i>:</span></td>
481<td>the name of the userdata</td>
482</tr>
483<tr>
484<td><span class="term"><i><tt>name2</tt></i>:</span></td>
485<td>a second name of the userdata</td>
486</tr>
487<tr>
488<td><span class="term"><i><tt>name3</tt></i>:</span></td>
489<td>a third name of the userdata</td>
490</tr>
491<tr>
492<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
493<td>the a pointer to the userdata</td>
494</tr>
495</tbody>
496</table></div>
497</div>
498<hr>
499<div class="refsect2" lang="en">
500<h3>
501<a name="xmlHashQLookup"></a>xmlHashQLookup ()</h3>
502<pre class="programlisting">void *	xmlHashQLookup			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
503</pre>
504<p>Find the userdata specified by the QName @prefix:@name/@name.</p>
505<div class="variablelist"><table border="0">
506<col align="left">
507<tbody>
508<tr>
509<td><span class="term"><i><tt>table</tt></i>:</span></td>
510<td>the hash table</td>
511</tr>
512<tr>
513<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
514<td>the prefix of the userdata</td>
515</tr>
516<tr>
517<td><span class="term"><i><tt>name</tt></i>:</span></td>
518<td>the name of the userdata</td>
519</tr>
520<tr>
521<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
522<td>the pointer to the userdata</td>
523</tr>
524</tbody>
525</table></div>
526</div>
527<hr>
528<div class="refsect2" lang="en">
529<h3>
530<a name="xmlHashQLookup2"></a>xmlHashQLookup2 ()</h3>
531<pre class="programlisting">void *	xmlHashQLookup2			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2)<br>
532</pre>
533<p>Find the userdata specified by the QNames tuple</p>
534<div class="variablelist"><table border="0">
535<col align="left">
536<tbody>
537<tr>
538<td><span class="term"><i><tt>table</tt></i>:</span></td>
539<td>the hash table</td>
540</tr>
541<tr>
542<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
543<td>the prefix of the userdata</td>
544</tr>
545<tr>
546<td><span class="term"><i><tt>name</tt></i>:</span></td>
547<td>the name of the userdata</td>
548</tr>
549<tr>
550<td><span class="term"><i><tt>prefix2</tt></i>:</span></td>
551<td>the second prefix of the userdata</td>
552</tr>
553<tr>
554<td><span class="term"><i><tt>name2</tt></i>:</span></td>
555<td>a second name of the userdata</td>
556</tr>
557<tr>
558<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
559<td>the pointer to the userdata</td>
560</tr>
561</tbody>
562</table></div>
563</div>
564<hr>
565<div class="refsect2" lang="en">
566<h3>
567<a name="xmlHashQLookup3"></a>xmlHashQLookup3 ()</h3>
568<pre class="programlisting">void *	xmlHashQLookup3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix3, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3)<br>
569</pre>
570<p>Find the userdata specified by the (@name, @name2, @name3) tuple.</p>
571<div class="variablelist"><table border="0">
572<col align="left">
573<tbody>
574<tr>
575<td><span class="term"><i><tt>table</tt></i>:</span></td>
576<td>the hash table</td>
577</tr>
578<tr>
579<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
580<td>the prefix of the userdata</td>
581</tr>
582<tr>
583<td><span class="term"><i><tt>name</tt></i>:</span></td>
584<td>the name of the userdata</td>
585</tr>
586<tr>
587<td><span class="term"><i><tt>prefix2</tt></i>:</span></td>
588<td>the second prefix of the userdata</td>
589</tr>
590<tr>
591<td><span class="term"><i><tt>name2</tt></i>:</span></td>
592<td>a second name of the userdata</td>
593</tr>
594<tr>
595<td><span class="term"><i><tt>prefix3</tt></i>:</span></td>
596<td>the third prefix of the userdata</td>
597</tr>
598<tr>
599<td><span class="term"><i><tt>name3</tt></i>:</span></td>
600<td>a third name of the userdata</td>
601</tr>
602<tr>
603<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
604<td>the a pointer to the userdata</td>
605</tr>
606</tbody>
607</table></div>
608</div>
609<hr>
610<div class="refsect2" lang="en">
611<h3>
612<a name="xmlHashRemoveEntry"></a>xmlHashRemoveEntry ()</h3>
613<pre class="programlisting">int	xmlHashRemoveEntry		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
614</pre>
615<p>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.</p>
616<div class="variablelist"><table border="0">
617<col align="left">
618<tbody>
619<tr>
620<td><span class="term"><i><tt>table</tt></i>:</span></td>
621<td>the hash table</td>
622</tr>
623<tr>
624<td><span class="term"><i><tt>name</tt></i>:</span></td>
625<td>the name of the userdata</td>
626</tr>
627<tr>
628<td><span class="term"><i><tt>f</tt></i>:</span></td>
629<td>the deallocator function for removed item (if any)</td>
630</tr>
631<tr>
632<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
633<td>0 if the removal succeeded and -1 in case of error or not found.</td>
634</tr>
635</tbody>
636</table></div>
637</div>
638<hr>
639<div class="refsect2" lang="en">
640<h3>
641<a name="xmlHashRemoveEntry2"></a>xmlHashRemoveEntry2 ()</h3>
642<pre class="programlisting">int	xmlHashRemoveEntry2		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
643</pre>
644<p>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.</p>
645<div class="variablelist"><table border="0">
646<col align="left">
647<tbody>
648<tr>
649<td><span class="term"><i><tt>table</tt></i>:</span></td>
650<td>the hash table</td>
651</tr>
652<tr>
653<td><span class="term"><i><tt>name</tt></i>:</span></td>
654<td>the name of the userdata</td>
655</tr>
656<tr>
657<td><span class="term"><i><tt>name2</tt></i>:</span></td>
658<td>a second name of the userdata</td>
659</tr>
660<tr>
661<td><span class="term"><i><tt>f</tt></i>:</span></td>
662<td>the deallocator function for removed item (if any)</td>
663</tr>
664<tr>
665<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
666<td>0 if the removal succeeded and -1 in case of error or not found.</td>
667</tr>
668</tbody>
669</table></div>
670</div>
671<hr>
672<div class="refsect2" lang="en">
673<h3>
674<a name="xmlHashRemoveEntry3"></a>xmlHashRemoveEntry3 ()</h3>
675<pre class="programlisting">int	xmlHashRemoveEntry3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
676</pre>
677<p>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.</p>
678<div class="variablelist"><table border="0">
679<col align="left">
680<tbody>
681<tr>
682<td><span class="term"><i><tt>table</tt></i>:</span></td>
683<td>the hash table</td>
684</tr>
685<tr>
686<td><span class="term"><i><tt>name</tt></i>:</span></td>
687<td>the name of the userdata</td>
688</tr>
689<tr>
690<td><span class="term"><i><tt>name2</tt></i>:</span></td>
691<td>a second name of the userdata</td>
692</tr>
693<tr>
694<td><span class="term"><i><tt>name3</tt></i>:</span></td>
695<td>a third name of the userdata</td>
696</tr>
697<tr>
698<td><span class="term"><i><tt>f</tt></i>:</span></td>
699<td>the deallocator function for removed item (if any)</td>
700</tr>
701<tr>
702<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
703<td>0 if the removal succeeded and -1 in case of error or not found.</td>
704</tr>
705</tbody>
706</table></div>
707</div>
708<hr>
709<div class="refsect2" lang="en">
710<h3>
711<a name="xmlHashScan"></a>xmlHashScan ()</h3>
712<pre class="programlisting">void	xmlHashScan			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> f, <br>					 void * data)<br>
713</pre>
714<p>Scan the hash @table and applied @f to each value.</p>
715<div class="variablelist"><table border="0">
716<col align="left">
717<tbody>
718<tr>
719<td><span class="term"><i><tt>table</tt></i>:</span></td>
720<td>the hash table</td>
721</tr>
722<tr>
723<td><span class="term"><i><tt>f</tt></i>:</span></td>
724<td>the scanner function for items in the hash</td>
725</tr>
726<tr>
727<td><span class="term"><i><tt>data</tt></i>:</span></td>
728<td>extra data passed to f</td>
729</tr>
730</tbody>
731</table></div>
732</div>
733<hr>
734<div class="refsect2" lang="en">
735<h3>
736<a name="xmlHashScan3"></a>xmlHashScan3 ()</h3>
737<pre class="programlisting">void	xmlHashScan3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> f, <br>					 void * data)<br>
738</pre>
739<p>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.</p>
740<div class="variablelist"><table border="0">
741<col align="left">
742<tbody>
743<tr>
744<td><span class="term"><i><tt>table</tt></i>:</span></td>
745<td>the hash table</td>
746</tr>
747<tr>
748<td><span class="term"><i><tt>name</tt></i>:</span></td>
749<td>the name of the userdata or NULL</td>
750</tr>
751<tr>
752<td><span class="term"><i><tt>name2</tt></i>:</span></td>
753<td>a second name of the userdata or NULL</td>
754</tr>
755<tr>
756<td><span class="term"><i><tt>name3</tt></i>:</span></td>
757<td>a third name of the userdata or NULL</td>
758</tr>
759<tr>
760<td><span class="term"><i><tt>f</tt></i>:</span></td>
761<td>the scanner function for items in the hash</td>
762</tr>
763<tr>
764<td><span class="term"><i><tt>data</tt></i>:</span></td>
765<td>extra data passed to f</td>
766</tr>
767</tbody>
768</table></div>
769</div>
770<hr>
771<div class="refsect2" lang="en">
772<h3>
773<a name="xmlHashScanFull"></a>xmlHashScanFull ()</h3>
774<pre class="programlisting">void	xmlHashScanFull			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f, <br>					 void * data)<br>
775</pre>
776<p>Scan the hash @table and applied @f to each value.</p>
777<div class="variablelist"><table border="0">
778<col align="left">
779<tbody>
780<tr>
781<td><span class="term"><i><tt>table</tt></i>:</span></td>
782<td>the hash table</td>
783</tr>
784<tr>
785<td><span class="term"><i><tt>f</tt></i>:</span></td>
786<td>the scanner function for items in the hash</td>
787</tr>
788<tr>
789<td><span class="term"><i><tt>data</tt></i>:</span></td>
790<td>extra data passed to f</td>
791</tr>
792</tbody>
793</table></div>
794</div>
795<hr>
796<div class="refsect2" lang="en">
797<h3>
798<a name="xmlHashScanFull3"></a>xmlHashScanFull3 ()</h3>
799<pre class="programlisting">void	xmlHashScanFull3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f, <br>					 void * data)<br>
800</pre>
801<p>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.</p>
802<div class="variablelist"><table border="0">
803<col align="left">
804<tbody>
805<tr>
806<td><span class="term"><i><tt>table</tt></i>:</span></td>
807<td>the hash table</td>
808</tr>
809<tr>
810<td><span class="term"><i><tt>name</tt></i>:</span></td>
811<td>the name of the userdata or NULL</td>
812</tr>
813<tr>
814<td><span class="term"><i><tt>name2</tt></i>:</span></td>
815<td>a second name of the userdata or NULL</td>
816</tr>
817<tr>
818<td><span class="term"><i><tt>name3</tt></i>:</span></td>
819<td>a third name of the userdata or NULL</td>
820</tr>
821<tr>
822<td><span class="term"><i><tt>f</tt></i>:</span></td>
823<td>the scanner function for items in the hash</td>
824</tr>
825<tr>
826<td><span class="term"><i><tt>data</tt></i>:</span></td>
827<td>extra data passed to f</td>
828</tr>
829</tbody>
830</table></div>
831</div>
832<hr>
833<div class="refsect2" lang="en">
834<h3>
835<a name="xmlHashSize"></a>xmlHashSize ()</h3>
836<pre class="programlisting">int	xmlHashSize			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table)<br>
837</pre>
838<p>Query the number of elements installed in the hash @table.</p>
839<div class="variablelist"><table border="0">
840<col align="left">
841<tbody>
842<tr>
843<td><span class="term"><i><tt>table</tt></i>:</span></td>
844<td>the hash table</td>
845</tr>
846<tr>
847<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
848<td>the number of elements in the hash table or -1 in case of error</td>
849</tr>
850</tbody>
851</table></div>
852</div>
853<hr>
854<div class="refsect2" lang="en">
855<h3>
856<a name="xmlHashUpdateEntry"></a>xmlHashUpdateEntry ()</h3>
857<pre class="programlisting">int	xmlHashUpdateEntry		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 void * userdata, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
858</pre>
859<p>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.</p>
860<div class="variablelist"><table border="0">
861<col align="left">
862<tbody>
863<tr>
864<td><span class="term"><i><tt>table</tt></i>:</span></td>
865<td>the hash table</td>
866</tr>
867<tr>
868<td><span class="term"><i><tt>name</tt></i>:</span></td>
869<td>the name of the userdata</td>
870</tr>
871<tr>
872<td><span class="term"><i><tt>userdata</tt></i>:</span></td>
873<td>a pointer to the userdata</td>
874</tr>
875<tr>
876<td><span class="term"><i><tt>f</tt></i>:</span></td>
877<td>the deallocator function for replaced item (if any)</td>
878</tr>
879<tr>
880<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
881<td>0 the addition succeeded and -1 in case of error.</td>
882</tr>
883</tbody>
884</table></div>
885</div>
886<hr>
887<div class="refsect2" lang="en">
888<h3>
889<a name="xmlHashUpdateEntry2"></a>xmlHashUpdateEntry2 ()</h3>
890<pre class="programlisting">int	xmlHashUpdateEntry2		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 void * userdata, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
891</pre>
892<p>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.</p>
893<div class="variablelist"><table border="0">
894<col align="left">
895<tbody>
896<tr>
897<td><span class="term"><i><tt>table</tt></i>:</span></td>
898<td>the hash table</td>
899</tr>
900<tr>
901<td><span class="term"><i><tt>name</tt></i>:</span></td>
902<td>the name of the userdata</td>
903</tr>
904<tr>
905<td><span class="term"><i><tt>name2</tt></i>:</span></td>
906<td>a second name of the userdata</td>
907</tr>
908<tr>
909<td><span class="term"><i><tt>userdata</tt></i>:</span></td>
910<td>a pointer to the userdata</td>
911</tr>
912<tr>
913<td><span class="term"><i><tt>f</tt></i>:</span></td>
914<td>the deallocator function for replaced item (if any)</td>
915</tr>
916<tr>
917<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
918<td>0 the addition succeeded and -1 in case of error.</td>
919</tr>
920</tbody>
921</table></div>
922</div>
923<hr>
924<div class="refsect2" lang="en">
925<h3>
926<a name="xmlHashUpdateEntry3"></a>xmlHashUpdateEntry3 ()</h3>
927<pre class="programlisting">int	xmlHashUpdateEntry3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3, <br>					 void * userdata, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br>
928</pre>
929<p>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.</p>
930<div class="variablelist"><table border="0">
931<col align="left">
932<tbody>
933<tr>
934<td><span class="term"><i><tt>table</tt></i>:</span></td>
935<td>the hash table</td>
936</tr>
937<tr>
938<td><span class="term"><i><tt>name</tt></i>:</span></td>
939<td>the name of the userdata</td>
940</tr>
941<tr>
942<td><span class="term"><i><tt>name2</tt></i>:</span></td>
943<td>a second name of the userdata</td>
944</tr>
945<tr>
946<td><span class="term"><i><tt>name3</tt></i>:</span></td>
947<td>a third name of the userdata</td>
948</tr>
949<tr>
950<td><span class="term"><i><tt>userdata</tt></i>:</span></td>
951<td>a pointer to the userdata</td>
952</tr>
953<tr>
954<td><span class="term"><i><tt>f</tt></i>:</span></td>
955<td>the deallocator function for replaced item (if any)</td>
956</tr>
957<tr>
958<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
959<td>0 the addition succeeded and -1 in case of error.</td>
960</tr>
961</tbody>
962</table></div>
963</div>
964<hr>
965</div>
966</div>
967</body>
968</html>
969