~ubuntu-branches/ubuntu/utopic/glib2.0/utopic

« back to all changes in this revision

Viewing changes to docs/reference/glib/xml/quarks.xml

Tags: upstream-2.12.12
ImportĀ upstreamĀ versionĀ 2.12.12

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<refentry id="glib-Quarks">
 
2
<refmeta>
 
3
<refentrytitle role="top_of_page">Quarks</refentrytitle>
 
4
<manvolnum>3</manvolnum>
 
5
<refmiscinfo>GLIB Library</refmiscinfo>
 
6
</refmeta>
 
7
 
 
8
<refnamediv>
 
9
<refname>Quarks</refname>
 
10
<refpurpose>a 2-way association between a string and a unique integer identifier.</refpurpose>
 
11
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
 
12
</refnamediv>
 
13
 
 
14
<refsynopsisdiv role="synopsis">
 
15
<title role="synopsis.title">Synopsis</title>
 
16
 
 
17
<synopsis>
 
18
 
 
19
#include &lt;glib.h&gt;
 
20
 
 
21
 
 
22
typedef             <link linkend="GQuark">GQuark</link>;
 
23
<link linkend="GQuark">GQuark</link>              <link linkend="g-quark-from-string">g_quark_from_string</link>                 (const <link linkend="gchar">gchar</link> *string);
 
24
<link linkend="GQuark">GQuark</link>              <link linkend="g-quark-from-static-string">g_quark_from_static_string</link>          (const <link linkend="gchar">gchar</link> *string);
 
25
const <link linkend="gchar">gchar</link>*        <link linkend="g-quark-to-string">g_quark_to_string</link>                   (<link linkend="GQuark">GQuark</link> quark);
 
26
<link linkend="GQuark">GQuark</link>              <link linkend="g-quark-try-string">g_quark_try_string</link>                  (const <link linkend="gchar">gchar</link> *string);
 
27
const <link linkend="gchar">gchar</link>*        <link linkend="g-intern-string">g_intern_string</link>                     (const <link linkend="gchar">gchar</link> *string);
 
28
const <link linkend="gchar">gchar</link>*        <link linkend="g-intern-static-string">g_intern_static_string</link>              (const <link linkend="gchar">gchar</link> *string);
 
29
</synopsis>
 
30
</refsynopsisdiv>
 
31
 
 
32
 
 
33
 
 
34
 
 
35
 
 
36
 
 
37
 
 
38
 
 
39
 
 
40
<refsect1 role="desc">
 
41
<title role="desc.title">Description</title>
 
42
<para>
 
43
Quarks are associations between strings and integer identifiers.
 
44
Given either the string or the <link linkend="GQuark"><type>GQuark</type></link> identifier it is possible to
 
45
retrieve the other.
 
46
</para>
 
47
<para>
 
48
Quarks are used for both
 
49
<link linkend="glib-datasets">Datasets</link> and
 
50
<link linkend="glib-keyed-data-lists">Keyed Data Lists</link>.
 
51
</para>
 
52
<para>
 
53
To create a new quark from a string, use <link linkend="g-quark-from-string"><function>g_quark_from_string()</function></link> or
 
54
<link linkend="g-quark-from-static-string"><function>g_quark_from_static_string()</function></link>.
 
55
</para>
 
56
<para>
 
57
To find the string corresponding to a given <link linkend="GQuark"><type>GQuark</type></link>, use <link linkend="g-quark-to-string"><function>g_quark_to_string()</function></link>.
 
58
</para>
 
59
<para>
 
60
To find the <link linkend="GQuark"><type>GQuark</type></link> corresponding to a given string, use <link linkend="g-quark-try-string"><function>g_quark_try_string()</function></link>.
 
61
</para>
 
62
<para>
 
63
Another use for the string pool maintained for the quark functions is string
 
64
interning, using <link linkend="g-intern-string"><function>g_intern_string()</function></link> or <link linkend="g-intern-static-string"><function>g_intern_static_string()</function></link>. An interned string 
 
