aboutsummaryrefslogtreecommitdiffstats
path: root/doc/html/libxml-hash.html
blob: 2be05a758a473037fd8fdb5b26690cb1b72cd9e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>hash</title><meta name="generator" content="DocBook XSL Stylesheets V1.58.1"><style xmlns="http://www.w3.org/TR/xhtml1/transitional" type="text/css">
        .synopsis, .classsynopsis {
            background: #eeeeee;
            border: solid 1px #aaaaaa;
            padding: 0.5em;
        }
        .programlisting {
            background: #eeeeff;
            border: solid 1px #aaaaff;
            padding: 0.5em;
        }
        .variablelist {
            padding: 4px;
            margin-left: 3em;
        }
        .navigation {
            background: #ffeeee;
            border: solid 1px #ffaaaa;
            margin-top: 0.5em;
            margin-bottom: 0.5em;
        }
        .navigation a {
            color: #770000;
        }
        .navigation a:visited {
            color: #550000;
        }
        .navigation .title {
            font-size: 200%;
        }
      </style><link rel="home" href="index.html" title="Gnome XML Library Reference Manual"><link rel="up" href="libxml-lib.html" title="Libxml Library Reference"><link rel="previous" href="libxml-encoding.html" title="encoding"><link rel="next" href="libxml-debugXML.html" title="debugXML"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-encoding.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></img></a></td><td><a accesskey="u" href="libxml-lib.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></img></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></img></a></td><th width="100%" align="center">Gnome XML Library Reference Manual</th><td><a accesskey="n" href="libxml-debugXML.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></img></a></td></tr></table><div class="refentry" lang="en"><a name="libxml-hash"></a><div class="titlepage"></div><div class="refnamediv"><h2>hash</h2><p>hash &#8212; </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">



struct      <a href="libxml-hash.html#xmlHashTable">xmlHashTable</a>;
typedef     <a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>;
void        (<a href="libxml-hash.html#xmlHashDeallocator">*xmlHashDeallocator</a>)           (void *payload,
                                             <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);
void*       (<a href="libxml-hash.html#xmlHashCopier">*xmlHashCopier</a>)                (void *payload,
                                             <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);
void        (<a href="libxml-hash.html#xmlHashScanner">*xmlHashScanner</a>)               (void *payload,
                                             void *data,
                                             <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);
void        (<a href="libxml-hash.html#xmlHashScannerFull">*xmlHashScannerFull</a>)           (void *payload,
                                             void *data,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3);
<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> <a href="libxml-hash.html#xmlHashCreate">xmlHashCreate</a>               (int size);
void        <a href="libxml-hash.html#xmlHashFree">xmlHashFree</a>                     (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
int         <a href="libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a>                 (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             void *userdata);
int         <a href="libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a>              (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             void *userdata,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
int         <a href="libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a>                (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             void *userdata);
int         <a href="libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a>             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             void *userdata,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
int         <a href="libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a>                (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             void *userdata);
int         <a href="libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a>             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             void *userdata,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
int         <a href="libxml-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a>              (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
int         <a href="libxml-hash.html#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a>             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
int         <a href="libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a>             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);
void*       <a href="libxml-hash.html#xmlHashLookup">xmlHashLookup</a>                   (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);
void*       <a href="libxml-hash.html#xmlHashLookup2">xmlHashLookup2</a>                  (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2);
void*       <a href="libxml-hash.html#xmlHashLookup3">xmlHashLookup3</a>                  (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3);
<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> <a href="libxml-hash.html#xmlHashCopy">xmlHashCopy</a>                 (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashCopier">xmlHashCopier</a> f);
int         <a href="libxml-hash.html#xmlHashSize">xmlHashSize</a>                     (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table);
void        <a href="libxml-hash.html#xmlHashScan">xmlHashScan</a>                     (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashScanner">xmlHashScanner</a> f,
                                             void *data);
void        <a href="libxml-hash.html#xmlHashScan3">xmlHashScan3</a>                    (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             <a href="libxml-hash.html#xmlHashScanner">xmlHashScanner</a> f,
                                             void *data);
void        <a href="libxml-hash.html#xmlHashScanFull">xmlHashScanFull</a>                 (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f,
                                             void *data);
void        <a href="libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a>                (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             <a href="libxml-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f,
                                             void *data);
</pre></div><div class="refsect1" lang="en"><h2>Description</h2><p>

</p></div><div class="refsect1" lang="en"><h2>Details</h2><div class="refsect2" lang="en"><h3><a name="xmlHashTable"></a>struct xmlHashTable</h3><pre class="programlisting">struct xmlHashTable;</pre><p>

</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashTablePtr"></a>xmlHashTablePtr</h3><pre class="programlisting">typedef xmlHashTable *xmlHashTablePtr;
</pre><p>

</p></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashDeallocator"></a>xmlHashDeallocator ()</h3><pre class="programlisting">void        (*xmlHashDeallocator)           (void *payload,
                                             <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);</pre><p>
