Tizen 2.1 base
[platform/upstream/glib2.0.git] / docs / reference / gio / html / gio-Extension-Points.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>Extension Points</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GIO Reference Manual">
8 <link rel="up" href="extending.html" title="Extending GIO">
9 <link rel="prev" href="GIOModule.html" title="GIOModule">
10 <link rel="next" href="tools.html" title="GIO Tools">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
16 <tr valign="middle">
17 <td><a accesskey="p" href="GIOModule.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="extending.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GIO Reference Manual</th>
21 <td><a accesskey="n" href="tools.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#gio-Extension-Points.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#gio-Extension-Points.description" class="shortcut">Description</a>
27 </td></tr>
28 </table>
29 <div class="refentry">
30 <a name="gio-Extension-Points"></a><div class="titlepage"></div>
31 <div class="refnamediv"><table width="100%"><tr>
32 <td valign="top">
33 <h2><span class="refentrytitle"><a name="gio-Extension-Points.top_of_page"></a>Extension Points</span></h2>
34 <p>Extension Points — Extension Points</p>
35 </td>
36 <td valign="top" align="right"></td>
37 </tr></table></div>
38 <div class="refsynopsisdiv">
39 <a name="gio-Extension-Points.synopsis"></a><h2>Synopsis</h2>
40 <pre class="synopsis">
41 #include &lt;gio.h&gt;
42
43                     <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension">GIOExtension</a>;
44                     <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint">GIOExtensionPoint</a>;
45 const <span class="returnvalue">char</span> *        <a class="link" href="gio-Extension-Points.html#g-io-extension-get-name" title="g_io_extension_get_name ()">g_io_extension_get_name</a>             (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);
46 <a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>                <a class="link" href="gio-Extension-Points.html#g-io-extension-get-priority" title="g_io_extension_get_priority ()">g_io_extension_get_priority</a>         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);
47 <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>               <a class="link" href="gio-Extension-Points.html#g-io-extension-get-type" title="g_io_extension_get_type ()">g_io_extension_get_type</a>             (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);
48 <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="returnvalue">GIOExtension</span></a> *      <a class="link" href="gio-Extension-Points.html#g-io-extension-point-get-extension-by-name" title="g_io_extension_point_get_extension_by_name ()">g_io_extension_point_get_extension_by_name</a>
49                                                         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>,
50                                                          <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
51 <a href="./../glib/glib/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *             <a class="link" href="gio-Extension-Points.html#g-io-extension-point-get-extensions" title="g_io_extension_point_get_extensions ()">g_io_extension_point_get_extensions</a> (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>);
52 <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>               <a class="link" href="gio-Extension-Points.html#g-io-extension-point-get-required-type" title="g_io_extension_point_get_required_type ()">g_io_extension_point_get_required_type</a>
53                                                         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>);
54 <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="returnvalue">GIOExtension</span></a> *      <a class="link" href="gio-Extension-Points.html#g-io-extension-point-implement" title="g_io_extension_point_implement ()">g_io_extension_point_implement</a>      (<em class="parameter"><code>const <span class="type">char</span> *extension_point_name</code></em>,
55                                                          <em class="parameter"><code><a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> type</code></em>,
56                                                          <em class="parameter"><code>const <span class="type">char</span> *extension_name</code></em>,
57                                                          <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> priority</code></em>);
58 <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="returnvalue">GIOExtensionPoint</span></a> * <a class="link" href="gio-Extension-Points.html#g-io-extension-point-lookup" title="g_io_extension_point_lookup ()">g_io_extension_point_lookup</a>         (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
59 <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="returnvalue">GIOExtensionPoint</span></a> * <a class="link" href="gio-Extension-Points.html#g-io-extension-point-register" title="g_io_extension_point_register ()">g_io_extension_point_register</a>       (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);
60 <span class="returnvalue">void</span>                <a class="link" href="gio-Extension-Points.html#g-io-extension-point-set-required-type" title="g_io_extension_point_set_required_type ()">g_io_extension_point_set_required_type</a>
61                                                         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>,
62                                                          <em class="parameter"><code><a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> type</code></em>);
63 <a href="./../gobject/gobject/gobject-Type-Information.html#GTypeClass"><span class="returnvalue">GTypeClass</span></a> *        <a class="link" href="gio-Extension-Points.html#g-io-extension-ref-class" title="g_io_extension_ref_class ()">g_io_extension_ref_class</a>            (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);
64 </pre>
65 </div>
66 <div class="refsect1">
67 <a name="gio-Extension-Points.description"></a><h2>Description</h2>
68 <p>
69 <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> provides a mechanism for modules to extend the
70 functionality of the library or application that loaded it in an 
71 organized fashion.  
72 </p>
73 <p>
74 An extension point is identified by a name, and it may optionally
75 require that any implementation must by of a certain type (or derived
76 thereof). Use <a class="link" href="gio-Extension-Points.html#g-io-extension-point-register" title="g_io_extension_point_register ()"><code class="function">g_io_extension_point_register()</code></a> to register an
77 extension point, and <a class="link" href="gio-Extension-Points.html#g-io-extension-point-set-required-type" title="g_io_extension_point_set_required_type ()"><code class="function">g_io_extension_point_set_required_type()</code></a> to
78 set a required type.
79 </p>
80 <p>
81 A module can implement an extension point by specifying the <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> 
82 that implements the functionality. Additionally, each implementation
83 of an extension point has a name, and a priority. Use
84 <a class="link" href="gio-Extension-Points.html#g-io-extension-point-implement" title="g_io_extension_point_implement ()"><code class="function">g_io_extension_point_implement()</code></a> to implement an extension point.
85 </p>
86 <p>
87  </p>
88 <div class="informalexample">
89   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
90     <tbody>
91       <tr>
92         <td class="listing_lines" align="right"><pre>1
93 2
94 3
95 4
96 5</pre></td>
97         <td class="listing_code"><pre class="programlisting"><span class="usertype">GIOExtensionPoint</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">ep</span><span class="symbol">;</span>
98
99 <span class="comment">/* Register an extension point */</span>
100 <span class="normal">ep </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-Extension-Points.html#g-io-extension-point-register">g_io_extension_point_register</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"my-extension-point"</span><span class="symbol">);</span>
101 <span class="function"><a href="gio-Extension-Points.html#g-io-extension-point-set-required-type">g_io_extension_point_set_required_type</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">ep</span><span class="symbol">,</span><span class="normal"> MY_TYPE_EXAMPLE</span><span class="symbol">);</span></pre></td>
102       </tr>
103     </tbody>
104   </table>
105 </div>
106
107 <p>
108 </p>
109 <p>
110  </p>
111 <div class="informalexample">
112   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
113     <tbody>
114       <tr>
115         <td class="listing_lines" align="right"><pre>1
116 2
117 3
118 4
119 5
120 6</pre></td>
121         <td class="listing_code"><pre class="programlisting"><span class="comment">/* Implement an extension point */</span>
122 <span class="function"><a href="./../gobject/gobject/gobject-Type-Information.html#G-DEFINE-TYPE:CAPS">G_DEFINE_TYPE</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">MyExampleImpl</span><span class="symbol">,</span><span class="normal"> my_example_impl</span><span class="symbol">,</span><span class="normal"> MY_TYPE_EXAMPLE</span><span class="symbol">);</span>
123 <span class="function"><a href="gio-Extension-Points.html#g-io-extension-point-implement">g_io_extension_point_implement</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"my-extension-point"</span><span class="symbol">,</span>
124 <span class="normal">                                </span><span class="function">my_example_impl_get_type</span><span class="normal"> </span><span class="symbol">(),</span>
125 <span class="normal">                                </span><span class="string">"my-example"</span><span class="symbol">,</span>
126 <span class="normal">                                </span><span class="number">10</span><span class="symbol">);</span></pre></td>
127       </tr>
128     </tbody>
129   </table>
130 </div>
131
132 <p>
133 </p>
134 <p>
135  It is up to the code that registered the extension point how
136  it uses the implementations that have been associated with it.
137  Depending on the use case, it may use all implementations, or
138  only the one with the highest priority, or pick a specific
139  one by name.
140 </p>
141 <p>
142  To avoid opening all modules just to find out what extension
143  points they implement, GIO makes use of a caching mechanism,
144  see <a href="gio-querymodules.html">gio-querymodules</a>.
145  You are expected to run this command after installing a
146  GIO module.
147 </p>
148 <p>
149  The <code class="envar">GIO_EXTRA_MODULES</code> environment variable can be
150  used to specify additional directories to automatically load modules
151  from. This environment variable has the same syntax as the
152  <code class="envar">PATH</code>. If two modules have the same base name in different
153  directories, then the latter one will be ignored. If additional
154  directories are specified GIO will load modules from the built-in
155  directory last.
156 </p>
157 </div>
158 <div class="refsect1">
159 <a name="gio-Extension-Points.details"></a><h2>Details</h2>
160 <div class="refsect2">
161 <a name="GIOExtension"></a><h3>GIOExtension</h3>
162 <pre class="programlisting">typedef struct _GIOExtension GIOExtension;</pre>
163 </div>
164 <hr>
165 <div class="refsect2">
166 <a name="GIOExtensionPoint"></a><h3>GIOExtensionPoint</h3>
167 <pre class="programlisting">typedef struct _GIOExtensionPoint GIOExtensionPoint;</pre>
168 </div>
169 <hr>
170 <div class="refsect2">
171 <a name="g-io-extension-get-name"></a><h3>g_io_extension_get_name ()</h3>
172 <pre class="programlisting">const <span class="returnvalue">char</span> *        g_io_extension_get_name             (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);</pre>
173 <p>
174 Gets the name under which <em class="parameter"><code>extension</code></em> was registered.
175 </p>
176 <p>
177 Note that the same type may be registered as extension
178 for multiple extension points, under different names.
179 </p>
180 <div class="variablelist"><table border="0">
181 <col align="left" valign="top">
182 <tbody>
183 <tr>
184 <td><p><span class="term"><em class="parameter"><code>extension</code></em> :</span></p></td>
185 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a>
186 </td>
187 </tr>
188 <tr>
189 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
190 <td>the name of <em class="parameter"><code>extension</code></em>.</td>
191 </tr>
192 </tbody>
193 </table></div>
194 </div>
195 <hr>
196 <div class="refsect2">
197 <a name="g-io-extension-get-priority"></a><h3>g_io_extension_get_priority ()</h3>
198 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>                g_io_extension_get_priority         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);</pre>
199 <p>
200 Gets the priority with which <em class="parameter"><code>extension</code></em> was registered.
201 </p>
202 <div class="variablelist"><table border="0">
203 <col align="left" valign="top">
204 <tbody>
205 <tr>
206 <td><p><span class="term"><em class="parameter"><code>extension</code></em> :</span></p></td>
207 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a>
208 </td>
209 </tr>
210 <tr>
211 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
212 <td>the priority of <em class="parameter"><code>extension</code></em>
213 </td>
214 </tr>
215 </tbody>
216 </table></div>
217 </div>
218 <hr>
219 <div class="refsect2">
220 <a name="g-io-extension-get-type"></a><h3>g_io_extension_get_type ()</h3>
221 <pre class="programlisting"><a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>               g_io_extension_get_type             (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);</pre>
222 <p>
223 Gets the type associated with <em class="parameter"><code>extension</code></em>.
224 </p>
225 <div class="variablelist"><table border="0">
226 <col align="left" valign="top">
227 <tbody>
228 <tr>
229 <td><p><span class="term"><em class="parameter"><code>extension</code></em> :</span></p></td>
230 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a>
231 </td>
232 </tr>
233 <tr>
234 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
235 <td>the type of <em class="parameter"><code>extension</code></em>
236 </td>
237 </tr>
238 </tbody>
239 </table></div>
240 </div>
241 <hr>
242 <div class="refsect2">
243 <a name="g-io-extension-point-get-extension-by-name"></a><h3>g_io_extension_point_get_extension_by_name ()</h3>
244 <pre class="programlisting"><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="returnvalue">GIOExtension</span></a> *      g_io_extension_point_get_extension_by_name
245                                                         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>,
246                                                          <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
247 <p>
248 Finds a <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> for an extension point by name.
249 </p>
250 <div class="variablelist"><table border="0">
251 <col align="left" valign="top">
252 <tbody>
253 <tr>
254 <td><p><span class="term"><em class="parameter"><code>extension_point</code></em> :</span></p></td>
255 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a>
256 </td>
257 </tr>
258 <tr>
259 <td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
260 <td>the name of the extension to get</td>
261 </tr>
262 <tr>
263 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
264 <td>the <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> for <em class="parameter"><code>extension_point</code></em> that has the
265 given name, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there is no extension with that name. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
266 </td>
267 </tr>
268 </tbody>
269 </table></div>
270 </div>
271 <hr>
272 <div class="refsect2">
273 <a name="g-io-extension-point-get-extensions"></a><h3>g_io_extension_point_get_extensions ()</h3>
274 <pre class="programlisting"><a href="./../glib/glib/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *             g_io_extension_point_get_extensions (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>);</pre>
275 <p>
276 Gets a list of all extensions that implement this extension point.
277 The list is sorted by priority, beginning with the highest priority.
278 </p>
279 <div class="variablelist"><table border="0">
280 <col align="left" valign="top">
281 <tbody>
282 <tr>
283 <td><p><span class="term"><em class="parameter"><code>extension_point</code></em> :</span></p></td>
284 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a>
285 </td>
286 </tr>
287 <tr>
288 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
289 <td>a <a href="./../glib/glib/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
290 <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a>s. The list is owned by GIO and should not be
291 modified. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GIOExtension][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
292 </td>
293 </tr>
294 </tbody>
295 </table></div>
296 </div>
297 <hr>
298 <div class="refsect2">
299 <a name="g-io-extension-point-get-required-type"></a><h3>g_io_extension_point_get_required_type ()</h3>
300 <pre class="programlisting"><a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>               g_io_extension_point_get_required_type
301                                                         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>);</pre>
302 <p>
303 Gets the required type for <em class="parameter"><code>extension_point</code></em>.
304 </p>
305 <div class="variablelist"><table border="0">
306 <col align="left" valign="top">
307 <tbody>
308 <tr>
309 <td><p><span class="term"><em class="parameter"><code>extension_point</code></em> :</span></p></td>
310 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a>
311 </td>
312 </tr>
313 <tr>
314 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
315 <td>the <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> that all implementations must have,
316 or <a href="./../gobject/gobject/gobject-Type-Information.html#G-TYPE-INVALID:CAPS"><span class="type">G_TYPE_INVALID</span></a> if the extension point has no required type</td>
317 </tr>
318 </tbody>
319 </table></div>
320 </div>
321 <hr>
322 <div class="refsect2">
323 <a name="g-io-extension-point-implement"></a><h3>g_io_extension_point_implement ()</h3>
324 <pre class="programlisting"><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="returnvalue">GIOExtension</span></a> *      g_io_extension_point_implement      (<em class="parameter"><code>const <span class="type">char</span> *extension_point_name</code></em>,
325                                                          <em class="parameter"><code><a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> type</code></em>,
326                                                          <em class="parameter"><code>const <span class="type">char</span> *extension_name</code></em>,
327                                                          <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> priority</code></em>);</pre>
328 <p>
329 Registers <em class="parameter"><code>type</code></em> as extension for the extension point with name
330 <em class="parameter"><code>extension_point_name</code></em>. 
331 </p>
332 <p>
333 If <em class="parameter"><code>type</code></em> has already been registered as an extension for this 
334 extension point, the existing <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> object is returned.
335 </p>
336 <div class="variablelist"><table border="0">
337 <col align="left" valign="top">
338 <tbody>
339 <tr>
340 <td><p><span class="term"><em class="parameter"><code>extension_point_name</code></em> :</span></p></td>
341 <td>the name of the extension point</td>
342 </tr>
343 <tr>
344 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
345 <td>the <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> to register as extension</td>
346 </tr>
347 <tr>
348 <td><p><span class="term"><em class="parameter"><code>extension_name</code></em> :</span></p></td>
349 <td>the name for the extension</td>
350 </tr>
351 <tr>
352 <td><p><span class="term"><em class="parameter"><code>priority</code></em> :</span></p></td>
353 <td>the priority for the extension</td>
354 </tr>
355 <tr>
356 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
357 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> object for <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
358 </td>
359 </tr>
360 </tbody>
361 </table></div>
362 </div>
363 <hr>
364 <div class="refsect2">
365 <a name="g-io-extension-point-lookup"></a><h3>g_io_extension_point_lookup ()</h3>
366 <pre class="programlisting"><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="returnvalue">GIOExtensionPoint</span></a> * g_io_extension_point_lookup         (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
367 <p>
368 Looks up an existing extension point.
369 </p>
370 <div class="variablelist"><table border="0">
371 <col align="left" valign="top">
372 <tbody>
373 <tr>
374 <td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
375 <td>the name of the extension point</td>
376 </tr>
377 <tr>
378 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
379 <td>the <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a>, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there
380 is no registered extension point with the given name. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
381 </td>
382 </tr>
383 </tbody>
384 </table></div>
385 </div>
386 <hr>
387 <div class="refsect2">
388 <a name="g-io-extension-point-register"></a><h3>g_io_extension_point_register ()</h3>
389 <pre class="programlisting"><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="returnvalue">GIOExtensionPoint</span></a> * g_io_extension_point_register       (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
390 <p>
391 Registers an extension point.
392 </p>
393 <div class="variablelist"><table border="0">
394 <col align="left" valign="top">
395 <tbody>
396 <tr>
397 <td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
398 <td>The name of the extension point</td>
399 </tr>
400 <tr>
401 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
402 <td>the new <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a>. This object is
403 owned by GIO and should not be freed. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
404 </td>
405 </tr>
406 </tbody>
407 </table></div>
408 </div>
409 <hr>
410 <div class="refsect2">
411 <a name="g-io-extension-point-set-required-type"></a><h3>g_io_extension_point_set_required_type ()</h3>
412 <pre class="programlisting"><span class="returnvalue">void</span>                g_io_extension_point_set_required_type
413                                                         (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a> *extension_point</code></em>,
414                                                          <em class="parameter"><code><a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> type</code></em>);</pre>
415 <p>
416 Sets the required type for <em class="parameter"><code>extension_point</code></em> to <em class="parameter"><code>type</code></em>. 
417 All implementations must henceforth have this type.
418 </p>
419 <div class="variablelist"><table border="0">
420 <col align="left" valign="top">
421 <tbody>
422 <tr>
423 <td><p><span class="term"><em class="parameter"><code>extension_point</code></em> :</span></p></td>
424 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtensionPoint" title="GIOExtensionPoint"><span class="type">GIOExtensionPoint</span></a>
425 </td>
426 </tr>
427 <tr>
428 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
429 <td>the <a href="./../gobject/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> to require</td>
430 </tr>
431 </tbody>
432 </table></div>
433 </div>
434 <hr>
435 <div class="refsect2">
436 <a name="g-io-extension-ref-class"></a><h3>g_io_extension_ref_class ()</h3>
437 <pre class="programlisting"><a href="./../gobject/gobject/gobject-Type-Information.html#GTypeClass"><span class="returnvalue">GTypeClass</span></a> *        g_io_extension_ref_class            (<em class="parameter"><code><a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a> *extension</code></em>);</pre>
438 <p>
439 Gets a reference to the class for the type that is 
440 associated with <em class="parameter"><code>extension</code></em>.
441 </p>
442 <div class="variablelist"><table border="0">
443 <col align="left" valign="top">
444 <tbody>
445 <tr>
446 <td><p><span class="term"><em class="parameter"><code>extension</code></em> :</span></p></td>
447 <td>a <a class="link" href="gio-Extension-Points.html#GIOExtension" title="GIOExtension"><span class="type">GIOExtension</span></a>
448 </td>
449 </tr>
450 <tr>
451 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
452 <td>the <a href="./../gobject/gobject/gobject-Type-Information.html#GTypeClass"><span class="type">GTypeClass</span></a> for the type of <em class="parameter"><code>extension</code></em>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
453 </td>
454 </tr>
455 </tbody>
456 </table></div>
457 </div>
458 </div>
459 <div class="refsect1">
460 <a name="gio-Extension-Points.see-also"></a><h2>See Also</h2>
461 Extending GIO
462 </div>
463 </div>
464 <div class="footer">
465 <hr>
466           Generated by GTK-Doc V1.18</div>
467 </body>
468 </html>