1 <?xml version=
"1.0" encoding=
"UTF-8"?>
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8"/>
5 <title>dict: string dictionnary
</title>
6 <meta name=
"generator" content=
"Libxml2 devhelp stylesheet"/>
7 <link rel=
"start" href=
"index.html" title=
"libxml2 Reference Manual"/>
8 <link rel=
"up" href=
"general.html" title=
"API"/>
9 <link rel=
"stylesheet" href=
"style.css" type=
"text/css"/>
10 <link rel=
"chapter" href=
"general.html" title=
"API"/>
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table class=
"navigation" width=
"100%" summary=
"Navigation header" cellpadding=
"2" cellspacing=
"2">
16 <a accesskey=
"p" href=
"libxml2-debugXML.html">
17 <img src=
"left.png" width=
"24" height=
"24" border=
"0" alt=
"Prev"/>
21 <a accesskey=
"u" href=
"general.html">
22 <img src=
"up.png" width=
"24" height=
"24" border=
"0" alt=
"Up"/>
26 <a accesskey=
"h" href=
"index.html">
27 <img src=
"home.png" width=
"24" height=
"24" border=
"0" alt=
"Home"/>
31 <a accesskey=
"n" href=
"libxml2-encoding.html">
32 <img src=
"right.png" width=
"24" height=
"24" border=
"0" alt=
"Next"/>
35 <th width=
"100%" align=
"center">libxml2 Reference Manual
</th>
39 <span class=
"refentrytitle">dict
</span>
41 <p>dict - string dictionnary
</p>
42 <p>dictionary of reusable strings, just used to avoid allocation and freeing operations.
</p>
43 <p>Author(s): Daniel Veillard
</p>
44 <div class=
"refsynopsisdiv">
46 <pre class=
"synopsis">typedef struct _xmlDict
<a href=
"#xmlDict">xmlDict
</a>;
47 typedef
<a href=
"libxml2-dict.html#xmlDict">xmlDict
</a> *
<a href=
"#xmlDictPtr">xmlDictPtr
</a>;
48 size_t
<a href=
"#xmlDictGetUsage">xmlDictGetUsage
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict);
49 int
<a href=
"#xmlDictReference">xmlDictReference
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict);
50 void
<a href=
"#xmlDictCleanup">xmlDictCleanup
</a> (void);
51 int
<a href=
"#xmlDictSize">xmlDictSize
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict);
52 const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> *
<a href=
"#xmlDictExists">xmlDictExists
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * name,
<br/> int len);
53 size_t
<a href=
"#xmlDictSetLimit">xmlDictSetLimit
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> size_t limit);
54 int
<a href=
"#xmlDictOwns">xmlDictOwns
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * str);
55 const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> *
<a href=
"#xmlDictQLookup">xmlDictQLookup
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * prefix,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * name);
56 int
<a href=
"#xmlInitializeDict">xmlInitializeDict
</a> (void);
57 <a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> <a href=
"#xmlDictCreateSub">xmlDictCreateSub
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> sub);
58 void
<a href=
"#xmlDictFree">xmlDictFree
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict);
59 const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> *
<a href=
"#xmlDictLookup">xmlDictLookup
</a> (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * name,
<br/> int len);
60 <a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> <a href=
"#xmlDictCreate">xmlDictCreate
</a> (void);
63 <div class=
"refsect1" lang=
"en">
66 <div class=
"refsect1" lang=
"en">
68 <div class=
"refsect2" lang=
"en">
69 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDict">Structure
</a>xmlDict
</h3><pre class=
"programlisting">struct _xmlDict {
70 The content of this structure is not made public by the API.
75 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictPtr">Typedef
</a>xmlDictPtr
</h3><pre class=
"programlisting"><a href=
"libxml2-dict.html#xmlDict">xmlDict
</a> * xmlDictPtr;
79 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictCleanup"/>xmlDictCleanup ()
</h3><pre class=
"programlisting">void xmlDictCleanup (void)
<br/>
80 </pre><p>Free the dictionary mutex. Do not call unless sure the library is not in use anymore !
</p>
83 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictCreate"/>xmlDictCreate ()
</h3><pre class=
"programlisting"><a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> xmlDictCreate (void)
<br/>
84 </pre><p>Create a new dictionary
</p>
85 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the newly created dictionnary, or NULL if an error occured.
</td></tr></tbody></table></div></div>
87 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictCreateSub"/>xmlDictCreateSub ()
</h3><pre class=
"programlisting"><a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> xmlDictCreateSub (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> sub)
<br/>
88 </pre><p>Create a new dictionary, inheriting strings from the read-only dictionnary @sub. On lookup, strings are first searched in the new dictionnary, then in @sub, and if not found are created in the new dictionnary.
</p>
89 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>sub
</tt></i>:
</span></td><td>an existing dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the newly created dictionnary, or NULL if an error occured.
</td></tr></tbody></table></div></div>
91 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictExists"/>xmlDictExists ()
</h3><pre class=
"programlisting">const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * xmlDictExists (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * name,
<br/> int len)
<br/>
92 </pre><p>Check if the @name exists in the dictionnary @dict.
</p>
93 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</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>len
</tt></i>:
</span></td><td>the length of the name, if -
1 it is recomputed
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the internal copy of the name or NULL if not found.
</td></tr></tbody></table></div></div>
95 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictFree"/>xmlDictFree ()
</h3><pre class=
"programlisting">void xmlDictFree (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict)
<br/>
96 </pre><p>Free the hash @dict and its contents. The userdata is deallocated with @f if provided.
</p>
97 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr></tbody></table></div></div>
99 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictGetUsage"/>xmlDictGetUsage ()
</h3><pre class=
"programlisting">size_t xmlDictGetUsage (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict)
<br/>
100 </pre><p>Get how much memory is used by a dictionary for strings Added in
2.9.0</p>
101 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the amount of strings allocated
</td></tr></tbody></table></div></div>
103 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictLookup"/>xmlDictLookup ()
</h3><pre class=
"programlisting">const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * xmlDictLookup (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * name,
<br/> int len)
<br/>
104 </pre><p>Add the @name to the dictionnary @dict if not present.
</p>
105 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</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>len
</tt></i>:
</span></td><td>the length of the name, if -
1 it is recomputed
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the internal copy of the name or NULL in case of internal error
</td></tr></tbody></table></div></div>
107 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictOwns"/>xmlDictOwns ()
</h3><pre class=
"programlisting">int xmlDictOwns (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * str)
<br/>
108 </pre><p>check if a string is owned by the disctionary
</p>
109 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>str
</tt></i>:
</span></td><td>the string
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>1 if true,
0 if false and -
1 in case of error -
1 in case of error
</td></tr></tbody></table></div></div>
111 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictQLookup"/>xmlDictQLookup ()
</h3><pre class=
"programlisting">const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * xmlDictQLookup (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * prefix,
<br/> const
<a href=
"libxml2-xmlstring.html#xmlChar">xmlChar
</a> * name)
<br/>
112 </pre><p>Add the QName @prefix:@name to the hash @dict if not present.
</p>
113 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>prefix
</tt></i>:
</span></td><td>the prefix
</td></tr><tr><td><span class=
"term"><i><tt>name
</tt></i>:
</span></td><td>the name
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the internal copy of the QName or NULL in case of internal error
</td></tr></tbody></table></div></div>
115 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictReference"/>xmlDictReference ()
</h3><pre class=
"programlisting">int xmlDictReference (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict)
<br/>
116 </pre><p>Increment the
<a href=
"libxml2-SAX.html#reference">reference
</a> counter of a dictionary
</p>
117 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>0 in case of success and -
1 in case of error
</td></tr></tbody></table></div></div>
119 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictSetLimit"/>xmlDictSetLimit ()
</h3><pre class=
"programlisting">size_t xmlDictSetLimit (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict,
<br/> size_t limit)
<br/>
120 </pre><p>Set a size limit for the dictionary Added in
2.9.0</p>
121 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>limit
</tt></i>:
</span></td><td>the limit in bytes
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the previous limit of the dictionary or
0</td></tr></tbody></table></div></div>
123 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlDictSize"/>xmlDictSize ()
</h3><pre class=
"programlisting">int xmlDictSize (
<a href=
"libxml2-dict.html#xmlDictPtr">xmlDictPtr
</a> dict)
<br/>
124 </pre><p>Query the number of elements installed in the hash @dict.
</p>
125 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>dict
</tt></i>:
</span></td><td>the dictionnary
</td></tr><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>the number of elements in the dictionnary or -
1 in case of error
</td></tr></tbody></table></div></div>
127 <div class=
"refsect2" lang=
"en"><h3><a name=
"xmlInitializeDict"/>xmlInitializeDict ()
</h3><pre class=
"programlisting">int xmlInitializeDict (void)
<br/>
128 </pre><p>Do the dictionary mutex initialization. this function is deprecated
</p>
129 <div class=
"variablelist"><table border=
"0"><col align=
"left"/><tbody><tr><td><span class=
"term"><i><tt>Returns
</tt></i>:
</span></td><td>0 if initialization was already done, and
1 if that call led to the initialization
</td></tr></tbody></table></div></div>