Callback to free data from a hash.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>payload</tt></i> :</span></td><td>  the data in the hash
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td>  the name associated
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashCopier"></a>xmlHashCopier ()</h3><pre class="programlisting">void*       (*xmlHashCopier)                (void *payload,
                                             <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);</pre><p>
Callback to copy data from a hash.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>payload</tt></i> :</span></td><td>  the data in the hash
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td>  the name associated
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashScanner"></a>xmlHashScanner ()</h3><pre class="programlisting">void        (*xmlHashScanner)               (void *payload,
                                             void *data,
                                             <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);</pre><p>
Callback when scanning data in a hash with the simple scanner.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>payload</tt></i> :</span></td><td>  the data in the hash
</td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td>  extra scannner data
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td>  the name associated
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashScannerFull"></a>xmlHashScannerFull ()</h3><pre class="programlisting">void        (*xmlHashScannerFull)           (void *payload,
                                             void *data,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3);</pre><p>
Callback when scanning data in a hash with the full scanner.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>payload</tt></i> :</span></td><td>  the data in the hash
</td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td>  extra scannner data
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td>  the name associated
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td>  the second name associated
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td>  the third name associated
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashCreate"></a>xmlHashCreate ()</h3><pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> xmlHashCreate               (int size);</pre><p>
Create a new xmlHashTablePtr.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>size</tt></i> :</span></td><td> the size of the hash table
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the newly created object, or NULL if an error occured.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashFree"></a>xmlHashFree ()</h3><pre class="programlisting">void        xmlHashFree                     (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Free the hash <i><tt>table</tt></i> and its contents. The userdata is
deallocated with <i><tt>f</tt></i> if provided.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td>  the deallocator function for items in the hash
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashAddEntry"></a>xmlHashAddEntry ()</h3><pre class="programlisting">int         xmlHashAddEntry                 (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             void *userdata);</pre><p>
Add the <i><tt>userdata</tt></i> to the hash <i><tt>table</tt></i>. This can later be retrieved
by using the <i><tt>name</tt></i>. Duplicate names generate errors.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>userdata</tt></i> :</span></td><td> a pointer to the userdata
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 the addition succeeded and -1 in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashUpdateEntry"></a>xmlHashUpdateEntry ()</h3><pre class="programlisting">int         xmlHashUpdateEntry              (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             void *userdata,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Add the <i><tt>userdata</tt></i> to the hash <i><tt>table</tt></i>. This can later be retrieved
by using the <i><tt>name</tt></i>. Existing entry for this <i><tt>name</tt></i> will be removed
and freed with <i><tt>f</tt></i> if found.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>userdata</tt></i> :</span></td><td> a pointer to the userdata
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td> the deallocator function for replaced item (if any)
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 the addition succeeded and -1 in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashAddEntry2"></a>xmlHashAddEntry2 ()</h3><pre class="programlisting">int         xmlHashAddEntry2                (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             void *userdata);</pre><p>
Add the <i><tt>userdata</tt></i> to the hash <i><tt>table</tt></i>. This can later be retrieved
by using the (<i><tt>name</tt></i>, <i><tt>name2</tt></i>) tuple. Duplicate tuples generate errors.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>userdata</tt></i> :</span></td><td> a pointer to the userdata
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 the addition succeeded and -1 in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashUpdateEntry2"></a>xmlHashUpdateEntry2 ()</h3><pre class="programlisting">int         xmlHashUpdateEntry2             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             void *userdata,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Add the <i><tt>userdata</tt></i> to the hash <i><tt>table</tt></i>. This can later be retrieved
by using the (<i><tt>name</tt></i>, <i><tt>name2</tt></i>) tuple. Existing entry for this tuple will
be removed and freed with <i><tt>f</tt></i> if found.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>userdata</tt></i> :</span></td><td> a pointer to the userdata
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td> the deallocator function for replaced item (if any)
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 the addition succeeded and -1 in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashAddEntry3"></a>xmlHashAddEntry3 ()</h3><pre class="programlisting">int         xmlHashAddEntry3                (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             void *userdata);</pre><p>
Add the <i><tt>userdata</tt></i> to the hash <i><tt>table</tt></i>. This can later be retrieved
by using the tuple (<i><tt>name</tt></i>, <i><tt>name2</tt></i>, <i><tt>name3</tt></i>). Duplicate entries generate
errors.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td> a third name of the userdata
</td></tr><tr><td><span class="term"><i><tt>userdata</tt></i> :</span></td><td> a pointer to the userdata
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 the addition succeeded and -1 in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashUpdateEntry3"></a>xmlHashUpdateEntry3 ()</h3><pre class="programlisting">int         xmlHashUpdateEntry3             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             void *userdata,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Add the <i><tt>userdata</tt></i> to the hash <i><tt>table</tt></i>. This can later be retrieved
by using the tuple (<i><tt>name</tt></i>, <i><tt>name2</tt></i>, <i><tt>name3</tt></i>). Existing entry for this tuple
will be removed and freed with <i><tt>f</tt></i> if found.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td> a third name of the userdata
</td></tr><tr><td><span class="term"><i><tt>userdata</tt></i> :</span></td><td> a pointer to the userdata
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td> the deallocator function for replaced item (if any)
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 the addition succeeded and -1 in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashRemoveEntry"></a>xmlHashRemoveEntry ()</h3><pre class="programlisting">int         xmlHashRemoveEntry              (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Find the userdata specified by the <i><tt>name</tt></i> and remove
it from the hash <i><tt>table</tt></i>. Existing userdata for this tuple will be removed
and freed with <i><tt>f</tt></i>.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td> the deallocator function for removed item (if any)
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if the removal succeeded and -1 in case of error or not found.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashRemoveEntry2"></a>xmlHashRemoveEntry2 ()</h3><pre class="programlisting">int         xmlHashRemoveEntry2             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Find the userdata specified by the (<i><tt>name</tt></i>, <i><tt>name2</tt></i>) tuple and remove
it from the hash <i><tt>table</tt></i>. Existing userdata for this tuple will be removed
and freed with <i><tt>f</tt></i>.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td> the deallocator function for removed item (if any)
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if the removal succeeded and -1 in case of error or not found.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashRemoveEntry3"></a>xmlHashRemoveEntry3 ()</h3><pre class="programlisting">int         xmlHashRemoveEntry3             (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f);</pre><p>
Find the userdata specified by the (<i><tt>name</tt></i>, <i><tt>name2</tt></i>, <i><tt>name3</tt></i>) tuple and remove
it from the hash <i><tt>table</tt></i>. Existing userdata for this tuple will be removed
and freed with <i><tt>f</tt></i>.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td> a third name of the userdata
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td> the deallocator function for removed item (if any)
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>0 if the removal succeeded and -1 in case of error or not found.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashLookup"></a>xmlHashLookup ()</h3><pre class="programlisting">void*       xmlHashLookup                   (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name);</pre><p>
Find the userdata specified by the <i><tt>name</tt></i>.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashLookup2"></a>xmlHashLookup2 ()</h3><pre class="programlisting">void*       xmlHashLookup2                  (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2);</pre><p>
Find the userdata specified by the (<i><tt>name</tt></i>, <i><tt>name2</tt></i>) tuple.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashLookup3"></a>xmlHashLookup3 ()</h3><pre class="programlisting">void*       xmlHashLookup3                  (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3);</pre><p>
Find the userdata specified by the (<i><tt>name</tt></i>, <i><tt>name2</tt></i>, <i><tt>name3</tt></i>) tuple.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td> a third name of the userdata
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashCopy"></a>xmlHashCopy ()</h3><pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> xmlHashCopy                 (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashCopier">xmlHashCopier</a> f);</pre><p>
Scan the hash <i><tt>table</tt></i> and applied <i><tt>f</tt></i> to each value.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td>  the copier function for items in the hash
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the new table or NULL in case of error.
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashSize"></a>xmlHashSize ()</h3><pre class="programlisting">int         xmlHashSize                     (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table);</pre><p>
Query the number of elements installed in the hash <i><tt>table</tt></i>.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td>the number of elements in the hash table or
-1 in case of error
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashScan"></a>xmlHashScan ()</h3><pre class="programlisting">void        xmlHashScan                     (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashScanner">xmlHashScanner</a> f,
                                             void *data);</pre><p>