65
is a canonical representation for a string. One important advantage of interned strings 
 
66
is that they can be compared for equality by a simple pointer comparision, rather than 
 
67
using <link linkend="strcmp"><function>strcmp()</function></link>. 
 
68
</para>
 
69
</refsect1>
 
70
 
 
71
<refsect1 role="details">
 
72
<title role="details.title">Details</title>
 
73
<refsect2>
 
74
<title><anchor id="GQuark" role="typedef"/>GQuark</title>
 
75
<indexterm><primary>GQuark</primary></indexterm><programlisting>typedef guint32 GQuark;
 
76
</programlisting>
 
77
<para>
 
78
A GQuark is an integer which uniquely identifies a particular string.
 
79
</para></refsect2>
 
80
<refsect2>
 
81
<title><anchor id="g-quark-from-string" role="function"/>g_quark_from_string ()</title>
 
82
<indexterm><primary>g_quark_from_string</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>              g_quark_from_string                 (const <link linkend="gchar">gchar</link> *string);</programlisting>
 
83
<para>
 
84
Gets the <link linkend="GQuark"><type>GQuark</type></link> identifying the given string.
 
85
If the string does not currently have an associated <link linkend="GQuark"><type>GQuark</type></link>, a new
 
86
<link linkend="GQuark"><type>GQuark</type></link> is created, using a copy of the string.
 
87
</para><variablelist role="params">
 
88
<varlistentry><term><parameter>string</parameter>&nbsp;:</term>
 
89
<listitem><simpara>a string.
 
90
</simpara></listitem></varlistentry>
 
91
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the <link linkend="GQuark"><type>GQuark</type></link> identifying the string.
 
92
 
 
93
 
 
94
</simpara></listitem></varlistentry>
 
95
</variablelist></refsect2>
 
96
<refsect2>
 
97
<title><anchor id="g-quark-from-static-string" role="function"/>g_quark_from_static_string ()</title>
 
98
<indexterm><primary>g_quark_from_static_string</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>              g_quark_from_static_string          (const <link linkend="gchar">gchar</link> *string);</programlisting>
 
99
<para>
 
100
Gets the <link linkend="GQuark"><type>GQuark</type></link> identifying the given (static) string.
 
101
If the string does not currently have an associated <link linkend="GQuark"><type>GQuark</type></link>, a new
 
102
<link linkend="GQuark"><type>GQuark</type></link> is created, linked to the given string.
 
103
</para>
 
104
<para>
 
105
Note that this function is identical to <link linkend="g-quark-from-string"><function>g_quark_from_string()</function></link> except
 
106
that if a new <link linkend="GQuark"><type>GQuark</type></link> is created the string itself is used rather than
 
107
a copy. This saves memory, but can only be used if the string will
 
108
<emphasis>always</emphasis> exist. It can be used with statically
 
109
allocated strings in the main program, but not with statically 
 
110
allocated memory in dynamically loaded modules, if you expect to
 
111
ever unload the module again (e.g. do not use this function in
 
112
GTK+ theme engines).
 
113
</para><variablelist role="params">
 
114
<varlistentry><term><parameter>string</parameter>&nbsp;:</term>
 
115
<listitem><simpara>a string.
 
116
</simpara></listitem></varlistentry>
 
117
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the <link linkend="GQuark"><type>GQuark</type></link> identifying the string.
 
118
 
 
119
 
 
120
</simpara></listitem></varlistentry>
 
121
</variablelist></refsect2>
 
122
<refsect2>
 
123
<title><anchor id="g-quark-to-string" role="function"/>g_quark_to_string ()</title>
 
124
<indexterm><primary>g_quark_to_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>*        g_quark_to_string                   (<link linkend="GQuark">GQuark</link> quark);</programlisting>
 
125
<para>
 
126
Gets the string associated with the given <link linkend="GQuark"><type>GQuark</type></link>.
 
127
</para><variablelist role="params">
 
128
<varlistentry><term><parameter>quark</parameter>&nbsp;:</term>
 
