1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2026-01-17 02:02:39 +03:00
Files
libxml2/doc/html/libxml-hash.html
Daniel Veillard 2fdbd32d51 new dictionary module to keep a single instance of the names used by the
* dict.c include/libxml/dict.h Makefile.am include/libxml/Makefile.am:
  new dictionary module to keep a single instance of the names used
  by the parser
* DOCBparser.c HTMLparser.c parser.c parserInternals.c valid.c:
  switched all parsers to use the dictionary internally
* include/libxml/HTMLparser.h include/libxml/parser.h
  include/libxml/parserInternals.h include/libxml/valid.h:
  Some of the interfaces changed as a result to receive or return
  "const xmlChar *" instead of "xmlChar *", this is either
  insignificant from an user point of view or when the returning
  value changed, those function are really parser internal methods
  that no user code should really change
* doc/libxml2-api.xml doc/html/*: the API interface changed and
  the docs were regenerated
Daniel
2003-08-18 12:15:38 +00:00

379 lines
42 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>