Scan the hash <i><tt>table</tt></i> and applied <i><tt>f</tt></i> to each value.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td>  the scanner function for items in the hash
</td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td>  extra data passed to f
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashScan3"></a>xmlHashScan3 ()</h3><pre class="programlisting">void        xmlHashScan3                    (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             <a href="libxml-hash.html#xmlHashScanner">xmlHashScanner</a> f,
                                             void *data);</pre><p>
Scan the hash <i><tt>table</tt></i> and applied <i><tt>f</tt></i> to each value matching
(<i><tt>name</tt></i>, <i><tt>name2</tt></i>, <i><tt>name3</tt></i>) tuple. If one of the names is null,
the comparison is considered to match.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata or NULL
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata or NULL
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td> a third name of the userdata or NULL
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td>  the scanner function for items in the hash
</td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td>  extra data passed to f
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashScanFull"></a>xmlHashScanFull ()</h3><pre class="programlisting">void        xmlHashScanFull                 (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             <a href="libxml-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f,
                                             void *data);</pre><p>
Scan the hash <i><tt>table</tt></i> and applied <i><tt>f</tt></i> to each value.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td>  the scanner function for items in the hash
</td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td>  extra data passed to f
</td></tr></tbody></table></div></div><hr xmlns="http://www.w3.org/TR/xhtml1/transitional"></hr><div class="refsect2" lang="en"><h3><a name="xmlHashScanFull3"></a>xmlHashScanFull3 ()</h3><pre class="programlisting">void        xmlHashScanFull3                (<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name2,
                                             const <a href="libxml-tree.html#xmlChar">xmlChar</a> *name3,
                                             <a href="libxml-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> f,
                                             void *data);</pre><p>
