blob: 2be05a758a473037fd8fdb5b26690cb1b72cd9e1 [file] [log] [blame]
<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>