129
<listitem><simpara>a <link linkend="GQuark"><type>GQuark</type></link>.
 
130
</simpara></listitem></varlistentry>
 
131
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the string associated with the <link linkend="GQuark"><type>GQuark</type></link>.
 
132
 
 
133
 
 
134
</simpara></listitem></varlistentry>
 
135
</variablelist></refsect2>
 
136
<refsect2>
 
137
<title><anchor id="g-quark-try-string" role="function"/>g_quark_try_string ()</title>
 
138
<indexterm><primary>g_quark_try_string</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>              g_quark_try_string                  (const <link linkend="gchar">gchar</link> *string);</programlisting>
 
139
<para>
 
140
Gets the <link linkend="GQuark"><type>GQuark</type></link> associated with the given string, or 0 if the string has
 
141
no associated <link linkend="GQuark"><type>GQuark</type></link>.
 
142
</para>
 
143
<para>
 
144
If you want the GQuark to be created if it doesn't already exist, use
 
145
<link linkend="g-quark-from-string"><function>g_quark_from_string()</function></link> or <link linkend="g-quark-from-static-string"><function>g_quark_from_static_string()</function></link>.
 
146
</para><variablelist role="params">
 
147
<varlistentry><term><parameter>string</parameter>&nbsp;:</term>
 
148
<listitem><simpara>a string.
 
149
</simpara></listitem></varlistentry>
 
150
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the <link linkend="GQuark"><type>GQuark</type></link> associated with the string, or 0 if there is no
 
151
<link linkend="GQuark"><type>GQuark</type></link> associated with the string.
 
152
 
 
153
 
 
154
</simpara></listitem></varlistentry>
 
155
</variablelist></refsect2>
 
156
<refsect2>
 
157
<title><anchor id="g-intern-string" role="function" condition="since:2.10"/>g_intern_string ()</title>
 
158
<indexterm role="2.10"><primary>g_intern_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>*        g_intern_string                     (const <link linkend="gchar">gchar</link> *string);</programlisting>
 
159
<para>
 
160
Returns a canonical representation for <parameter>string</parameter>. Interned strings can
 
161
be compared for equality by comparing the pointers, instead of using <link linkend="strcmp"><function>strcmp()</function></link>.</para>
 
162
<para>
 
163
 
 
164
</para><variablelist role="params">
 
165
<varlistentry><term><parameter>string</parameter>&nbsp;:</term>
 
166
<listitem><simpara> a string
 
167
</simpara></listitem></varlistentry>
 
168
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a canonical representation for the string
 
169
 
 
170
</simpara></listitem></varlistentry>
 
171
</variablelist><para role="since">Since  2.10
 
172
</para></refsect2>
 
173
<refsect2>
 
174
<title><anchor id="g-intern-static-string" role="function" condition="since:2.10"/>g_intern_static_string ()</title>
 
175
<indexterm role="2.10"><primary>g_intern_static_string</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>*        g_intern_static_string              (const <link linkend="gchar">gchar</link> *string);</programlisting>
 
176
<para>
 
177
Returns a canonical representation for <parameter>string</parameter>. Interned strings can
 
178
be compared for equality by comparing the pointers, instead of using <link linkend="strcmp"><function>strcmp()</function></link>.
 
179
<link linkend="g-intern-static-string"><function>g_intern_static_string()</function></link> does not copy the string, therefore <parameter>string</parameter> must
 
180
not be freed or modified.</para>
 
181
<para>
 
182
 
 
183
</para><variablelist role="params">
 
184
<varlistentry><term><parameter>string</parameter>&nbsp;:</term>
 
185
<listitem><simpara> a static string
 
186
</simpara></listitem></varlistentry>
 
187
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a canonical representation for the string
 
188
 
 
189
</simpara></listitem></varlistentry>
 
190
</variablelist><para role="since">Since  2.10
 
191
</para></refsect2>
 
192
 
 
193
</refsect1>
 
194
 
 
195
 
 
196
 
 
197
 
 
198
</refentry>