Scan the hash <i><tt>table</tt></i> and applied <i><tt>f</tt></i> to each value matching
(<i><tt>name</tt></i>, <i><tt>name2</tt></i>, <i><tt>name3</tt></i>) tuple. If one of the names is null,
the comparison is considered to match.</p><p>

</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><i><tt>table</tt></i> :</span></td><td> the hash table
</td></tr><tr><td><span class="term"><i><tt>name</tt></i> :</span></td><td> the name of the userdata or NULL
</td></tr><tr><td><span class="term"><i><tt>name2</tt></i> :</span></td><td> a second name of the userdata or NULL
</td></tr><tr><td><span class="term"><i><tt>name3</tt></i> :</span></td><td> a third name of the userdata or NULL
</td></tr><tr><td><span class="term"><i><tt>f</tt></i> :</span></td><td>  the scanner function for items in the hash
</td></tr><tr><td><span class="term"><i><tt>data</tt></i> :</span></td><td>  extra data passed to f
</td></tr></tbody></table></div></div></div></div><table xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle"><td align="left"><a accesskey="p" href="libxml-encoding.html"><b>&lt;&lt; encoding</b></a></td><td align="right"><a accesskey="n" href="libxml-debugXML.html"><b>debugXML &gt;&gt;</b></a></td></tr></table></body></html>