Imported Upstream version 1.49.1
[platform/upstream/gobject-introspection.git] / docs / reference / html / gi-GITypelib.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>GITypelib: GObject Introspection Reference Manual</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="GObject Introspection Reference Manual">
8 <link rel="up" href="gi-typelib.html" title="GITypelib">
9 <link rel="prev" href="gi-gitypelib.html" title="gitypelib">
10 <link rel="next" href="ch03.html" title="TODO">
11 <meta name="generator" content="GTK-Doc V1.25.1 (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="5"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts">
17 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
18                   <a href="#gi-GITypelib.description" class="shortcut">Description</a></span>
19 </td>
20 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
21 <td><a accesskey="u" href="gi-typelib.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
22 <td><a accesskey="p" href="gi-gitypelib.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
23 <td><a accesskey="n" href="ch03.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
24 </tr></table>
25 <div class="refentry">
26 <a name="gi-GITypelib"></a><div class="titlepage"></div>
27 <div class="refnamediv"><table width="100%"><tr>
28 <td valign="top">
29 <h2><span class="refentrytitle"><a name="gi-GITypelib.top_of_page"></a>GITypelib</span></h2>
30 <p>GITypelib — Layout and accessors for typelib</p>
31 </td>
32 <td class="gallery_image" valign="top" align="right"></td>
33 </tr></table></div>
34 <div class="refsect1">
35 <a name="gi-GITypelib.stability-level"></a><h2>Stability Level</h2>
36 <acronym title="The intention of a Stable interface is to enable arbitrary third parties to
37 develop applications to these interfaces, release them, and have confidence that
38 they will run on all minor releases of the product (after the one in which the
39 interface was introduced, and within the same major release). Even at a major
40 release, incompatible changes are expected to be rare, and to have strong
41 justifications.
42 "><span class="acronym">Stable</span></acronym>, unless otherwise indicated
43 </div>
44 <div class="refsect1">
45 <a name="gi-GITypelib.functions"></a><h2>Functions</h2>
46 <div class="informaltable"><table class="informaltable" width="100%" border="0">
47 <colgroup>
48 <col width="150px" class="functions_return">
49 <col class="functions_name">
50 </colgroup>
51 <tbody>
52 <tr>
53 <td class="function_type">
54 <a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
55 </td>
56 <td class="function_name">
57 <a class="link" href="gi-GITypelib.html#g-typelib-get-dir-entry" title="g_typelib_get_dir_entry ()">g_typelib_get_dir_entry</a> <span class="c_punctuation">()</span>
58 </td>
59 </tr>
60 <tr>
61 <td class="function_type">
62 <a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
63 </td>
64 <td class="function_name">
65 <a class="link" href="gi-GITypelib.html#g-typelib-get-dir-entry-by-name" title="g_typelib_get_dir_entry_by_name ()">g_typelib_get_dir_entry_by_name</a> <span class="c_punctuation">()</span>
66 </td>
67 </tr>
68 <tr>
69 <td class="function_type">
70 <a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
71 </td>
72 <td class="function_name">
73 <a class="link" href="gi-GITypelib.html#g-typelib-get-dir-entry-by-gtype-name" title="g_typelib_get_dir_entry_by_gtype_name ()">g_typelib_get_dir_entry_by_gtype_name</a> <span class="c_punctuation">()</span>
74 </td>
75 </tr>
76 <tr>
77 <td class="function_type">
78 <a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
79 </td>
80 <td class="function_name">
81 <a class="link" href="gi-GITypelib.html#g-typelib-get-dir-entry-by-error-domain" title="g_typelib_get_dir_entry_by_error_domain ()">g_typelib_get_dir_entry_by_error_domain</a> <span class="c_punctuation">()</span>
82 </td>
83 </tr>
84 <tr>
85 <td class="function_type">
86 <span class="returnvalue">gboolean</span>
87 </td>
88 <td class="function_name">
89 <a class="link" href="gi-GITypelib.html#g-typelib-matches-gtype-name-prefix" title="g_typelib_matches_gtype_name_prefix ()">g_typelib_matches_gtype_name_prefix</a> <span class="c_punctuation">()</span>
90 </td>
91 </tr>
92 <tr>
93 <td class="function_type">
94 <span class="returnvalue">void</span>
95 </td>
96 <td class="function_name">
97 <a class="link" href="gi-GITypelib.html#g-typelib-check-sanity" title="g_typelib_check_sanity ()">g_typelib_check_sanity</a> <span class="c_punctuation">()</span>
98 </td>
99 </tr>
100 <tr>
101 <td class="define_keyword">#define</td>
102 <td class="function_name">
103 <a class="link" href="gi-GITypelib.html#g-typelib-get-string" title="g_typelib_get_string()">g_typelib_get_string</a><span class="c_punctuation">()</span>
104 </td>
105 </tr>
106 <tr>
107 <td class="function_type">
108 <span class="returnvalue">GQuark</span>
109 </td>
110 <td class="function_name">
111 <a class="link" href="gi-GITypelib.html#g-typelib-error-quark" title="g_typelib_error_quark ()">g_typelib_error_quark</a> <span class="c_punctuation">()</span>
112 </td>
113 </tr>
114 <tr>
115 <td class="function_type">
116 <span class="returnvalue">gboolean</span>
117 </td>
118 <td class="function_name">
119 <a class="link" href="gi-GITypelib.html#g-typelib-validate" title="g_typelib_validate ()">g_typelib_validate</a> <span class="c_punctuation">()</span>
120 </td>
121 </tr>
122 </tbody>
123 </table></div>
124 </div>
125 <div class="refsect1">
126 <a name="gi-GITypelib.other"></a><h2>Types and Values</h2>
127 <div class="informaltable"><table class="informaltable" width="100%" border="0">
128 <colgroup>
129 <col width="150px" class="name">
130 <col class="description">
131 </colgroup>
132 <tbody>
133 <tr>
134 <td class="define_keyword">#define</td>
135 <td class="function_name"><a class="link" href="gi-GITypelib.html#G-IR-MAGIC:CAPS" title="G_IR_MAGIC">G_IR_MAGIC</a></td>
136 </tr>
137 <tr>
138 <td class="datatype_keyword">enum</td>
139 <td class="function_name"><a class="link" href="gi-GITypelib.html#GTypelibBlobType" title="enum GTypelibBlobType">GTypelibBlobType</a></td>
140 </tr>
141 <tr>
142 <td class="datatype_keyword"> </td>
143 <td class="function_name"><a class="link" href="gi-GITypelib.html#Header" title="Header">Header</a></td>
144 </tr>
145 <tr>
146 <td class="datatype_keyword">enum</td>
147 <td class="function_name"><a class="link" href="gi-GITypelib.html#SectionType" title="enum SectionType">SectionType</a></td>
148 </tr>
149 <tr>
150 <td class="datatype_keyword"> </td>
151 <td class="function_name"><a class="link" href="gi-GITypelib.html#Section" title="Section">Section</a></td>
152 </tr>
153 <tr>
154 <td class="datatype_keyword"> </td>
155 <td class="function_name"><a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry">DirEntry</a></td>
156 </tr>
157 <tr>
158 <td class="datatype_keyword"> </td>
159 <td class="function_name"><a class="link" href="gi-GITypelib.html#SimpleTypeBlobFlags" title="SimpleTypeBlobFlags">SimpleTypeBlobFlags</a></td>
160 </tr>
161 <tr>
162 <td class="datatype_keyword"> </td>
163 <td class="function_name"><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob">SimpleTypeBlob</a></td>
164 </tr>
165 <tr>
166 <td class="datatype_keyword"> </td>
167 <td class="function_name"><a class="link" href="gi-GITypelib.html#ArgBlob" title="ArgBlob">ArgBlob</a></td>
168 </tr>
169 <tr>
170 <td class="datatype_keyword"> </td>
171 <td class="function_name"><a class="link" href="gi-GITypelib.html#SignatureBlob" title="SignatureBlob">SignatureBlob</a></td>
172 </tr>
173 <tr>
174 <td class="datatype_keyword"> </td>
175 <td class="function_name"><a class="link" href="gi-GITypelib.html#CommonBlob" title="CommonBlob">CommonBlob</a></td>
176 </tr>
177 <tr>
178 <td class="datatype_keyword"> </td>
179 <td class="function_name"><a class="link" href="gi-GITypelib.html#FunctionBlob" title="FunctionBlob">FunctionBlob</a></td>
180 </tr>
181 <tr>
182 <td class="datatype_keyword"> </td>
183 <td class="function_name"><a class="link" href="gi-GITypelib.html#CallbackBlob" title="CallbackBlob">CallbackBlob</a></td>
184 </tr>
185 <tr>
186 <td class="datatype_keyword"> </td>
187 <td class="function_name"><a class="link" href="gi-GITypelib.html#InterfaceTypeBlob" title="InterfaceTypeBlob">InterfaceTypeBlob</a></td>
188 </tr>
189 <tr>
190 <td class="datatype_keyword"> </td>
191 <td class="function_name"><a class="link" href="gi-GITypelib.html#ArrayTypeDimension" title="ArrayTypeDimension">ArrayTypeDimension</a></td>
192 </tr>
193 <tr>
194 <td class="datatype_keyword"> </td>
195 <td class="function_name"><a class="link" href="gi-GITypelib.html#ArrayTypeBlob" title="ArrayTypeBlob">ArrayTypeBlob</a></td>
196 </tr>
197 <tr>
198 <td class="datatype_keyword"> </td>
199 <td class="function_name"><a class="link" href="gi-GITypelib.html#ParamTypeBlob" title="ParamTypeBlob">ParamTypeBlob</a></td>
200 </tr>
201 <tr>
202 <td class="datatype_keyword"> </td>
203 <td class="function_name"><a class="link" href="gi-GITypelib.html#ErrorTypeBlob" title="ErrorTypeBlob">ErrorTypeBlob</a></td>
204 </tr>
205 <tr>
206 <td class="datatype_keyword"> </td>
207 <td class="function_name"><a class="link" href="gi-GITypelib.html#ValueBlob" title="ValueBlob">ValueBlob</a></td>
208 </tr>
209 <tr>
210 <td class="datatype_keyword"> </td>
211 <td class="function_name"><a class="link" href="gi-GITypelib.html#FieldBlob" title="FieldBlob">FieldBlob</a></td>
212 </tr>
213 <tr>
214 <td class="datatype_keyword"> </td>
215 <td class="function_name"><a class="link" href="gi-GITypelib.html#RegisteredTypeBlob" title="RegisteredTypeBlob">RegisteredTypeBlob</a></td>
216 </tr>
217 <tr>
218 <td class="datatype_keyword"> </td>
219 <td class="function_name"><a class="link" href="gi-GITypelib.html#StructBlob" title="StructBlob">StructBlob</a></td>
220 </tr>
221 <tr>
222 <td class="datatype_keyword"> </td>
223 <td class="function_name"><a class="link" href="gi-GITypelib.html#UnionBlob" title="UnionBlob">UnionBlob</a></td>
224 </tr>
225 <tr>
226 <td class="datatype_keyword"> </td>
227 <td class="function_name"><a class="link" href="gi-GITypelib.html#EnumBlob" title="EnumBlob">EnumBlob</a></td>
228 </tr>
229 <tr>
230 <td class="datatype_keyword"> </td>
231 <td class="function_name"><a class="link" href="gi-GITypelib.html#PropertyBlob" title="PropertyBlob">PropertyBlob</a></td>
232 </tr>
233 <tr>
234 <td class="datatype_keyword"> </td>
235 <td class="function_name"><a class="link" href="gi-GITypelib.html#SignalBlob" title="SignalBlob">SignalBlob</a></td>
236 </tr>
237 <tr>
238 <td class="datatype_keyword"> </td>
239 <td class="function_name"><a class="link" href="gi-GITypelib.html#VFuncBlob" title="VFuncBlob">VFuncBlob</a></td>
240 </tr>
241 <tr>
242 <td class="datatype_keyword"> </td>
243 <td class="function_name"><a class="link" href="gi-GITypelib.html#ObjectBlob" title="ObjectBlob">ObjectBlob</a></td>
244 </tr>
245 <tr>
246 <td class="datatype_keyword"> </td>
247 <td class="function_name"><a class="link" href="gi-GITypelib.html#InterfaceBlob" title="InterfaceBlob">InterfaceBlob</a></td>
248 </tr>
249 <tr>
250 <td class="datatype_keyword"> </td>
251 <td class="function_name"><a class="link" href="gi-GITypelib.html#ConstantBlob" title="ConstantBlob">ConstantBlob</a></td>
252 </tr>
253 <tr>
254 <td class="datatype_keyword"> </td>
255 <td class="function_name"><a class="link" href="gi-GITypelib.html#AttributeBlob" title="AttributeBlob">AttributeBlob</a></td>
256 </tr>
257 <tr>
258 <td class="datatype_keyword">enum</td>
259 <td class="function_name"><a class="link" href="gi-GITypelib.html#GITypelibError" title="enum GITypelibError">GITypelibError</a></td>
260 </tr>
261 <tr>
262 <td class="define_keyword">#define</td>
263 <td class="function_name"><a class="link" href="gi-GITypelib.html#G-TYPELIB-ERROR:CAPS" title="G_TYPELIB_ERROR">G_TYPELIB_ERROR</a></td>
264 </tr>
265 <tr>
266 <td class="datatype_keyword"> </td>
267 <td class="function_name"><a class="link" href="gi-GITypelib.html#GITypelibHashBuilder" title="GITypelibHashBuilder">GITypelibHashBuilder</a></td>
268 </tr>
269 </tbody>
270 </table></div>
271 </div>
272 <div class="refsect1">
273 <a name="gi-GITypelib.description"></a><h2>Description</h2>
274 <p>The "typelib" is a binary, readonly, memory-mappable database
275 containing reflective information about a GObject library.</p>
276 <p>The format of GObject typelib is strongly influenced by the Mozilla XPCOM
277 format.</p>
278 <p>Some of the differences to XPCOM include:</p>
279 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
280 <li class="listitem"><p>Type information is stored not quite as compactly (XPCOM stores it inline
281 in function descriptions in variable-sized blobs of 1 to n bytes. We store
282 16 bits of type information for each parameter, which is enough to encode
283 simple types inline. Complex (e.g. recursive) types are stored out of line
284 in a separate list of types.</p></li>
285 <li class="listitem"><p>String and complex type data is stored outside of typelib entry blobs,
286 references are stored as offsets relative to the start of the typelib.
287 One possibility is to store the strings and types in a pools at the end
288 of the typelib.</p></li>
289 </ul></div>
290 <p>The typelib has the following general format:</p>
291 <p>  typelib ::= header, section-index, directory, blobs, attributes, attributedata</p>
292 <p>  directory ::= list of entries</p>
293 <p>  entry ::= blob type, name, namespace, offset
294   blob ::= function|callback|struct|boxed|enum|flags|object|interface|constant|union
295   attribute ::= offset, key, value
296   attributedata ::= string data for attributes</p>
297 <p>Details</p>
298 <p>We describe the fragments that make up the typelib in the form of C structs
299 (although some fall short of being valid C structs since they contain
300 multiple flexible arrays).</p>
301 </div>
302 <div class="refsect1">
303 <a name="gi-GITypelib.functions_details"></a><h2>Functions</h2>
304 <div class="refsect2">
305 <a name="g-typelib-get-dir-entry"></a><h3>g_typelib_get_dir_entry ()</h3>
306 <pre class="programlisting"><a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
307 g_typelib_get_dir_entry (<em class="parameter"><code><a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a> *typelib</code></em>,
308                          <em class="parameter"><code><span class="type">guint16</span> index</code></em>);</pre>
309 <p>TODO</p>
310 <div class="refsect3">
311 <a name="g-typelib-get-dir-entry.parameters"></a><h4>Parameters</h4>
312 <div class="informaltable"><table class="informaltable" width="100%" border="0">
313 <colgroup>
314 <col width="150px" class="parameters_name">
315 <col class="parameters_description">
316 <col width="200px" class="parameters_annotations">
317 </colgroup>
318 <tbody>
319 <tr>
320 <td class="parameter_name"><p>typelib</p></td>
321 <td class="parameter_description"><p>TODO</p></td>
322 <td class="parameter_annotations"> </td>
323 </tr>
324 <tr>
325 <td class="parameter_name"><p>index</p></td>
326 <td class="parameter_description"><p>TODO</p></td>
327 <td class="parameter_annotations"> </td>
328 </tr>
329 </tbody>
330 </table></div>
331 </div>
332 <div class="refsect3">
333 <a name="g-typelib-get-dir-entry.returns"></a><h4>Returns</h4>
334 <p> TODO</p>
335 </div>
336 </div>
337 <hr>
338 <div class="refsect2">
339 <a name="g-typelib-get-dir-entry-by-name"></a><h3>g_typelib_get_dir_entry_by_name ()</h3>
340 <pre class="programlisting"><a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
341 g_typelib_get_dir_entry_by_name (<em class="parameter"><code><a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a> *typelib</code></em>,
342                                  <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre>
343 <p>TODO</p>
344 <div class="refsect3">
345 <a name="g-typelib-get-dir-entry-by-name.parameters"></a><h4>Parameters</h4>
346 <div class="informaltable"><table class="informaltable" width="100%" border="0">
347 <colgroup>
348 <col width="150px" class="parameters_name">
349 <col class="parameters_description">
350 <col width="200px" class="parameters_annotations">
351 </colgroup>
352 <tbody>
353 <tr>
354 <td class="parameter_name"><p>typelib</p></td>
355 <td class="parameter_description"><p>TODO</p></td>
356 <td class="parameter_annotations"> </td>
357 </tr>
358 <tr>
359 <td class="parameter_name"><p>name</p></td>
360 <td class="parameter_description"><p>TODO</p></td>
361 <td class="parameter_annotations"> </td>
362 </tr>
363 </tbody>
364 </table></div>
365 </div>
366 <div class="refsect3">
367 <a name="g-typelib-get-dir-entry-by-name.returns"></a><h4>Returns</h4>
368 <p> TODO</p>
369 </div>
370 </div>
371 <hr>
372 <div class="refsect2">
373 <a name="g-typelib-get-dir-entry-by-gtype-name"></a><h3>g_typelib_get_dir_entry_by_gtype_name ()</h3>
374 <pre class="programlisting"><a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
375 g_typelib_get_dir_entry_by_gtype_name (<em class="parameter"><code><a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a> *typelib</code></em>,
376                                        <em class="parameter"><code>const <span class="type">gchar</span> *gtype_name</code></em>);</pre>
377 <p>TODO</p>
378 <div class="refsect3">
379 <a name="g-typelib-get-dir-entry-by-gtype-name.parameters"></a><h4>Parameters</h4>
380 <div class="informaltable"><table class="informaltable" width="100%" border="0">
381 <colgroup>
382 <col width="150px" class="parameters_name">
383 <col class="parameters_description">
384 <col width="200px" class="parameters_annotations">
385 </colgroup>
386 <tbody>
387 <tr>
388 <td class="parameter_name"><p>typelib</p></td>
389 <td class="parameter_description"><p>TODO</p></td>
390 <td class="parameter_annotations"> </td>
391 </tr>
392 <tr>
393 <td class="parameter_name"><p>gtype_name</p></td>
394 <td class="parameter_description"><p>TODO</p></td>
395 <td class="parameter_annotations"> </td>
396 </tr>
397 </tbody>
398 </table></div>
399 </div>
400 <div class="refsect3">
401 <a name="g-typelib-get-dir-entry-by-gtype-name.returns"></a><h4>Returns</h4>
402 <p> TODO</p>
403 </div>
404 </div>
405 <hr>
406 <div class="refsect2">
407 <a name="g-typelib-get-dir-entry-by-error-domain"></a><h3>g_typelib_get_dir_entry_by_error_domain ()</h3>
408 <pre class="programlisting"><a class="link" href="gi-GITypelib.html#DirEntry" title="DirEntry"><span class="returnvalue">DirEntry</span></a> *
409 g_typelib_get_dir_entry_by_error_domain
410                                (<em class="parameter"><code><a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a> *typelib</code></em>,
411                                 <em class="parameter"><code><span class="type">GQuark</span> error_domain</code></em>);</pre>
412 <p>TODO</p>
413 <div class="refsect3">
414 <a name="g-typelib-get-dir-entry-by-error-domain.parameters"></a><h4>Parameters</h4>
415 <div class="informaltable"><table class="informaltable" width="100%" border="0">
416 <colgroup>
417 <col width="150px" class="parameters_name">
418 <col class="parameters_description">
419 <col width="200px" class="parameters_annotations">
420 </colgroup>
421 <tbody>
422 <tr>
423 <td class="parameter_name"><p>typelib</p></td>
424 <td class="parameter_description"><p>TODO</p></td>
425 <td class="parameter_annotations"> </td>
426 </tr>
427 <tr>
428 <td class="parameter_name"><p>error_domain</p></td>
429 <td class="parameter_description"><p>TODO</p></td>
430 <td class="parameter_annotations"> </td>
431 </tr>
432 </tbody>
433 </table></div>
434 </div>
435 <div class="refsect3">
436 <a name="g-typelib-get-dir-entry-by-error-domain.returns"></a><h4>Returns</h4>
437 <p> TODO</p>
438 </div>
439 </div>
440 <hr>
441 <div class="refsect2">
442 <a name="g-typelib-matches-gtype-name-prefix"></a><h3>g_typelib_matches_gtype_name_prefix ()</h3>
443 <pre class="programlisting"><span class="returnvalue">gboolean</span>
444 g_typelib_matches_gtype_name_prefix (<em class="parameter"><code><a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a> *typelib</code></em>,
445                                      <em class="parameter"><code>const <span class="type">gchar</span> *gtype_name</code></em>);</pre>
446 <p>TODO</p>
447 <div class="refsect3">
448 <a name="g-typelib-matches-gtype-name-prefix.parameters"></a><h4>Parameters</h4>
449 <div class="informaltable"><table class="informaltable" width="100%" border="0">
450 <colgroup>
451 <col width="150px" class="parameters_name">
452 <col class="parameters_description">
453 <col width="200px" class="parameters_annotations">
454 </colgroup>
455 <tbody>
456 <tr>
457 <td class="parameter_name"><p>typelib</p></td>
458 <td class="parameter_description"><p>TODO</p></td>
459 <td class="parameter_annotations"> </td>
460 </tr>
461 <tr>
462 <td class="parameter_name"><p>gtype_name</p></td>
463 <td class="parameter_description"><p>TODO</p></td>
464 <td class="parameter_annotations"> </td>
465 </tr>
466 </tbody>
467 </table></div>
468 </div>
469 <div class="refsect3">
470 <a name="g-typelib-matches-gtype-name-prefix.returns"></a><h4>Returns</h4>
471 <p> TODO</p>
472 </div>
473 </div>
474 <hr>
475 <div class="refsect2">
476 <a name="g-typelib-check-sanity"></a><h3>g_typelib_check_sanity ()</h3>
477 <pre class="programlisting"><span class="returnvalue">void</span>
478 g_typelib_check_sanity (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
479 <p>TODO</p>
480 </div>
481 <hr>
482 <div class="refsect2">
483 <a name="g-typelib-get-string"></a><h3>g_typelib_get_string()</h3>
484 <pre class="programlisting">#define             g_typelib_get_string(typelib,offset)</pre>
485 <p>TODO</p>
486 <div class="refsect3">
487 <a name="g-typelib-get-string.parameters"></a><h4>Parameters</h4>
488 <div class="informaltable"><table class="informaltable" width="100%" border="0">
489 <colgroup>
490 <col width="150px" class="parameters_name">
491 <col class="parameters_description">
492 <col width="200px" class="parameters_annotations">
493 </colgroup>
494 <tbody>
495 <tr>
496 <td class="parameter_name"><p>typelib</p></td>
497 <td class="parameter_description"><p>TODO</p></td>
498 <td class="parameter_annotations"> </td>
499 </tr>
500 <tr>
501 <td class="parameter_name"><p>offset</p></td>
502 <td class="parameter_description"><p>TODO</p></td>
503 <td class="parameter_annotations"> </td>
504 </tr>
505 </tbody>
506 </table></div>
507 </div>
508 <div class="refsect3">
509 <a name="g-typelib-get-string.returns"></a><h4>Returns</h4>
510 <p> TODO</p>
511 </div>
512 </div>
513 <hr>
514 <div class="refsect2">
515 <a name="g-typelib-error-quark"></a><h3>g_typelib_error_quark ()</h3>
516 <pre class="programlisting"><span class="returnvalue">GQuark</span>
517 g_typelib_error_quark (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
518 <p>TODO</p>
519 <div class="refsect3">
520 <a name="g-typelib-error-quark.returns"></a><h4>Returns</h4>
521 <p> TODO</p>
522 </div>
523 </div>
524 <hr>
525 <div class="refsect2">
526 <a name="g-typelib-validate"></a><h3>g_typelib_validate ()</h3>
527 <pre class="programlisting"><span class="returnvalue">gboolean</span>
528 g_typelib_validate (<em class="parameter"><code><a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a> *typelib</code></em>,
529                     <em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
530 <p>TODO</p>
531 <div class="refsect3">
532 <a name="g-typelib-validate.parameters"></a><h4>Parameters</h4>
533 <div class="informaltable"><table class="informaltable" width="100%" border="0">
534 <colgroup>
535 <col width="150px" class="parameters_name">
536 <col class="parameters_description">
537 <col width="200px" class="parameters_annotations">
538 </colgroup>
539 <tbody>
540 <tr>
541 <td class="parameter_name"><p>typelib</p></td>
542 <td class="parameter_description"><p>TODO</p></td>
543 <td class="parameter_annotations"> </td>
544 </tr>
545 <tr>
546 <td class="parameter_name"><p>error</p></td>
547 <td class="parameter_description"><p>TODO</p></td>
548 <td class="parameter_annotations"> </td>
549 </tr>
550 </tbody>
551 </table></div>
552 </div>
553 <div class="refsect3">
554 <a name="g-typelib-validate.returns"></a><h4>Returns</h4>
555 <p> TODO</p>
556 </div>
557 </div>
558 </div>
559 <div class="refsect1">
560 <a name="gi-GITypelib.other_details"></a><h2>Types and Values</h2>
561 <div class="refsect2">
562 <a name="G-IR-MAGIC:CAPS"></a><h3>G_IR_MAGIC</h3>
563 <pre class="programlisting">#define G_IR_MAGIC "GOBJ\nMETADATA\r\n\032"
564 </pre>
565 <p>Identifying prefix for the typelib.  This was inspired by XPCOM,
566 which in turn borrowed from PNG.</p>
567 </div>
568 <hr>
569 <div class="refsect2">
570 <a name="GTypelibBlobType"></a><h3>enum GTypelibBlobType</h3>
571 <p>The integral value of this enumeration appears in each "Blob" component of
572 a typelib to identify its type.</p>
573 <div class="refsect3">
574 <a name="GTypelibBlobType.members"></a><h4>Members</h4>
575 <div class="informaltable"><table class="informaltable" width="100%" border="0">
576 <colgroup>
577 <col width="300px" class="enum_members_name">
578 <col class="enum_members_description">
579 <col width="200px" class="enum_members_annotations">
580 </colgroup>
581 <tbody>
582 <tr>
583 <td class="enum_member_name"><p><a name="BLOB-TYPE-INVALID:CAPS"></a>BLOB_TYPE_INVALID</p></td>
584 <td class="enum_member_description">
585 <p>Should not appear in code</p>
586 </td>
587 <td class="enum_member_annotations"> </td>
588 </tr>
589 <tr>
590 <td class="enum_member_name"><p><a name="BLOB-TYPE-FUNCTION:CAPS"></a>BLOB_TYPE_FUNCTION</p></td>
591 <td class="enum_member_description">
592 <p>A <a class="link" href="gi-GITypelib.html#FunctionBlob" title="FunctionBlob"><span class="type">FunctionBlob</span></a></p>
593 </td>
594 <td class="enum_member_annotations"> </td>
595 </tr>
596 <tr>
597 <td class="enum_member_name"><p><a name="BLOB-TYPE-CALLBACK:CAPS"></a>BLOB_TYPE_CALLBACK</p></td>
598 <td class="enum_member_description">
599 <p>A <a class="link" href="gi-GITypelib.html#CallbackBlob" title="CallbackBlob"><span class="type">CallbackBlob</span></a></p>
600 </td>
601 <td class="enum_member_annotations"> </td>
602 </tr>
603 <tr>
604 <td class="enum_member_name"><p><a name="BLOB-TYPE-STRUCT:CAPS"></a>BLOB_TYPE_STRUCT</p></td>
605 <td class="enum_member_description">
606 <p>A <a class="link" href="gi-GITypelib.html#StructBlob" title="StructBlob"><span class="type">StructBlob</span></a></p>
607 </td>
608 <td class="enum_member_annotations"> </td>
609 </tr>
610 <tr>
611 <td class="enum_member_name"><p><a name="BLOB-TYPE-BOXED:CAPS"></a>BLOB_TYPE_BOXED</p></td>
612 <td class="enum_member_description">
613 <p>Can be either a <a class="link" href="gi-GITypelib.html#StructBlob" title="StructBlob"><span class="type">StructBlob</span></a> or <a class="link" href="gi-GITypelib.html#UnionBlob" title="UnionBlob"><span class="type">UnionBlob</span></a></p>
614 </td>
615 <td class="enum_member_annotations"> </td>
616 </tr>
617 <tr>
618 <td class="enum_member_name"><p><a name="BLOB-TYPE-ENUM:CAPS"></a>BLOB_TYPE_ENUM</p></td>
619 <td class="enum_member_description">
620 <p>An <a class="link" href="gi-GITypelib.html#EnumBlob" title="EnumBlob"><span class="type">EnumBlob</span></a></p>
621 </td>
622 <td class="enum_member_annotations"> </td>
623 </tr>
624 <tr>
625 <td class="enum_member_name"><p><a name="BLOB-TYPE-FLAGS:CAPS"></a>BLOB_TYPE_FLAGS</p></td>
626 <td class="enum_member_description">
627 <p>An <a class="link" href="gi-GITypelib.html#EnumBlob" title="EnumBlob"><span class="type">EnumBlob</span></a></p>
628 </td>
629 <td class="enum_member_annotations"> </td>
630 </tr>
631 <tr>
632 <td class="enum_member_name"><p><a name="BLOB-TYPE-OBJECT:CAPS"></a>BLOB_TYPE_OBJECT</p></td>
633 <td class="enum_member_description">
634 <p>An <a class="link" href="gi-GITypelib.html#ObjectBlob" title="ObjectBlob"><span class="type">ObjectBlob</span></a></p>
635 </td>
636 <td class="enum_member_annotations"> </td>
637 </tr>
638 <tr>
639 <td class="enum_member_name"><p><a name="BLOB-TYPE-INTERFACE:CAPS"></a>BLOB_TYPE_INTERFACE</p></td>
640 <td class="enum_member_description">
641 <p>An <a class="link" href="gi-GITypelib.html#InterfaceBlob" title="InterfaceBlob"><span class="type">InterfaceBlob</span></a></p>
642 </td>
643 <td class="enum_member_annotations"> </td>
644 </tr>
645 <tr>
646 <td class="enum_member_name"><p><a name="BLOB-TYPE-CONSTANT:CAPS"></a>BLOB_TYPE_CONSTANT</p></td>
647 <td class="enum_member_description">
648 <p>A <a class="link" href="gi-GITypelib.html#ConstantBlob" title="ConstantBlob"><span class="type">ConstantBlob</span></a></p>
649 </td>
650 <td class="enum_member_annotations"> </td>
651 </tr>
652 <tr>
653 <td class="enum_member_name"><p><a name="BLOB-TYPE-INVALID-0:CAPS"></a>BLOB_TYPE_INVALID_0</p></td>
654 <td class="enum_member_description">
655 <p>Deleted, used to be ErrorDomain.</p>
656 </td>
657 <td class="enum_member_annotations"> </td>
658 </tr>
659 <tr>
660 <td class="enum_member_name"><p><a name="BLOB-TYPE-UNION:CAPS"></a>BLOB_TYPE_UNION</p></td>
661 <td class="enum_member_description">
662 <p>A <a class="link" href="gi-GITypelib.html#UnionBlob" title="UnionBlob"><span class="type">UnionBlob</span></a></p>
663 </td>
664 <td class="enum_member_annotations"> </td>
665 </tr>
666 </tbody>
667 </table></div>
668 </div>
669 </div>
670 <hr>
671 <div class="refsect2">
672 <a name="Header"></a><h3>Header</h3>
673 <pre class="programlisting">typedef struct {
674   gchar   magic[16];
675   guint8  major_version;
676   guint8  minor_version;
677   guint16 reserved;
678   guint16 n_entries;
679   guint16 n_local_entries;
680   guint32 directory;
681   guint32 n_attributes;
682   guint32 attributes;
683
684   guint32 dependencies;
685
686   guint32 size;
687   guint32 namespace;
688   guint32 nsversion;
689   guint32 shared_library;
690   guint32 c_prefix;
691
692   guint16 entry_blob_size;
693   guint16 function_blob_size;
694   guint16 callback_blob_size;
695   guint16 signal_blob_size;
696   guint16 vfunc_blob_size;
697   guint16 arg_blob_size;
698   guint16 property_blob_size;
699   guint16 field_blob_size;
700   guint16 value_blob_size;
701   guint16 attribute_blob_size;
702   guint16 constant_blob_size;
703   guint16 error_domain_blob_size;
704
705   guint16 signature_blob_size;
706   guint16 enum_blob_size;
707   guint16 struct_blob_size;
708   guint16 object_blob_size;
709   guint16 interface_blob_size;
710   guint16 union_blob_size;
711
712   guint32 sections;
713
714   guint16 padding[6];
715 } Header;
716 </pre>
717 <p>The header structure appears exactly once at the beginning of a typelib.  It is a
718 collection of meta-information, such as the number of entries and dependencies.</p>
719 <div class="refsect3">
720 <a name="Header.members"></a><h4>Members</h4>
721 <div class="informaltable"><table class="informaltable" width="100%" border="0">
722 <colgroup>
723 <col width="300px" class="struct_members_name">
724 <col class="struct_members_description">
725 <col width="200px" class="struct_members_annotations">
726 </colgroup>
727 <tbody>
728 <tr>
729 <td class="struct_member_name"><p><span class="type">gchar</span> <em class="structfield"><code><a name="Header.magic"></a>magic</code></em>[16];</p></td>
730 <td class="struct_member_description"><p>See <a class="link" href="gi-GITypelib.html#G-IR-MAGIC:CAPS" title="G_IR_MAGIC"><span class="type">G_IR_MAGIC</span></a>.</p></td>
731 <td class="struct_member_annotations"> </td>
732 </tr>
733 <tr>
734 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="Header.major-version"></a>major_version</code></em>;</p></td>
735 <td class="struct_member_description"><p>The major version number of the typelib format. Major version
736 number changes indicate incompatible changes to the tyeplib format.</p></td>
737 <td class="struct_member_annotations"> </td>
738 </tr>
739 <tr>
740 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="Header.minor-version"></a>minor_version</code></em>;</p></td>
741 <td class="struct_member_description"><p>The minor version number of the typelib format. Minor version
742 number changes indicate compatible changes and should still allow the
743 typelib to be parsed by a parser designed for the same <em class="parameter"><code>major_version</code></em>
744 .</p></td>
745 <td class="struct_member_annotations"> </td>
746 </tr>
747 <tr>
748 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.reserved"></a>reserved</code></em>;</p></td>
749 <td class="struct_member_description"><p>Reserved for future use.</p></td>
750 <td class="struct_member_annotations"> </td>
751 </tr>
752 <tr>
753 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.n-entries"></a>n_entries</code></em>;</p></td>
754 <td class="struct_member_description"><p>The number of entries in the directory.</p></td>
755 <td class="struct_member_annotations"> </td>
756 </tr>
757 <tr>
758 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.n-local-entries"></a>n_local_entries</code></em>;</p></td>
759 <td class="struct_member_description"><p>The number of entries referring to blobs in this typelib.
760 The local entries must occur before the unresolved entries.</p></td>
761 <td class="struct_member_annotations"> </td>
762 </tr>
763 <tr>
764 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.directory"></a>directory</code></em>;</p></td>
765 <td class="struct_member_description"><p>Offset of the directory in the typelib.</p></td>
766 <td class="struct_member_annotations"> </td>
767 </tr>
768 <tr>
769 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.n-attributes"></a>n_attributes</code></em>;</p></td>
770 <td class="struct_member_description"><p>Number of attribute blocks</p></td>
771 <td class="struct_member_annotations"> </td>
772 </tr>
773 <tr>
774 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.attributes"></a>attributes</code></em>;</p></td>
775 <td class="struct_member_description"><p>Offset of the list of attributes in the typelib.</p></td>
776 <td class="struct_member_annotations"> </td>
777 </tr>
778 <tr>
779 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.dependencies"></a>dependencies</code></em>;</p></td>
780 <td class="struct_member_description"><p>Offset of a single string, which is the list of immediate
781 dependencies, separated by the '|' character.  The dependencies are
782 required in order to avoid having programs consuming a typelib check for
783 an "Unresolved" type return from every API call.</p></td>
784 <td class="struct_member_annotations"> </td>
785 </tr>
786 <tr>
787 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.size"></a>size</code></em>;</p></td>
788 <td class="struct_member_description"><p>The size in bytes of the typelib.</p></td>
789 <td class="struct_member_annotations"> </td>
790 </tr>
791 <tr>
792 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.namespace"></a>namespace</code></em>;</p></td>
793 <td class="struct_member_description"><p>Offset of the namespace string in the typelib.</p></td>
794 <td class="struct_member_annotations"> </td>
795 </tr>
796 <tr>
797 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.nsversion"></a>nsversion</code></em>;</p></td>
798 <td class="struct_member_description"><p>Offset of the namespace version string in the typelib.</p></td>
799 <td class="struct_member_annotations"> </td>
800 </tr>
801 <tr>
802 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.shared-library"></a>shared_library</code></em>;</p></td>
803 <td class="struct_member_description"><p>This field is the set of shared libraries associated with
804 the typelib.  The entries are separated by the '|' (pipe) character.</p></td>
805 <td class="struct_member_annotations"> </td>
806 </tr>
807 <tr>
808 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.c-prefix"></a>c_prefix</code></em>;</p></td>
809 <td class="struct_member_description"><p>The prefix for the function names of the library</p></td>
810 <td class="struct_member_annotations"> </td>
811 </tr>
812 <tr>
813 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.entry-blob-size"></a>entry_blob_size</code></em>;</p></td>
814 <td class="struct_member_description"><p>The sizes of fixed-size blobs. Recording this information
815 here allows to write parser which continue to work if the format is
816 extended by adding new fields to the end of the fixed-size blobs.</p></td>
817 <td class="struct_member_annotations"> </td>
818 </tr>
819 <tr>
820 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.function-blob-size"></a>function_blob_size</code></em>;</p></td>
821 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
822 .</p></td>
823 <td class="struct_member_annotations"> </td>
824 </tr>
825 <tr>
826 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.callback-blob-size"></a>callback_blob_size</code></em>;</p></td>
827 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
828 .</p></td>
829 <td class="struct_member_annotations"> </td>
830 </tr>
831 <tr>
832 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.signal-blob-size"></a>signal_blob_size</code></em>;</p></td>
833 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
834 .</p></td>
835 <td class="struct_member_annotations"> </td>
836 </tr>
837 <tr>
838 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.vfunc-blob-size"></a>vfunc_blob_size</code></em>;</p></td>
839 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
840 .</p></td>
841 <td class="struct_member_annotations"> </td>
842 </tr>
843 <tr>
844 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.arg-blob-size"></a>arg_blob_size</code></em>;</p></td>
845 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
846 .</p></td>
847 <td class="struct_member_annotations"> </td>
848 </tr>
849 <tr>
850 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.property-blob-size"></a>property_blob_size</code></em>;</p></td>
851 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
852 .</p></td>
853 <td class="struct_member_annotations"> </td>
854 </tr>
855 <tr>
856 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.field-blob-size"></a>field_blob_size</code></em>;</p></td>
857 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
858 .</p></td>
859 <td class="struct_member_annotations"> </td>
860 </tr>
861 <tr>
862 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.value-blob-size"></a>value_blob_size</code></em>;</p></td>
863 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
864 .</p></td>
865 <td class="struct_member_annotations"> </td>
866 </tr>
867 <tr>
868 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.attribute-blob-size"></a>attribute_blob_size</code></em>;</p></td>
869 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
870 .</p></td>
871 <td class="struct_member_annotations"> </td>
872 </tr>
873 <tr>
874 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.constant-blob-size"></a>constant_blob_size</code></em>;</p></td>
875 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
876 .</p></td>
877 <td class="struct_member_annotations"> </td>
878 </tr>
879 <tr>
880 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.error-domain-blob-size"></a>error_domain_blob_size</code></em>;</p></td>
881 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
882 .</p></td>
883 <td class="struct_member_annotations"> </td>
884 </tr>
885 <tr>
886 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.signature-blob-size"></a>signature_blob_size</code></em>;</p></td>
887 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
888 .</p></td>
889 <td class="struct_member_annotations"> </td>
890 </tr>
891 <tr>
892 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.enum-blob-size"></a>enum_blob_size</code></em>;</p></td>
893 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
894 .</p></td>
895 <td class="struct_member_annotations"> </td>
896 </tr>
897 <tr>
898 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.struct-blob-size"></a>struct_blob_size</code></em>;</p></td>
899 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
900 .</p></td>
901 <td class="struct_member_annotations"> </td>
902 </tr>
903 <tr>
904 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.object-blob-size"></a>object_blob_size</code></em>;</p></td>
905 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
906 .</p></td>
907 <td class="struct_member_annotations"> </td>
908 </tr>
909 <tr>
910 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.interface-blob-size"></a>interface_blob_size</code></em>;</p></td>
911 <td class="struct_member_description"><p>For variable-size blobs, the size of the struct up to
912 the first flexible array member. Recording this information here allows
913 to write parser which continue to work if the format is extended by
914 adding new fields before the first flexible array member in
915 variable-size blobs.</p></td>
916 <td class="struct_member_annotations"> </td>
917 </tr>
918 <tr>
919 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.union-blob-size"></a>union_blob_size</code></em>;</p></td>
920 <td class="struct_member_description"><p>See <em class="parameter"><code>entry_blob_size</code></em>
921 .</p></td>
922 <td class="struct_member_annotations"> </td>
923 </tr>
924 <tr>
925 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Header.sections"></a>sections</code></em>;</p></td>
926 <td class="struct_member_description"><p>Offset of section blob array</p></td>
927 <td class="struct_member_annotations"> </td>
928 </tr>
929 <tr>
930 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="Header.padding"></a>padding</code></em>[6];</p></td>
931 <td class="struct_member_description"><p>TODO</p></td>
932 <td class="struct_member_annotations"> </td>
933 </tr>
934 </tbody>
935 </table></div>
936 </div>
937 </div>
938 <hr>
939 <div class="refsect2">
940 <a name="SectionType"></a><h3>enum SectionType</h3>
941 <p>TODO</p>
942 <div class="refsect3">
943 <a name="SectionType.members"></a><h4>Members</h4>
944 <div class="informaltable"><table class="informaltable" width="100%" border="0">
945 <colgroup>
946 <col width="300px" class="enum_members_name">
947 <col class="enum_members_description">
948 <col width="200px" class="enum_members_annotations">
949 </colgroup>
950 <tbody>
951 <tr>
952 <td class="enum_member_name"><p><a name="GI-SECTION-END:CAPS"></a>GI_SECTION_END</p></td>
953 <td class="enum_member_description">
954 <p>TODO</p>
955 </td>
956 <td class="enum_member_annotations"> </td>
957 </tr>
958 <tr>
959 <td class="enum_member_name"><p><a name="GI-SECTION-DIRECTORY-INDEX:CAPS"></a>GI_SECTION_DIRECTORY_INDEX</p></td>
960 <td class="enum_member_description">
961 <p>TODO</p>
962 </td>
963 <td class="enum_member_annotations"> </td>
964 </tr>
965 </tbody>
966 </table></div>
967 </div>
968 </div>
969 <hr>
970 <div class="refsect2">
971 <a name="Section"></a><h3>Section</h3>
972 <pre class="programlisting">typedef struct {
973   guint32 id;
974   guint32 offset;
975 } Section;
976 </pre>
977 <p>A section is a blob of data that's (at least theoretically) optional,
978 and may or may not be present in the typelib.  Presently, just used
979 for the directory index.  This allows a form of dynamic extensibility
980 with different tradeoffs from the format minor version.</p>
981 <div class="refsect3">
982 <a name="Section.members"></a><h4>Members</h4>
983 <div class="informaltable"><table class="informaltable" width="100%" border="0">
984 <colgroup>
985 <col width="300px" class="struct_members_name">
986 <col class="struct_members_description">
987 <col width="200px" class="struct_members_annotations">
988 </colgroup>
989 <tbody>
990 <tr>
991 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Section.id"></a>id</code></em>;</p></td>
992 <td class="struct_member_description"><p>A <a class="link" href="gi-GITypelib.html#SectionType" title="enum SectionType"><span class="type">SectionType</span></a></p></td>
993 <td class="struct_member_annotations"> </td>
994 </tr>
995 <tr>
996 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="Section.offset"></a>offset</code></em>;</p></td>
997 <td class="struct_member_description"><p>Integer offset for this section</p></td>
998 <td class="struct_member_annotations"> </td>
999 </tr>
1000 </tbody>
1001 </table></div>
1002 </div>
1003 </div>
1004 <hr>
1005 <div class="refsect2">
1006 <a name="DirEntry"></a><h3>DirEntry</h3>
1007 <pre class="programlisting">typedef struct {
1008   guint16 blob_type;
1009
1010   guint16 local    : 1;
1011   guint16 reserved :15;
1012   guint32 name;
1013   guint32 offset;
1014 } DirEntry;
1015 </pre>
1016 <p>References to directory entries are stored as 1-based 16-bit indexes.</p>
1017 <p>All blobs pointed to by a directory entry start with the same layout for
1018 the first 8 bytes (the reserved flags may be used by some blob types)</p>
1019 <div class="refsect3">
1020 <a name="DirEntry.members"></a><h4>Members</h4>
1021 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1022 <colgroup>
1023 <col width="300px" class="struct_members_name">
1024 <col class="struct_members_description">
1025 <col width="200px" class="struct_members_annotations">
1026 </colgroup>
1027 <tbody>
1028 <tr>
1029 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="DirEntry.blob-type"></a>blob_type</code></em>;</p></td>
1030 <td class="struct_member_description"><p>A <a class="link" href="gi-GITypelib.html#GTypelibBlobType" title="enum GTypelibBlobType"><span class="type">GTypelibBlobType</span></a></p></td>
1031 <td class="struct_member_annotations"> </td>
1032 </tr>
1033 <tr>
1034 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="DirEntry.local"></a>local</code></em> : 1;</p></td>
1035 <td class="struct_member_description"><p>Whether this entry refers to a blob in this typelib.</p></td>
1036 <td class="struct_member_annotations"> </td>
1037 </tr>
1038 <tr>
1039 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="DirEntry.reserved"></a>reserved</code></em> :15;</p></td>
1040 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1041 <td class="struct_member_annotations"> </td>
1042 </tr>
1043 <tr>
1044 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="DirEntry.name"></a>name</code></em>;</p></td>
1045 <td class="struct_member_description"><p>The name of the entry.</p></td>
1046 <td class="struct_member_annotations"> </td>
1047 </tr>
1048 <tr>
1049 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="DirEntry.offset"></a>offset</code></em>;</p></td>
1050 <td class="struct_member_description"><p>If is_local is set, this is the offset of the blob in the typelib.
1051 Otherwise, it is the offset of the namespace in which the blob has to be
1052 looked up by name.</p></td>
1053 <td class="struct_member_annotations"> </td>
1054 </tr>
1055 </tbody>
1056 </table></div>
1057 </div>
1058 </div>
1059 <hr>
1060 <div class="refsect2">
1061 <a name="SimpleTypeBlobFlags"></a><h3>SimpleTypeBlobFlags</h3>
1062 <pre class="programlisting">typedef struct {
1063   guint reserved   : 8;
1064   guint reserved2  :16;
1065   guint pointer    : 1;
1066   guint reserved3  : 2;
1067   guint tag        : 5;
1068 } SimpleTypeBlobFlags;
1069 </pre>
1070 <p>TODO</p>
1071 <div class="refsect3">
1072 <a name="SimpleTypeBlobFlags.members"></a><h4>Members</h4>
1073 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1074 <colgroup>
1075 <col width="300px" class="struct_members_name">
1076 <col class="struct_members_description">
1077 <col width="200px" class="struct_members_annotations">
1078 </colgroup>
1079 <tbody>
1080 <tr>
1081 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="SimpleTypeBlobFlags.reserved"></a>reserved</code></em> : 8;</p></td>
1082 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1083 <td class="struct_member_annotations"> </td>
1084 </tr>
1085 <tr>
1086 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="SimpleTypeBlobFlags.reserved2"></a>reserved2</code></em> :16;</p></td>
1087 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1088 <td class="struct_member_annotations"> </td>
1089 </tr>
1090 <tr>
1091 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="SimpleTypeBlobFlags.pointer"></a>pointer</code></em> : 1;</p></td>
1092 <td class="struct_member_description"><p>TODO</p></td>
1093 <td class="struct_member_annotations"> </td>
1094 </tr>
1095 <tr>
1096 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="SimpleTypeBlobFlags.reserved3"></a>reserved3</code></em> : 2;</p></td>
1097 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1098 <td class="struct_member_annotations"> </td>
1099 </tr>
1100 <tr>
1101 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="SimpleTypeBlobFlags.tag"></a>tag</code></em> : 5;</p></td>
1102 <td class="struct_member_description"><p>A <a class="link" href="gi-common-types.html#GITypeTag" title="enum GITypeTag"><span class="type">GITypeTag</span></a></p></td>
1103 <td class="struct_member_annotations"> </td>
1104 </tr>
1105 </tbody>
1106 </table></div>
1107 </div>
1108 </div>
1109 <hr>
1110 <div class="refsect2">
1111 <a name="SimpleTypeBlob"></a><h3>SimpleTypeBlob</h3>
1112 <p>The SimpleTypeBlob is the general purpose "reference to a type" construct,
1113 used in method parameters, returns, callback definitions, fields, constants,
1114 etc. It's actually just a 32 bit integer which you can see from the union
1115 definition. This is for efficiency reasons, since there are so many
1116 references to types.</p>
1117 <p>SimpleTypeBlob is divided into two cases; first, if "reserved" and
1118 "reserved2", the type tag for a basic type is embedded in the "tag" bits.
1119 This allows e.g. GI_TYPE_TAG_UTF8, GI_TYPE_TAG_INT and the like to be
1120 embedded directly without taking up extra space.</p>
1121 <p>References to "interfaces" (objects, interfaces) are more complicated;
1122 In this case, the integer is actually an offset into the directory (see
1123 above).  Because the header is larger than 2^8=256 bits, all offsets will
1124 have one of the upper 24 bits set.</p>
1125 <div class="refsect3">
1126 <a name="SimpleTypeBlob.members"></a><h4>Members</h4>
1127 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1128 <colgroup>
1129 <col width="300px" class="union_members_name">
1130 <col class="union_members_description">
1131 <col width="200px" class="union_members_annotations">
1132 </colgroup>
1133 <tbody>
1134 <tr>
1135 <td class="union_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlobFlags" title="SimpleTypeBlobFlags"><span class="type">SimpleTypeBlobFlags</span></a> <em class="structfield"><code><a name="SimpleTypeBlob.flags"></a>flags</code></em>;</p></td>
1136 <td class="union_member_description"><p>TODO</p></td>
1137 <td class="union_member_annotations"> </td>
1138 </tr>
1139 <tr>
1140 <td class="union_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="SimpleTypeBlob.offset"></a>offset</code></em>;</p></td>
1141 <td class="union_member_description"><p>Offset relative to header-&gt;types that points to a TypeBlob.
1142 Unlike other offsets, this is in words (ie 32bit units) rather
1143 than bytes.</p></td>
1144 <td class="union_member_annotations"> </td>
1145 </tr>
1146 </tbody>
1147 </table></div>
1148 </div>
1149 </div>
1150 <hr>
1151 <div class="refsect2">
1152 <a name="ArgBlob"></a><h3>ArgBlob</h3>
1153 <pre class="programlisting">typedef struct {
1154   guint32        name;
1155
1156   guint          in                           : 1;
1157   guint          out                          : 1;
1158   guint          caller_allocates             : 1;
1159   guint          nullable                     : 1;
1160   guint          optional                     : 1;
1161   guint          transfer_ownership           : 1;
1162   guint          transfer_container_ownership : 1;
1163   guint          return_value                 : 1;
1164   guint          scope                        : 3;
1165   guint          skip                         : 1;
1166   guint          reserved                     :20;
1167   gint8          closure;
1168   gint8          destroy;
1169
1170   guint16        padding;
1171
1172   SimpleTypeBlob arg_type;
1173 } ArgBlob;
1174 </pre>
1175 <p>Types are specified by four bytes. If the three high bytes are zero,
1176 the low byte describes a basic type, otherwise the 32bit number is an
1177 offset which points to a TypeBlob.</p>
1178 <div class="refsect3">
1179 <a name="ArgBlob.members"></a><h4>Members</h4>
1180 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1181 <colgroup>
1182 <col width="300px" class="struct_members_name">
1183 <col class="struct_members_description">
1184 <col width="200px" class="struct_members_annotations">
1185 </colgroup>
1186 <tbody>
1187 <tr>
1188 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ArgBlob.name"></a>name</code></em>;</p></td>
1189 <td class="struct_member_description"><p>A suggested name for the parameter.</p></td>
1190 <td class="struct_member_annotations"> </td>
1191 </tr>
1192 <tr>
1193 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.in"></a>in</code></em> : 1;</p></td>
1194 <td class="struct_member_description"><p>The parameter is an input to the function</p></td>
1195 <td class="struct_member_annotations"> </td>
1196 </tr>
1197 <tr>
1198 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.out"></a>out</code></em> : 1;</p></td>
1199 <td class="struct_member_description"><p>The parameter is used to return an output of the function. Parameters
1200 can be both in and out. Out parameters implicitly add another level of
1201 indirection to the parameter type. Ie if the type is uint32 in an out
1202 parameter, the function actually takes an uint32*.</p></td>
1203 <td class="struct_member_annotations"> </td>
1204 </tr>
1205 <tr>
1206 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.caller-allocates"></a>caller_allocates</code></em> : 1;</p></td>
1207 <td class="struct_member_description"><p>The parameter is a pointer to a struct or object that
1208 will receive an output of the function.</p></td>
1209 <td class="struct_member_annotations"> </td>
1210 </tr>
1211 <tr>
1212 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.nullable"></a>nullable</code></em> : 1;</p></td>
1213 <td class="struct_member_description"><p>Only meaningful for types which are passed as pointers. For an
1214 in parameter, indicates if it is ok to pass NULL in. Gor an out
1215 parameter, indicates whether it may return NULL. Note that NULL is a
1216 valid GList and GSList value, thus allow_none will normally be set
1217 for parameters of these types.</p></td>
1218 <td class="struct_member_annotations"> </td>
1219 </tr>
1220 <tr>
1221 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.optional"></a>optional</code></em> : 1;</p></td>
1222 <td class="struct_member_description"><p>For an out parameter, indicates that NULL may be passed in
1223 if the value is not needed.</p></td>
1224 <td class="struct_member_annotations"> </td>
1225 </tr>
1226 <tr>
1227 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.transfer-ownership"></a>transfer_ownership</code></em> : 1;</p></td>
1228 <td class="struct_member_description"><p>For an in parameter, indicates that the function takes
1229 over ownership of the parameter value. For an out parameter, it indicates
1230 that the caller is responsible for freeing the return value.</p></td>
1231 <td class="struct_member_annotations"> </td>
1232 </tr>
1233 <tr>
1234 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.transfer-container-ownership"></a>transfer_container_ownership</code></em> : 1;</p></td>
1235 <td class="struct_member_description"><p>For container types, indicates that the
1236 ownership of the container, but not of its contents is transferred.
1237 This is typically the case for out parameters returning lists of
1238 statically allocated things.</p></td>
1239 <td class="struct_member_annotations"> </td>
1240 </tr>
1241 <tr>
1242 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.return-value"></a>return_value</code></em> : 1;</p></td>
1243 <td class="struct_member_description"><p>The parameter should be considered the return value of the
1244 function. Only out parameters can be marked as return value, and there
1245 can be at most one per function call. If an out parameter is marked as
1246 return value, the actual return value of the function should be either
1247 void or a boolean indicating the success of the call.</p></td>
1248 <td class="struct_member_annotations"> </td>
1249 </tr>
1250 <tr>
1251 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.scope"></a>scope</code></em> : 3;</p></td>
1252 <td class="struct_member_description"><p>A <a class="link" href="gi-GIArgInfo.html#GIScopeType" title="enum GIScopeType"><span class="type">GIScopeType</span></a>. If the parameter is of a callback type, this denotes
1253 the scope of the user_data and the callback function pointer itself
1254 (for languages that emit code at run-time).</p></td>
1255 <td class="struct_member_annotations"> </td>
1256 </tr>
1257 <tr>
1258 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.skip"></a>skip</code></em> : 1;</p></td>
1259 <td class="struct_member_description"><p>Indicates that the parameter is only useful in C and should be skipped.</p></td>
1260 <td class="struct_member_annotations"> </td>
1261 </tr>
1262 <tr>
1263 <td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="ArgBlob.reserved"></a>reserved</code></em> :20;</p></td>
1264 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1265 <td class="struct_member_annotations"> </td>
1266 </tr>
1267 <tr>
1268 <td class="struct_member_name"><p><span class="type">gint8</span> <em class="structfield"><code><a name="ArgBlob.closure"></a>closure</code></em>;</p></td>
1269 <td class="struct_member_description"><p>Index of the closure (user_data) parameter associated with the
1270 callback, or -1.</p></td>
1271 <td class="struct_member_annotations"> </td>
1272 </tr>
1273 <tr>
1274 <td class="struct_member_name"><p><span class="type">gint8</span> <em class="structfield"><code><a name="ArgBlob.destroy"></a>destroy</code></em>;</p></td>
1275 <td class="struct_member_description"><p>Index of the destroy notfication callback parameter associated
1276 with the callback, or -1.</p></td>
1277 <td class="struct_member_annotations"> </td>
1278 </tr>
1279 <tr>
1280 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArgBlob.padding"></a>padding</code></em>;</p></td>
1281 <td class="struct_member_description"><p>TODO</p></td>
1282 <td class="struct_member_annotations"> </td>
1283 </tr>
1284 <tr>
1285 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="ArgBlob.arg-type"></a>arg_type</code></em>;</p></td>
1286 <td class="struct_member_description"><p>Describes the type of the parameter. See details below.</p></td>
1287 <td class="struct_member_annotations"> </td>
1288 </tr>
1289 </tbody>
1290 </table></div>
1291 </div>
1292 </div>
1293 <hr>
1294 <div class="refsect2">
1295 <a name="SignatureBlob"></a><h3>SignatureBlob</h3>
1296 <pre class="programlisting">typedef struct {
1297   SimpleTypeBlob return_type;
1298
1299   guint16        may_return_null              : 1;
1300   guint16        caller_owns_return_value     : 1;
1301   guint16        caller_owns_return_container : 1;
1302   guint16        skip_return                  : 1;
1303   guint16        instance_transfer_ownership  : 1;
1304   guint16        throws                       : 1;
1305   guint16        reserved                     :10;
1306
1307   guint16        n_arguments;
1308
1309   ArgBlob        arguments[];
1310 } SignatureBlob;
1311 </pre>
1312 <p>TODO</p>
1313 <div class="refsect3">
1314 <a name="SignatureBlob.members"></a><h4>Members</h4>
1315 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1316 <colgroup>
1317 <col width="300px" class="struct_members_name">
1318 <col class="struct_members_description">
1319 <col width="200px" class="struct_members_annotations">
1320 </colgroup>
1321 <tbody>
1322 <tr>
1323 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="SignatureBlob.return-type"></a>return_type</code></em>;</p></td>
1324 <td class="struct_member_description"><p>Describes the type of the return value. See details below.</p></td>
1325 <td class="struct_member_annotations"> </td>
1326 </tr>
1327 <tr>
1328 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.may-return-null"></a>may_return_null</code></em> : 1;</p></td>
1329 <td class="struct_member_description"><p>Only relevant for pointer types. Indicates whether the
1330 caller must expect NULL as a return value.</p></td>
1331 <td class="struct_member_annotations"> </td>
1332 </tr>
1333 <tr>
1334 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.caller-owns-return-value"></a>caller_owns_return_value</code></em> : 1;</p></td>
1335 <td class="struct_member_description"><p>If set, the caller is responsible for freeing
1336 the return value if it is no longer needed.</p></td>
1337 <td class="struct_member_annotations"> </td>
1338 </tr>
1339 <tr>
1340 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.caller-owns-return-container"></a>caller_owns_return_container</code></em> : 1;</p></td>
1341 <td class="struct_member_description"><p>This flag is only relevant if the return type
1342 is a container type. If the flag is set, the caller is resonsible for
1343 freeing the container, but not its contents.</p></td>
1344 <td class="struct_member_annotations"> </td>
1345 </tr>
1346 <tr>
1347 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.skip-return"></a>skip_return</code></em> : 1;</p></td>
1348 <td class="struct_member_description"><p>Indicates that the return value is only useful in C and should
1349 be skipped.</p></td>
1350 <td class="struct_member_annotations"> </td>
1351 </tr>
1352 <tr>
1353 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.instance-transfer-ownership"></a>instance_transfer_ownership</code></em> : 1;</p></td>
1354 <td class="struct_member_description"><p>When calling, the function assumes ownership of
1355 the instance parameter.</p></td>
1356 <td class="struct_member_annotations"> </td>
1357 </tr>
1358 <tr>
1359 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.throws"></a>throws</code></em> : 1;</p></td>
1360 <td class="struct_member_description"><p>Denotes the signature takes an additional <span class="type">GError</span> argument beyond
1361 the annotated arguments.</p></td>
1362 <td class="struct_member_annotations"> </td>
1363 </tr>
1364 <tr>
1365 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.reserved"></a>reserved</code></em> :10;</p></td>
1366 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1367 <td class="struct_member_annotations"> </td>
1368 </tr>
1369 <tr>
1370 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignatureBlob.n-arguments"></a>n_arguments</code></em>;</p></td>
1371 <td class="struct_member_description"><p>The number of arguments that this function expects, also the
1372 length of the array of ArgBlobs.</p></td>
1373 <td class="struct_member_annotations"> </td>
1374 </tr>
1375 <tr>
1376 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#ArgBlob" title="ArgBlob"><span class="type">ArgBlob</span></a> <em class="structfield"><code><a name="SignatureBlob.arguments"></a>arguments</code></em>[];</p></td>
1377 <td class="struct_member_description"><p>An array of ArgBlob for the arguments of the function.</p></td>
1378 <td class="struct_member_annotations"> </td>
1379 </tr>
1380 </tbody>
1381 </table></div>
1382 </div>
1383 </div>
1384 <hr>
1385 <div class="refsect2">
1386 <a name="CommonBlob"></a><h3>CommonBlob</h3>
1387 <pre class="programlisting">typedef struct {
1388   guint16 blob_type;  /* 1 */
1389
1390   guint16 deprecated : 1;
1391   guint16 reserved   :15;
1392   guint32 name;
1393 } CommonBlob;
1394 </pre>
1395 <p>The <a class="link" href="gi-GITypelib.html#CommonBlob" title="CommonBlob"><span class="type">CommonBlob</span></a> is shared between <a class="link" href="gi-GITypelib.html#FunctionBlob" title="FunctionBlob"><span class="type">FunctionBlob</span></a>,
1396 <a class="link" href="gi-GITypelib.html#CallbackBlob" title="CallbackBlob"><span class="type">CallbackBlob</span></a>, <a class="link" href="gi-GITypelib.html#SignalBlob" title="SignalBlob"><span class="type">SignalBlob</span></a>.</p>
1397 <p>TODO</p>
1398 <div class="refsect3">
1399 <a name="CommonBlob.members"></a><h4>Members</h4>
1400 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1401 <colgroup>
1402 <col width="300px" class="struct_members_name">
1403 <col class="struct_members_description">
1404 <col width="200px" class="struct_members_annotations">
1405 </colgroup>
1406 <tbody>
1407 <tr>
1408 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="CommonBlob.blob-type"></a>blob_type</code></em>;</p></td>
1409 <td class="struct_member_description"><p>A <a class="link" href="gi-GITypelib.html#GTypelibBlobType" title="enum GTypelibBlobType"><span class="type">GTypelibBlobType</span></a></p></td>
1410 <td class="struct_member_annotations"> </td>
1411 </tr>
1412 <tr>
1413 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="CommonBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
1414 <td class="struct_member_description"><p>Whether the blob is deprecated.</p></td>
1415 <td class="struct_member_annotations"> </td>
1416 </tr>
1417 <tr>
1418 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="CommonBlob.reserved"></a>reserved</code></em> :15;</p></td>
1419 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1420 <td class="struct_member_annotations"> </td>
1421 </tr>
1422 <tr>
1423 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="CommonBlob.name"></a>name</code></em>;</p></td>
1424 <td class="struct_member_description"><p>The name of the blob.</p></td>
1425 <td class="struct_member_annotations"> </td>
1426 </tr>
1427 </tbody>
1428 </table></div>
1429 </div>
1430 </div>
1431 <hr>
1432 <div class="refsect2">
1433 <a name="FunctionBlob"></a><h3>FunctionBlob</h3>
1434 <pre class="programlisting">typedef struct {
1435   guint16 blob_type;  /* 1 */
1436
1437   guint16 deprecated  : 1;
1438   guint16 setter      : 1;
1439   guint16 getter      : 1;
1440   guint16 constructor : 1;
1441   guint16 wraps_vfunc : 1;
1442   guint16 throws      : 1;
1443   guint16 index       :10;
1444   /* Note the bits above need to match CommonBlob
1445    * and are thus exhausted, extend things using
1446    * the reserved block below. */
1447
1448   guint32 name;
1449   guint32 symbol;
1450   guint32 signature;
1451
1452   guint16 is_static   : 1;
1453   guint16 reserved    : 15;
1454   guint16 reserved2   : 16;
1455 } FunctionBlob;
1456 </pre>
1457 <p>TODO</p>
1458 <div class="refsect3">
1459 <a name="FunctionBlob.members"></a><h4>Members</h4>
1460 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1461 <colgroup>
1462 <col width="300px" class="struct_members_name">
1463 <col class="struct_members_description">
1464 <col width="200px" class="struct_members_annotations">
1465 </colgroup>
1466 <tbody>
1467 <tr>
1468 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.blob-type"></a>blob_type</code></em>;</p></td>
1469 <td class="struct_member_description"><p><a class="link" href="gi-GITypelib.html#BLOB-TYPE-FUNCTION:CAPS"><span class="type">BLOB_TYPE_FUNCTION</span></a></p></td>
1470 <td class="struct_member_annotations"> </td>
1471 </tr>
1472 <tr>
1473 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
1474 <td class="struct_member_description"><p>The function is deprecated.</p></td>
1475 <td class="struct_member_annotations"> </td>
1476 </tr>
1477 <tr>
1478 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.setter"></a>setter</code></em> : 1;</p></td>
1479 <td class="struct_member_description"><p>The function is a setter for a property. Language bindings may
1480 prefer to not bind individual setters and rely on the generic
1481 <code class="function">g_object_set()</code>.</p></td>
1482 <td class="struct_member_annotations"> </td>
1483 </tr>
1484 <tr>
1485 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.getter"></a>getter</code></em> : 1;</p></td>
1486 <td class="struct_member_description"><p>The function is a getter for a property. Language bindings may
1487 prefer to not bind individual getters and rely on the generic
1488 <code class="function">g_object_get()</code>.</p></td>
1489 <td class="struct_member_annotations"> </td>
1490 </tr>
1491 <tr>
1492 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.constructor"></a>constructor</code></em> : 1;</p></td>
1493 <td class="struct_member_description"><p>The function acts as a constructor for the object it is
1494 contained in.</p></td>
1495 <td class="struct_member_annotations"> </td>
1496 </tr>
1497 <tr>
1498 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.wraps-vfunc"></a>wraps_vfunc</code></em> : 1;</p></td>
1499 <td class="struct_member_description"><p>The function is a simple wrapper for a virtual function.</p></td>
1500 <td class="struct_member_annotations"> </td>
1501 </tr>
1502 <tr>
1503 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.throws"></a>throws</code></em> : 1;</p></td>
1504 <td class="struct_member_description"><p> This is now additionally stored in the <a class="link" href="gi-GITypelib.html#SignatureBlob" title="SignatureBlob"><span class="type">SignatureBlob</span></a>. </p></td>
1505 <td class="struct_member_annotations"><span class="annotation">[deprecated]</span></td>
1506 </tr>
1507 <tr>
1508 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.index"></a>index</code></em> :10;</p></td>
1509 <td class="struct_member_description"><p>Index of the property that this function is a setter or getter of
1510 in the array of properties of the containing interface, or index
1511 of the virtual function that this function wraps.</p></td>
1512 <td class="struct_member_annotations"> </td>
1513 </tr>
1514 <tr>
1515 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="FunctionBlob.name"></a>name</code></em>;</p></td>
1516 <td class="struct_member_description"><p>TODO</p></td>
1517 <td class="struct_member_annotations"> </td>
1518 </tr>
1519 <tr>
1520 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="FunctionBlob.symbol"></a>symbol</code></em>;</p></td>
1521 <td class="struct_member_description"><p>The symbol which can be used to obtain the function pointer with
1522 <code class="function">dlsym()</code>.</p></td>
1523 <td class="struct_member_annotations"> </td>
1524 </tr>
1525 <tr>
1526 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="FunctionBlob.signature"></a>signature</code></em>;</p></td>
1527 <td class="struct_member_description"><p>Offset of the SignatureBlob describing the parameter types and the
1528 return value type.</p></td>
1529 <td class="struct_member_annotations"> </td>
1530 </tr>
1531 <tr>
1532 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.is-static"></a>is_static</code></em> : 1;</p></td>
1533 <td class="struct_member_description"><p>The function is a "static method"; in other words it's a pure
1534 function whose name is conceptually scoped to the object.</p></td>
1535 <td class="struct_member_annotations"> </td>
1536 </tr>
1537 <tr>
1538 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.reserved"></a>reserved</code></em> : 15;</p></td>
1539 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1540 <td class="struct_member_annotations"> </td>
1541 </tr>
1542 <tr>
1543 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FunctionBlob.reserved2"></a>reserved2</code></em> : 16;</p></td>
1544 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1545 <td class="struct_member_annotations"> </td>
1546 </tr>
1547 </tbody>
1548 </table></div>
1549 </div>
1550 </div>
1551 <hr>
1552 <div class="refsect2">
1553 <a name="CallbackBlob"></a><h3>CallbackBlob</h3>
1554 <pre class="programlisting">typedef struct {
1555   guint16 blob_type;  /* 2 */
1556
1557   guint16 deprecated : 1;
1558   guint16 reserved   :15;
1559   guint32 name;
1560   guint32 signature;
1561 } CallbackBlob;
1562 </pre>
1563 <p>TODO</p>
1564 <div class="refsect3">
1565 <a name="CallbackBlob.members"></a><h4>Members</h4>
1566 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1567 <colgroup>
1568 <col width="300px" class="struct_members_name">
1569 <col class="struct_members_description">
1570 <col width="200px" class="struct_members_annotations">
1571 </colgroup>
1572 <tbody>
1573 <tr>
1574 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="CallbackBlob.blob-type"></a>blob_type</code></em>;</p></td>
1575 <td class="struct_member_description"><p>TODO</p></td>
1576 <td class="struct_member_annotations"> </td>
1577 </tr>
1578 <tr>
1579 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="CallbackBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
1580 <td class="struct_member_description"><p>TODO</p></td>
1581 <td class="struct_member_annotations"> </td>
1582 </tr>
1583 <tr>
1584 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="CallbackBlob.reserved"></a>reserved</code></em> :15;</p></td>
1585 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1586 <td class="struct_member_annotations"> </td>
1587 </tr>
1588 <tr>
1589 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="CallbackBlob.name"></a>name</code></em>;</p></td>
1590 <td class="struct_member_description"><p>TODO</p></td>
1591 <td class="struct_member_annotations"> </td>
1592 </tr>
1593 <tr>
1594 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="CallbackBlob.signature"></a>signature</code></em>;</p></td>
1595 <td class="struct_member_description"><p>Offset of the <a class="link" href="gi-GITypelib.html#SignatureBlob" title="SignatureBlob"><span class="type">SignatureBlob</span></a> describing the parameter types and
1596 the return value type.</p></td>
1597 <td class="struct_member_annotations"> </td>
1598 </tr>
1599 </tbody>
1600 </table></div>
1601 </div>
1602 </div>
1603 <hr>
1604 <div class="refsect2">
1605 <a name="InterfaceTypeBlob"></a><h3>InterfaceTypeBlob</h3>
1606 <pre class="programlisting">typedef struct {
1607   guint8  pointer  :1;
1608   guint8  reserved :2;
1609   guint8  tag      :5;
1610   guint8  reserved2;
1611   guint16 interface;
1612 } InterfaceTypeBlob;
1613 </pre>
1614 <p>If the interface is an enum of flags type, is_pointer is 0, otherwise it is 1.</p>
1615 <div class="refsect3">
1616 <a name="InterfaceTypeBlob.members"></a><h4>Members</h4>
1617 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1618 <colgroup>
1619 <col width="300px" class="struct_members_name">
1620 <col class="struct_members_description">
1621 <col width="200px" class="struct_members_annotations">
1622 </colgroup>
1623 <tbody>
1624 <tr>
1625 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="InterfaceTypeBlob.pointer"></a>pointer</code></em> :1;</p></td>
1626 <td class="struct_member_description"><p>Whether this type represents an indirection</p></td>
1627 <td class="struct_member_annotations"> </td>
1628 </tr>
1629 <tr>
1630 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="InterfaceTypeBlob.reserved"></a>reserved</code></em> :2;</p></td>
1631 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1632 <td class="struct_member_annotations"> </td>
1633 </tr>
1634 <tr>
1635 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="InterfaceTypeBlob.tag"></a>tag</code></em> :5;</p></td>
1636 <td class="struct_member_description"><p>A <a class="link" href="gi-common-types.html#GITypeTag" title="enum GITypeTag"><span class="type">GITypeTag</span></a></p></td>
1637 <td class="struct_member_annotations"> </td>
1638 </tr>
1639 <tr>
1640 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="InterfaceTypeBlob.reserved2"></a>reserved2</code></em>;</p></td>
1641 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1642 <td class="struct_member_annotations"> </td>
1643 </tr>
1644 <tr>
1645 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceTypeBlob.interface"></a>interface</code></em>;</p></td>
1646 <td class="struct_member_description"><p>Index of the directory entry for the interface.</p></td>
1647 <td class="struct_member_annotations"> </td>
1648 </tr>
1649 </tbody>
1650 </table></div>
1651 </div>
1652 </div>
1653 <hr>
1654 <div class="refsect2">
1655 <a name="ArrayTypeDimension"></a><h3>ArrayTypeDimension</h3>
1656 <p>TODO</p>
1657 <div class="refsect3">
1658 <a name="ArrayTypeDimension.members"></a><h4>Members</h4>
1659 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1660 <colgroup>
1661 <col width="300px" class="union_members_name">
1662 <col class="union_members_description">
1663 <col width="200px" class="union_members_annotations">
1664 </colgroup>
1665 <tbody>
1666 <tr>
1667 <td class="union_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeDimension.length"></a>length</code></em>;</p></td>
1668 <td class="union_member_description"><p>TODO</p></td>
1669 <td class="union_member_annotations"> </td>
1670 </tr>
1671 <tr>
1672 <td class="union_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeDimension.size"></a>size</code></em>;</p></td>
1673 <td class="union_member_description"><p>TODO</p></td>
1674 <td class="union_member_annotations"> </td>
1675 </tr>
1676 </tbody>
1677 </table></div>
1678 </div>
1679 </div>
1680 <hr>
1681 <div class="refsect2">
1682 <a name="ArrayTypeBlob"></a><h3>ArrayTypeBlob</h3>
1683 <pre class="programlisting">typedef struct {
1684   guint16 pointer         :1;
1685   guint16 reserved        :2;
1686   guint16 tag             :5;
1687
1688   guint16 zero_terminated :1;
1689   guint16 has_length      :1;
1690   guint16 has_size        :1;
1691   guint16 array_type      :2;
1692   guint16 reserved2       :3;
1693
1694   ArrayTypeDimension dimensions;
1695
1696   SimpleTypeBlob type;
1697 } ArrayTypeBlob;
1698 </pre>
1699 <p>TODO</p>
1700 <div class="refsect3">
1701 <a name="ArrayTypeBlob.members"></a><h4>Members</h4>
1702 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1703 <colgroup>
1704 <col width="300px" class="struct_members_name">
1705 <col class="struct_members_description">
1706 <col width="200px" class="struct_members_annotations">
1707 </colgroup>
1708 <tbody>
1709 <tr>
1710 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.pointer"></a>pointer</code></em> :1;</p></td>
1711 <td class="struct_member_description"><p>TODO</p></td>
1712 <td class="struct_member_annotations"> </td>
1713 </tr>
1714 <tr>
1715 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.reserved"></a>reserved</code></em> :2;</p></td>
1716 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1717 <td class="struct_member_annotations"> </td>
1718 </tr>
1719 <tr>
1720 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.tag"></a>tag</code></em> :5;</p></td>
1721 <td class="struct_member_description"><p>TODO</p></td>
1722 <td class="struct_member_annotations"> </td>
1723 </tr>
1724 <tr>
1725 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.zero-terminated"></a>zero_terminated</code></em> :1;</p></td>
1726 <td class="struct_member_description"><p>Indicates that the array must be terminated by a suitable
1727 <span class="type">NULL</span> value.</p></td>
1728 <td class="struct_member_annotations"> </td>
1729 </tr>
1730 <tr>
1731 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.has-length"></a>has_length</code></em> :1;</p></td>
1732 <td class="struct_member_description"><p>Indicates that length points to a parameter specifying the
1733 length of the array. If both has_length and zero_terminated are set, the
1734 convention is to pass -1 for the length if the array is zero-terminated.</p></td>
1735 <td class="struct_member_annotations"> </td>
1736 </tr>
1737 <tr>
1738 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.has-size"></a>has_size</code></em> :1;</p></td>
1739 <td class="struct_member_description"><p>Indicates that size is the fixed size of the array.</p></td>
1740 <td class="struct_member_annotations"> </td>
1741 </tr>
1742 <tr>
1743 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.array-type"></a>array_type</code></em> :2;</p></td>
1744 <td class="struct_member_description"><p>Indicates whether this is a C array, GArray, GPtrArray, or
1745 GByteArray. If something other than a C array, the length and element
1746 size are implicit in the structure.</p></td>
1747 <td class="struct_member_annotations"> </td>
1748 </tr>
1749 <tr>
1750 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ArrayTypeBlob.reserved2"></a>reserved2</code></em> :3;</p></td>
1751 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1752 <td class="struct_member_annotations"> </td>
1753 </tr>
1754 <tr>
1755 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#ArrayTypeDimension" title="ArrayTypeDimension"><span class="type">ArrayTypeDimension</span></a> <em class="structfield"><code><a name="ArrayTypeBlob.dimensions"></a>dimensions</code></em>;</p></td>
1756 <td class="struct_member_description"><p>TODO</p></td>
1757 <td class="struct_member_annotations"> </td>
1758 </tr>
1759 <tr>
1760 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="ArrayTypeBlob.type"></a>type</code></em>;</p></td>
1761 <td class="struct_member_description"><p>TODO</p></td>
1762 <td class="struct_member_annotations"> </td>
1763 </tr>
1764 </tbody>
1765 </table></div>
1766 </div>
1767 </div>
1768 <hr>
1769 <div class="refsect2">
1770 <a name="ParamTypeBlob"></a><h3>ParamTypeBlob</h3>
1771 <pre class="programlisting">typedef struct {
1772   guint8         pointer  :1;
1773   guint8         reserved :2;
1774   guint8         tag      :5;
1775
1776   guint8         reserved2;
1777   guint16        n_types;
1778
1779   SimpleTypeBlob type[];
1780 } ParamTypeBlob;
1781 </pre>
1782 <p>TODO</p>
1783 <div class="refsect3">
1784 <a name="ParamTypeBlob.members"></a><h4>Members</h4>
1785 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1786 <colgroup>
1787 <col width="300px" class="struct_members_name">
1788 <col class="struct_members_description">
1789 <col width="200px" class="struct_members_annotations">
1790 </colgroup>
1791 <tbody>
1792 <tr>
1793 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ParamTypeBlob.pointer"></a>pointer</code></em> :1;</p></td>
1794 <td class="struct_member_description"><p>TODO</p></td>
1795 <td class="struct_member_annotations"> </td>
1796 </tr>
1797 <tr>
1798 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ParamTypeBlob.reserved"></a>reserved</code></em> :2;</p></td>
1799 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1800 <td class="struct_member_annotations"> </td>
1801 </tr>
1802 <tr>
1803 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ParamTypeBlob.tag"></a>tag</code></em> :5;</p></td>
1804 <td class="struct_member_description"><p>TODO</p></td>
1805 <td class="struct_member_annotations"> </td>
1806 </tr>
1807 <tr>
1808 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ParamTypeBlob.reserved2"></a>reserved2</code></em>;</p></td>
1809 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1810 <td class="struct_member_annotations"> </td>
1811 </tr>
1812 <tr>
1813 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ParamTypeBlob.n-types"></a>n_types</code></em>;</p></td>
1814 <td class="struct_member_description"><p>The number of parameter types to follow.</p></td>
1815 <td class="struct_member_annotations"> </td>
1816 </tr>
1817 <tr>
1818 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="ParamTypeBlob.type"></a>type</code></em>[];</p></td>
1819 <td class="struct_member_description"><p>Describes the type of the list elements.</p></td>
1820 <td class="struct_member_annotations"> </td>
1821 </tr>
1822 </tbody>
1823 </table></div>
1824 </div>
1825 </div>
1826 <hr>
1827 <div class="refsect2">
1828 <a name="ErrorTypeBlob"></a><h3>ErrorTypeBlob</h3>
1829 <pre class="programlisting">typedef struct {
1830   guint8  pointer  :1;
1831   guint8  reserved :2;
1832   guint8  tag      :5;
1833
1834   guint8  reserved2;
1835
1836   guint16 n_domains; /* Must be 0 */
1837   guint16 domains[];
1838 } ErrorTypeBlob;
1839 </pre>
1840 <p>TODO</p>
1841 <div class="refsect3">
1842 <a name="ErrorTypeBlob.members"></a><h4>Members</h4>
1843 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1844 <colgroup>
1845 <col width="300px" class="struct_members_name">
1846 <col class="struct_members_description">
1847 <col width="200px" class="struct_members_annotations">
1848 </colgroup>
1849 <tbody>
1850 <tr>
1851 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ErrorTypeBlob.pointer"></a>pointer</code></em> :1;</p></td>
1852 <td class="struct_member_description"><p>TODO</p></td>
1853 <td class="struct_member_annotations"> </td>
1854 </tr>
1855 <tr>
1856 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ErrorTypeBlob.reserved"></a>reserved</code></em> :2;</p></td>
1857 <td class="struct_member_description"><p>TODO</p></td>
1858 <td class="struct_member_annotations"> </td>
1859 </tr>
1860 <tr>
1861 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ErrorTypeBlob.tag"></a>tag</code></em> :5;</p></td>
1862 <td class="struct_member_description"><p>TODO</p></td>
1863 <td class="struct_member_annotations"> </td>
1864 </tr>
1865 <tr>
1866 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="ErrorTypeBlob.reserved2"></a>reserved2</code></em>;</p></td>
1867 <td class="struct_member_description"><p>TODO</p></td>
1868 <td class="struct_member_annotations"> </td>
1869 </tr>
1870 <tr>
1871 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ErrorTypeBlob.n-domains"></a>n_domains</code></em>;</p></td>
1872 <td class="struct_member_description"><p>TODO: must be 0</p></td>
1873 <td class="struct_member_annotations"> </td>
1874 </tr>
1875 <tr>
1876 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ErrorTypeBlob.domains"></a>domains</code></em>[];</p></td>
1877 <td class="struct_member_description"><p>TODO</p></td>
1878 <td class="struct_member_annotations"> </td>
1879 </tr>
1880 </tbody>
1881 </table></div>
1882 </div>
1883 </div>
1884 <hr>
1885 <div class="refsect2">
1886 <a name="ValueBlob"></a><h3>ValueBlob</h3>
1887 <pre class="programlisting">typedef struct {
1888   guint32 deprecated : 1;
1889   guint32 unsigned_value : 1;
1890   guint32 reserved   :30;
1891   guint32 name;
1892   gint32 value;
1893 } ValueBlob;
1894 </pre>
1895 <p>Values commonly occur in enums and flags.</p>
1896 <div class="refsect3">
1897 <a name="ValueBlob.members"></a><h4>Members</h4>
1898 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1899 <colgroup>
1900 <col width="300px" class="struct_members_name">
1901 <col class="struct_members_description">
1902 <col width="200px" class="struct_members_annotations">
1903 </colgroup>
1904 <tbody>
1905 <tr>
1906 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ValueBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
1907 <td class="struct_member_description"><p>Whether this value is deprecated</p></td>
1908 <td class="struct_member_annotations"> </td>
1909 </tr>
1910 <tr>
1911 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ValueBlob.unsigned-value"></a>unsigned_value</code></em> : 1;</p></td>
1912 <td class="struct_member_description"><p>if set, value is a 32-bit unsigned integer cast to gint32</p></td>
1913 <td class="struct_member_annotations"> </td>
1914 </tr>
1915 <tr>
1916 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ValueBlob.reserved"></a>reserved</code></em> :30;</p></td>
1917 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1918 <td class="struct_member_annotations"> </td>
1919 </tr>
1920 <tr>
1921 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ValueBlob.name"></a>name</code></em>;</p></td>
1922 <td class="struct_member_description"><p>Name of blob</p></td>
1923 <td class="struct_member_annotations"> </td>
1924 </tr>
1925 <tr>
1926 <td class="struct_member_name"><p><span class="type">gint32</span> <em class="structfield"><code><a name="ValueBlob.value"></a>value</code></em>;</p></td>
1927 <td class="struct_member_description"><p>The numerical value</p></td>
1928 <td class="struct_member_annotations"> </td>
1929 </tr>
1930 </tbody>
1931 </table></div>
1932 </div>
1933 </div>
1934 <hr>
1935 <div class="refsect2">
1936 <a name="FieldBlob"></a><h3>FieldBlob</h3>
1937 <pre class="programlisting">typedef struct {
1938   guint32        name;
1939
1940   guint8         readable :1;
1941   guint8         writable :1;
1942   guint8         has_embedded_type :1;
1943   guint8         reserved :5;
1944   guint8         bits;
1945
1946   guint16        struct_offset;
1947
1948   guint32        reserved2;
1949
1950   SimpleTypeBlob type;
1951 } FieldBlob;
1952 </pre>
1953 <p>TODO</p>
1954 <div class="refsect3">
1955 <a name="FieldBlob.members"></a><h4>Members</h4>
1956 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1957 <colgroup>
1958 <col width="300px" class="struct_members_name">
1959 <col class="struct_members_description">
1960 <col width="200px" class="struct_members_annotations">
1961 </colgroup>
1962 <tbody>
1963 <tr>
1964 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="FieldBlob.name"></a>name</code></em>;</p></td>
1965 <td class="struct_member_description"><p>The name of the field.</p></td>
1966 <td class="struct_member_annotations"> </td>
1967 </tr>
1968 <tr>
1969 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="FieldBlob.readable"></a>readable</code></em> :1;</p></td>
1970 <td class="struct_member_description"><p>TODO</p></td>
1971 <td class="struct_member_annotations"> </td>
1972 </tr>
1973 <tr>
1974 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="FieldBlob.writable"></a>writable</code></em> :1;</p></td>
1975 <td class="struct_member_description"><p>How the field may be accessed.</p></td>
1976 <td class="struct_member_annotations"> </td>
1977 </tr>
1978 <tr>
1979 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="FieldBlob.has-embedded-type"></a>has_embedded_type</code></em> :1;</p></td>
1980 <td class="struct_member_description"><p>An anonymous type follows the FieldBlob.</p></td>
1981 <td class="struct_member_annotations"> </td>
1982 </tr>
1983 <tr>
1984 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="FieldBlob.reserved"></a>reserved</code></em> :5;</p></td>
1985 <td class="struct_member_description"><p>Reserved for future use.</p></td>
1986 <td class="struct_member_annotations"> </td>
1987 </tr>
1988 <tr>
1989 <td class="struct_member_name"><p><span class="type">guint8</span> <em class="structfield"><code><a name="FieldBlob.bits"></a>bits</code></em>;</p></td>
1990 <td class="struct_member_description"><p>If this field is part of a bitfield, the number of bits which it
1991 uses, otherwise 0.</p></td>
1992 <td class="struct_member_annotations"> </td>
1993 </tr>
1994 <tr>
1995 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="FieldBlob.struct-offset"></a>struct_offset</code></em>;</p></td>
1996 <td class="struct_member_description"><p>The offset of the field in the struct. The value 0xFFFF
1997 indicates that the struct offset is unknown.</p></td>
1998 <td class="struct_member_annotations"> </td>
1999 </tr>
2000 <tr>
2001 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="FieldBlob.reserved2"></a>reserved2</code></em>;</p></td>
2002 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2003 <td class="struct_member_annotations"> </td>
2004 </tr>
2005 <tr>
2006 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="FieldBlob.type"></a>type</code></em>;</p></td>
2007 <td class="struct_member_description"><p>The type of the field.</p></td>
2008 <td class="struct_member_annotations"> </td>
2009 </tr>
2010 </tbody>
2011 </table></div>
2012 </div>
2013 </div>
2014 <hr>
2015 <div class="refsect2">
2016 <a name="RegisteredTypeBlob"></a><h3>RegisteredTypeBlob</h3>
2017 <pre class="programlisting">typedef struct {
2018   guint16 blob_type;
2019   guint16 deprecated   : 1;
2020   guint16 unregistered : 1;
2021   guint16 reserved :14;
2022   guint32 name;
2023
2024   guint32 gtype_name;
2025   guint32 gtype_init;
2026 } RegisteredTypeBlob;
2027 </pre>
2028 <p>TODO</p>
2029 <div class="refsect3">
2030 <a name="RegisteredTypeBlob.members"></a><h4>Members</h4>
2031 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2032 <colgroup>
2033 <col width="300px" class="struct_members_name">
2034 <col class="struct_members_description">
2035 <col width="200px" class="struct_members_annotations">
2036 </colgroup>
2037 <tbody>
2038 <tr>
2039 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="RegisteredTypeBlob.blob-type"></a>blob_type</code></em>;</p></td>
2040 <td class="struct_member_description"><p>TODO</p></td>
2041 <td class="struct_member_annotations"> </td>
2042 </tr>
2043 <tr>
2044 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="RegisteredTypeBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2045 <td class="struct_member_description"><p>TODO</p></td>
2046 <td class="struct_member_annotations"> </td>
2047 </tr>
2048 <tr>
2049 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="RegisteredTypeBlob.unregistered"></a>unregistered</code></em> : 1;</p></td>
2050 <td class="struct_member_description"><p>TODO</p></td>
2051 <td class="struct_member_annotations"> </td>
2052 </tr>
2053 <tr>
2054 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="RegisteredTypeBlob.reserved"></a>reserved</code></em> :14;</p></td>
2055 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2056 <td class="struct_member_annotations"> </td>
2057 </tr>
2058 <tr>
2059 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="RegisteredTypeBlob.name"></a>name</code></em>;</p></td>
2060 <td class="struct_member_description"><p>TODO</p></td>
2061 <td class="struct_member_annotations"> </td>
2062 </tr>
2063 <tr>
2064 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="RegisteredTypeBlob.gtype-name"></a>gtype_name</code></em>;</p></td>
2065 <td class="struct_member_description"><p>The name under which the type is registered with GType.</p></td>
2066 <td class="struct_member_annotations"> </td>
2067 </tr>
2068 <tr>
2069 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="RegisteredTypeBlob.gtype-init"></a>gtype_init</code></em>;</p></td>
2070 <td class="struct_member_description"><p>The symbol name of the get_type() function which registers the
2071 type.</p></td>
2072 <td class="struct_member_annotations"> </td>
2073 </tr>
2074 </tbody>
2075 </table></div>
2076 </div>
2077 </div>
2078 <hr>
2079 <div class="refsect2">
2080 <a name="StructBlob"></a><h3>StructBlob</h3>
2081 <pre class="programlisting">typedef struct {
2082   guint16   blob_type;
2083
2084   guint16   deprecated   : 1;
2085   guint16   unregistered : 1;
2086   guint16   is_gtype_struct : 1;
2087   guint16   alignment    : 6;
2088   guint16   foreign      : 1;
2089   guint16   reserved     : 6;
2090
2091   guint32   name;
2092
2093   guint32   gtype_name;
2094   guint32   gtype_init;
2095
2096   guint32   size;
2097
2098   guint16   n_fields;
2099   guint16   n_methods;
2100
2101   guint32   reserved2;
2102   guint32   reserved3;
2103 } StructBlob;
2104 </pre>
2105 <p>TODO</p>
2106 <div class="refsect3">
2107 <a name="StructBlob.members"></a><h4>Members</h4>
2108 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2109 <colgroup>
2110 <col width="300px" class="struct_members_name">
2111 <col class="struct_members_description">
2112 <col width="200px" class="struct_members_annotations">
2113 </colgroup>
2114 <tbody>
2115 <tr>
2116 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.blob-type"></a>blob_type</code></em>;</p></td>
2117 <td class="struct_member_description"><p><a class="link" href="gi-GITypelib.html#BLOB-TYPE-STRUCT:CAPS"><span class="type">BLOB_TYPE_STRUCT</span></a></p></td>
2118 <td class="struct_member_annotations"> </td>
2119 </tr>
2120 <tr>
2121 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2122 <td class="struct_member_description"><p>Whether this structure is deprecated</p></td>
2123 <td class="struct_member_annotations"> </td>
2124 </tr>
2125 <tr>
2126 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.unregistered"></a>unregistered</code></em> : 1;</p></td>
2127 <td class="struct_member_description"><p>If this is set, the type is not registered with GType.</p></td>
2128 <td class="struct_member_annotations"> </td>
2129 </tr>
2130 <tr>
2131 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.is-gtype-struct"></a>is_gtype_struct</code></em> : 1;</p></td>
2132 <td class="struct_member_description"><p>Whether this structure is the class or interface layout
2133 for a GObject</p></td>
2134 <td class="struct_member_annotations"> </td>
2135 </tr>
2136 <tr>
2137 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.alignment"></a>alignment</code></em> : 6;</p></td>
2138 <td class="struct_member_description"><p>The byte boundary that the struct is aligned to in memory</p></td>
2139 <td class="struct_member_annotations"> </td>
2140 </tr>
2141 <tr>
2142 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.foreign"></a>foreign</code></em> : 1;</p></td>
2143 <td class="struct_member_description"><p>If the type is foreign, eg if it's expected to be overridden by
2144 a native language binding instead of relying of introspected bindings.</p></td>
2145 <td class="struct_member_annotations"> </td>
2146 </tr>
2147 <tr>
2148 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.reserved"></a>reserved</code></em> : 6;</p></td>
2149 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2150 <td class="struct_member_annotations"> </td>
2151 </tr>
2152 <tr>
2153 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="StructBlob.name"></a>name</code></em>;</p></td>
2154 <td class="struct_member_description"><p>TODO</p></td>
2155 <td class="struct_member_annotations"> </td>
2156 </tr>
2157 <tr>
2158 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="StructBlob.gtype-name"></a>gtype_name</code></em>;</p></td>
2159 <td class="struct_member_description"><p>String name of the associated <span class="type">GType</span></p></td>
2160 <td class="struct_member_annotations"> </td>
2161 </tr>
2162 <tr>
2163 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="StructBlob.gtype-init"></a>gtype_init</code></em>;</p></td>
2164 <td class="struct_member_description"><p>String naming the symbol which gets the runtime <span class="type">GType</span></p></td>
2165 <td class="struct_member_annotations"> </td>
2166 </tr>
2167 <tr>
2168 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="StructBlob.size"></a>size</code></em>;</p></td>
2169 <td class="struct_member_description"><p>The size of the struct in bytes.</p></td>
2170 <td class="struct_member_annotations"> </td>
2171 </tr>
2172 <tr>
2173 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.n-fields"></a>n_fields</code></em>;</p></td>
2174 <td class="struct_member_description"><p>TODO</p></td>
2175 <td class="struct_member_annotations"> </td>
2176 </tr>
2177 <tr>
2178 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="StructBlob.n-methods"></a>n_methods</code></em>;</p></td>
2179 <td class="struct_member_description"><p>TODO</p></td>
2180 <td class="struct_member_annotations"> </td>
2181 </tr>
2182 <tr>
2183 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="StructBlob.reserved2"></a>reserved2</code></em>;</p></td>
2184 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2185 <td class="struct_member_annotations"> </td>
2186 </tr>
2187 <tr>
2188 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="StructBlob.reserved3"></a>reserved3</code></em>;</p></td>
2189 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2190 <td class="struct_member_annotations"> </td>
2191 </tr>
2192 </tbody>
2193 </table></div>
2194 </div>
2195 </div>
2196 <hr>
2197 <div class="refsect2">
2198 <a name="UnionBlob"></a><h3>UnionBlob</h3>
2199 <pre class="programlisting">typedef struct {
2200   guint16      blob_type;
2201   guint16      deprecated    : 1;
2202   guint16      unregistered  : 1;
2203   guint16      discriminated : 1;
2204   guint16      alignment     : 6;
2205   guint16      reserved      : 7;
2206   guint32      name;
2207
2208   guint32      gtype_name;
2209   guint32      gtype_init;
2210
2211   guint32      size;
2212
2213   guint16      n_fields;
2214   guint16      n_functions;
2215
2216   guint32      reserved2;
2217   guint32      reserved3;
2218
2219   gint32       discriminator_offset;
2220   SimpleTypeBlob discriminator_type;
2221 } UnionBlob;
2222 </pre>
2223 <p>TODO</p>
2224 <div class="refsect3">
2225 <a name="UnionBlob.members"></a><h4>Members</h4>
2226 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2227 <colgroup>
2228 <col width="300px" class="struct_members_name">
2229 <col class="struct_members_description">
2230 <col width="200px" class="struct_members_annotations">
2231 </colgroup>
2232 <tbody>
2233 <tr>
2234 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.blob-type"></a>blob_type</code></em>;</p></td>
2235 <td class="struct_member_description"><p>TODO</p></td>
2236 <td class="struct_member_annotations"> </td>
2237 </tr>
2238 <tr>
2239 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2240 <td class="struct_member_description"><p>TODO</p></td>
2241 <td class="struct_member_annotations"> </td>
2242 </tr>
2243 <tr>
2244 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.unregistered"></a>unregistered</code></em> : 1;</p></td>
2245 <td class="struct_member_description"><p>If this is set, the type is not registered with GType.</p></td>
2246 <td class="struct_member_annotations"> </td>
2247 </tr>
2248 <tr>
2249 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.discriminated"></a>discriminated</code></em> : 1;</p></td>
2250 <td class="struct_member_description"><p>Is set if the union is discriminated</p></td>
2251 <td class="struct_member_annotations"> </td>
2252 </tr>
2253 <tr>
2254 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.alignment"></a>alignment</code></em> : 6;</p></td>
2255 <td class="struct_member_description"><p>The byte boundary that the union is aligned to in memory</p></td>
2256 <td class="struct_member_annotations"> </td>
2257 </tr>
2258 <tr>
2259 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.reserved"></a>reserved</code></em> : 7;</p></td>
2260 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2261 <td class="struct_member_annotations"> </td>
2262 </tr>
2263 <tr>
2264 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="UnionBlob.name"></a>name</code></em>;</p></td>
2265 <td class="struct_member_description"><p>TODO</p></td>
2266 <td class="struct_member_annotations"> </td>
2267 </tr>
2268 <tr>
2269 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="UnionBlob.gtype-name"></a>gtype_name</code></em>;</p></td>
2270 <td class="struct_member_description"><p>String name of the associated <span class="type">GType</span></p></td>
2271 <td class="struct_member_annotations"> </td>
2272 </tr>
2273 <tr>
2274 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="UnionBlob.gtype-init"></a>gtype_init</code></em>;</p></td>
2275 <td class="struct_member_description"><p>String naming the symbol which gets the runtime <span class="type">GType</span></p></td>
2276 <td class="struct_member_annotations"> </td>
2277 </tr>
2278 <tr>
2279 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="UnionBlob.size"></a>size</code></em>;</p></td>
2280 <td class="struct_member_description"><p>TODO</p></td>
2281 <td class="struct_member_annotations"> </td>
2282 </tr>
2283 <tr>
2284 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.n-fields"></a>n_fields</code></em>;</p></td>
2285 <td class="struct_member_description"><p>Length of the arrays</p></td>
2286 <td class="struct_member_annotations"> </td>
2287 </tr>
2288 <tr>
2289 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="UnionBlob.n-functions"></a>n_functions</code></em>;</p></td>
2290 <td class="struct_member_description"><p>TODO</p></td>
2291 <td class="struct_member_annotations"> </td>
2292 </tr>
2293 <tr>
2294 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="UnionBlob.reserved2"></a>reserved2</code></em>;</p></td>
2295 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2296 <td class="struct_member_annotations"> </td>
2297 </tr>
2298 <tr>
2299 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="UnionBlob.reserved3"></a>reserved3</code></em>;</p></td>
2300 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2301 <td class="struct_member_annotations"> </td>
2302 </tr>
2303 <tr>
2304 <td class="struct_member_name"><p><span class="type">gint32</span> <em class="structfield"><code><a name="UnionBlob.discriminator-offset"></a>discriminator_offset</code></em>;</p></td>
2305 <td class="struct_member_description"><p>Offset from the beginning of the union where the
2306 discriminator of a discriminated union is located. The value 0xFFFF
2307 indicates that the discriminator offset is unknown.</p></td>
2308 <td class="struct_member_annotations"> </td>
2309 </tr>
2310 <tr>
2311 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="UnionBlob.discriminator-type"></a>discriminator_type</code></em>;</p></td>
2312 <td class="struct_member_description"><p>Type of the discriminator</p></td>
2313 <td class="struct_member_annotations"> </td>
2314 </tr>
2315 </tbody>
2316 </table></div>
2317 </div>
2318 </div>
2319 <hr>
2320 <div class="refsect2">
2321 <a name="EnumBlob"></a><h3>EnumBlob</h3>
2322 <pre class="programlisting">typedef struct {
2323   guint16   blob_type;
2324
2325   guint16   deprecated   : 1;
2326   guint16   unregistered : 1;
2327   guint16   storage_type : 5;
2328   guint16   reserved     : 9;
2329
2330   guint32   name;
2331
2332   guint32   gtype_name;
2333   guint32   gtype_init;
2334
2335   guint16   n_values;
2336   guint16   n_methods;
2337
2338   guint32   error_domain;
2339
2340   ValueBlob values[];
2341 } EnumBlob;
2342 </pre>
2343 <p>TODO</p>
2344 <div class="refsect3">
2345 <a name="EnumBlob.members"></a><h4>Members</h4>
2346 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2347 <colgroup>
2348 <col width="300px" class="struct_members_name">
2349 <col class="struct_members_description">
2350 <col width="200px" class="struct_members_annotations">
2351 </colgroup>
2352 <tbody>
2353 <tr>
2354 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.blob-type"></a>blob_type</code></em>;</p></td>
2355 <td class="struct_member_description"><p>TODO</p></td>
2356 <td class="struct_member_annotations"> </td>
2357 </tr>
2358 <tr>
2359 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2360 <td class="struct_member_description"><p>TODO</p></td>
2361 <td class="struct_member_annotations"> </td>
2362 </tr>
2363 <tr>
2364 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.unregistered"></a>unregistered</code></em> : 1;</p></td>
2365 <td class="struct_member_description"><p>If this is set, the type is not registered with GType.</p></td>
2366 <td class="struct_member_annotations"> </td>
2367 </tr>
2368 <tr>
2369 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.storage-type"></a>storage_type</code></em> : 5;</p></td>
2370 <td class="struct_member_description"><p>The tag of the type used for the enum in the C ABI
2371 (will be a signed or unsigned integral type)</p></td>
2372 <td class="struct_member_annotations"> </td>
2373 </tr>
2374 <tr>
2375 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.reserved"></a>reserved</code></em> : 9;</p></td>
2376 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2377 <td class="struct_member_annotations"> </td>
2378 </tr>
2379 <tr>
2380 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="EnumBlob.name"></a>name</code></em>;</p></td>
2381 <td class="struct_member_description"><p>TODO</p></td>
2382 <td class="struct_member_annotations"> </td>
2383 </tr>
2384 <tr>
2385 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="EnumBlob.gtype-name"></a>gtype_name</code></em>;</p></td>
2386 <td class="struct_member_description"><p>String name of the associated <span class="type">GType</span></p></td>
2387 <td class="struct_member_annotations"> </td>
2388 </tr>
2389 <tr>
2390 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="EnumBlob.gtype-init"></a>gtype_init</code></em>;</p></td>
2391 <td class="struct_member_description"><p>String naming the symbol which gets the runtime <span class="type">GType</span></p></td>
2392 <td class="struct_member_annotations"> </td>
2393 </tr>
2394 <tr>
2395 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.n-values"></a>n_values</code></em>;</p></td>
2396 <td class="struct_member_description"><p>The length of the values array.</p></td>
2397 <td class="struct_member_annotations"> </td>
2398 </tr>
2399 <tr>
2400 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="EnumBlob.n-methods"></a>n_methods</code></em>;</p></td>
2401 <td class="struct_member_description"><p>The length of the methods array.</p></td>
2402 <td class="struct_member_annotations"> </td>
2403 </tr>
2404 <tr>
2405 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="EnumBlob.error-domain"></a>error_domain</code></em>;</p></td>
2406 <td class="struct_member_description"><p>String naming the <span class="type">GError</span> domain this enum is associated with</p></td>
2407 <td class="struct_member_annotations"> </td>
2408 </tr>
2409 <tr>
2410 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#ValueBlob" title="ValueBlob"><span class="type">ValueBlob</span></a> <em class="structfield"><code><a name="EnumBlob.values"></a>values</code></em>[];</p></td>
2411 <td class="struct_member_description"><p>TODO</p></td>
2412 <td class="struct_member_annotations"> </td>
2413 </tr>
2414 </tbody>
2415 </table></div>
2416 </div>
2417 </div>
2418 <hr>
2419 <div class="refsect2">
2420 <a name="PropertyBlob"></a><h3>PropertyBlob</h3>
2421 <pre class="programlisting">typedef struct {
2422   guint32        name;
2423
2424   guint32        deprecated                   : 1;
2425   guint32        readable                     : 1;
2426   guint32        writable                     : 1;
2427   guint32        construct                    : 1;
2428   guint32        construct_only               : 1;
2429   guint32        transfer_ownership           : 1;
2430   guint32        transfer_container_ownership : 1;
2431   guint32        reserved                     :25;
2432
2433   guint32        reserved2;
2434
2435   SimpleTypeBlob type;
2436 } PropertyBlob;
2437 </pre>
2438 <p>TODO</p>
2439 <div class="refsect3">
2440 <a name="PropertyBlob.members"></a><h4>Members</h4>
2441 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2442 <colgroup>
2443 <col width="300px" class="struct_members_name">
2444 <col class="struct_members_description">
2445 <col width="200px" class="struct_members_annotations">
2446 </colgroup>
2447 <tbody>
2448 <tr>
2449 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.name"></a>name</code></em>;</p></td>
2450 <td class="struct_member_description"><p>The name of the property.</p></td>
2451 <td class="struct_member_annotations"> </td>
2452 </tr>
2453 <tr>
2454 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2455 <td class="struct_member_description"><p>TODO</p></td>
2456 <td class="struct_member_annotations"> </td>
2457 </tr>
2458 <tr>
2459 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.readable"></a>readable</code></em> : 1;</p></td>
2460 <td class="struct_member_description"><p>TODO</p></td>
2461 <td class="struct_member_annotations"> </td>
2462 </tr>
2463 <tr>
2464 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.writable"></a>writable</code></em> : 1;</p></td>
2465 <td class="struct_member_description"><p>TODO</p></td>
2466 <td class="struct_member_annotations"> </td>
2467 </tr>
2468 <tr>
2469 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.construct"></a>construct</code></em> : 1;</p></td>
2470 <td class="struct_member_description"><p>TODO</p></td>
2471 <td class="struct_member_annotations"> </td>
2472 </tr>
2473 <tr>
2474 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.construct-only"></a>construct_only</code></em> : 1;</p></td>
2475 <td class="struct_member_description"><p>The ParamFlags used when registering the property.</p></td>
2476 <td class="struct_member_annotations"> </td>
2477 </tr>
2478 <tr>
2479 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.transfer-ownership"></a>transfer_ownership</code></em> : 1;</p></td>
2480 <td class="struct_member_description"><p>When writing, the type containing the property takes
2481 ownership of the value. When reading, the returned value needs to be
2482 released by the caller.</p></td>
2483 <td class="struct_member_annotations"> </td>
2484 </tr>
2485 <tr>
2486 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.transfer-container-ownership"></a>transfer_container_ownership</code></em> : 1;</p></td>
2487 <td class="struct_member_description"><p>For container types indicates that the
2488 ownership of the container, but not of its contents, is transferred.
2489 This is typically the case when reading lists of statically allocated
2490 things.</p></td>
2491 <td class="struct_member_annotations"> </td>
2492 </tr>
2493 <tr>
2494 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.reserved"></a>reserved</code></em> :25;</p></td>
2495 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2496 <td class="struct_member_annotations"> </td>
2497 </tr>
2498 <tr>
2499 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PropertyBlob.reserved2"></a>reserved2</code></em>;</p></td>
2500 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2501 <td class="struct_member_annotations"> </td>
2502 </tr>
2503 <tr>
2504 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="PropertyBlob.type"></a>type</code></em>;</p></td>
2505 <td class="struct_member_description"><p>Describes the type of the property.</p></td>
2506 <td class="struct_member_annotations"> </td>
2507 </tr>
2508 </tbody>
2509 </table></div>
2510 </div>
2511 </div>
2512 <hr>
2513 <div class="refsect2">
2514 <a name="SignalBlob"></a><h3>SignalBlob</h3>
2515 <pre class="programlisting">typedef struct {
2516   guint16 deprecated        : 1;
2517   guint16 run_first         : 1;
2518   guint16 run_last          : 1;
2519   guint16 run_cleanup       : 1;
2520   guint16 no_recurse        : 1;
2521   guint16 detailed          : 1;
2522   guint16 action            : 1;
2523   guint16 no_hooks          : 1;
2524   guint16 has_class_closure : 1;
2525   guint16 true_stops_emit   : 1;
2526   guint16 reserved          : 6;
2527
2528   guint16 class_closure;
2529
2530   guint32 name;
2531
2532   guint32 reserved2;
2533
2534   guint32 signature;
2535 } SignalBlob;
2536 </pre>
2537 <p>TODO</p>
2538 <div class="refsect3">
2539 <a name="SignalBlob.members"></a><h4>Members</h4>
2540 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2541 <colgroup>
2542 <col width="300px" class="struct_members_name">
2543 <col class="struct_members_description">
2544 <col width="200px" class="struct_members_annotations">
2545 </colgroup>
2546 <tbody>
2547 <tr>
2548 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2549 <td class="struct_member_description"><p>TODO</p></td>
2550 <td class="struct_member_annotations"> </td>
2551 </tr>
2552 <tr>
2553 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.run-first"></a>run_first</code></em> : 1;</p></td>
2554 <td class="struct_member_description"><p>TODO</p></td>
2555 <td class="struct_member_annotations"> </td>
2556 </tr>
2557 <tr>
2558 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.run-last"></a>run_last</code></em> : 1;</p></td>
2559 <td class="struct_member_description"><p>TODO</p></td>
2560 <td class="struct_member_annotations"> </td>
2561 </tr>
2562 <tr>
2563 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.run-cleanup"></a>run_cleanup</code></em> : 1;</p></td>
2564 <td class="struct_member_description"><p>TODO</p></td>
2565 <td class="struct_member_annotations"> </td>
2566 </tr>
2567 <tr>
2568 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.no-recurse"></a>no_recurse</code></em> : 1;</p></td>
2569 <td class="struct_member_description"><p>TODO</p></td>
2570 <td class="struct_member_annotations"> </td>
2571 </tr>
2572 <tr>
2573 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.detailed"></a>detailed</code></em> : 1;</p></td>
2574 <td class="struct_member_description"><p>TODO</p></td>
2575 <td class="struct_member_annotations"> </td>
2576 </tr>
2577 <tr>
2578 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.action"></a>action</code></em> : 1;</p></td>
2579 <td class="struct_member_description"><p>TODO</p></td>
2580 <td class="struct_member_annotations"> </td>
2581 </tr>
2582 <tr>
2583 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.no-hooks"></a>no_hooks</code></em> : 1;</p></td>
2584 <td class="struct_member_description"><p>The flags used when registering the signal.</p></td>
2585 <td class="struct_member_annotations"> </td>
2586 </tr>
2587 <tr>
2588 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.has-class-closure"></a>has_class_closure</code></em> : 1;</p></td>
2589 <td class="struct_member_description"><p>Set if the signal has a class closure.</p></td>
2590 <td class="struct_member_annotations"> </td>
2591 </tr>
2592 <tr>
2593 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.true-stops-emit"></a>true_stops_emit</code></em> : 1;</p></td>
2594 <td class="struct_member_description"><p>Whether the signal has true-stops-emit semantics</p></td>
2595 <td class="struct_member_annotations"> </td>
2596 </tr>
2597 <tr>
2598 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.reserved"></a>reserved</code></em> : 6;</p></td>
2599 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2600 <td class="struct_member_annotations"> </td>
2601 </tr>
2602 <tr>
2603 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="SignalBlob.class-closure"></a>class_closure</code></em>;</p></td>
2604 <td class="struct_member_description"><p>The index of the class closure in the list of virtual
2605 functions of the object or interface on which the signal is defined.</p></td>
2606 <td class="struct_member_annotations"> </td>
2607 </tr>
2608 <tr>
2609 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="SignalBlob.name"></a>name</code></em>;</p></td>
2610 <td class="struct_member_description"><p>The name of the signal.</p></td>
2611 <td class="struct_member_annotations"> </td>
2612 </tr>
2613 <tr>
2614 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="SignalBlob.reserved2"></a>reserved2</code></em>;</p></td>
2615 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2616 <td class="struct_member_annotations"> </td>
2617 </tr>
2618 <tr>
2619 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="SignalBlob.signature"></a>signature</code></em>;</p></td>
2620 <td class="struct_member_description"><p>Offset of the SignatureBlob describing the parameter types
2621 and the return value type.</p></td>
2622 <td class="struct_member_annotations"> </td>
2623 </tr>
2624 </tbody>
2625 </table></div>
2626 </div>
2627 </div>
2628 <hr>
2629 <div class="refsect2">
2630 <a name="VFuncBlob"></a><h3>VFuncBlob</h3>
2631 <pre class="programlisting">typedef struct {
2632   guint32 name;
2633
2634   guint16 must_chain_up           : 1;
2635   guint16 must_be_implemented     : 1;
2636   guint16 must_not_be_implemented : 1;
2637   guint16 class_closure           : 1;
2638   guint16 throws                  : 1;
2639   guint16 reserved                :11;
2640   guint16 signal;
2641
2642   guint16 struct_offset;
2643   guint16 invoker : 10; /* Number of bits matches @index in FunctionBlob */
2644   guint16 reserved2 : 6;
2645
2646   guint32 reserved3;
2647   guint32 signature;
2648 } VFuncBlob;
2649 </pre>
2650 <p>TODO</p>
2651 <div class="refsect3">
2652 <a name="VFuncBlob.members"></a><h4>Members</h4>
2653 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2654 <colgroup>
2655 <col width="300px" class="struct_members_name">
2656 <col class="struct_members_description">
2657 <col width="200px" class="struct_members_annotations">
2658 </colgroup>
2659 <tbody>
2660 <tr>
2661 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="VFuncBlob.name"></a>name</code></em>;</p></td>
2662 <td class="struct_member_description"><p>The name of the virtual function.</p></td>
2663 <td class="struct_member_annotations"> </td>
2664 </tr>
2665 <tr>
2666 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.must-chain-up"></a>must_chain_up</code></em> : 1;</p></td>
2667 <td class="struct_member_description"><p>If set, every implementation of this virtual function must
2668 chain up to the implementation of the parent class.</p></td>
2669 <td class="struct_member_annotations"> </td>
2670 </tr>
2671 <tr>
2672 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.must-be-implemented"></a>must_be_implemented</code></em> : 1;</p></td>
2673 <td class="struct_member_description"><p>If set, every derived class must override this virtual
2674 function.</p></td>
2675 <td class="struct_member_annotations"> </td>
2676 </tr>
2677 <tr>
2678 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.must-not-be-implemented"></a>must_not_be_implemented</code></em> : 1;</p></td>
2679 <td class="struct_member_description"><p>If set, derived class must not override this
2680 virtual function.</p></td>
2681 <td class="struct_member_annotations"> </td>
2682 </tr>
2683 <tr>
2684 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.class-closure"></a>class_closure</code></em> : 1;</p></td>
2685 <td class="struct_member_description"><p>Set if this virtual function is the class closure of a
2686 signal.</p></td>
2687 <td class="struct_member_annotations"> </td>
2688 </tr>
2689 <tr>
2690 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.throws"></a>throws</code></em> : 1;</p></td>
2691 <td class="struct_member_description"><p> This is now additionally stored in the <a class="link" href="gi-GITypelib.html#SignatureBlob" title="SignatureBlob"><span class="type">SignatureBlob</span></a>. </p></td>
2692 <td class="struct_member_annotations"><span class="annotation">[deprecated]</span></td>
2693 </tr>
2694 <tr>
2695 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.reserved"></a>reserved</code></em> :11;</p></td>
2696 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2697 <td class="struct_member_annotations"> </td>
2698 </tr>
2699 <tr>
2700 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.signal"></a>signal</code></em>;</p></td>
2701 <td class="struct_member_description"><p>The index of the signal in the list of signals of the object or
2702 interface to which this virtual function belongs.</p></td>
2703 <td class="struct_member_annotations"> </td>
2704 </tr>
2705 <tr>
2706 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.struct-offset"></a>struct_offset</code></em>;</p></td>
2707 <td class="struct_member_description"><p>The offset of the function pointer in the class struct.
2708 The value 0xFFFF indicates that the struct offset is unknown.</p></td>
2709 <td class="struct_member_annotations"> </td>
2710 </tr>
2711 <tr>
2712 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.invoker"></a>invoker</code></em> : 10;</p></td>
2713 <td class="struct_member_description"><p>If a method invoker for this virtual exists, this is the offset
2714 in the class structure of the method. If no method is known, this value
2715 will be 0x3ff.</p></td>
2716 <td class="struct_member_annotations"> </td>
2717 </tr>
2718 <tr>
2719 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="VFuncBlob.reserved2"></a>reserved2</code></em> : 6;</p></td>
2720 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2721 <td class="struct_member_annotations"> </td>
2722 </tr>
2723 <tr>
2724 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="VFuncBlob.reserved3"></a>reserved3</code></em>;</p></td>
2725 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2726 <td class="struct_member_annotations"> </td>
2727 </tr>
2728 <tr>
2729 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="VFuncBlob.signature"></a>signature</code></em>;</p></td>
2730 <td class="struct_member_description"><p>Offset of the SignatureBlob describing the parameter types and
2731 the return value type.</p></td>
2732 <td class="struct_member_annotations"> </td>
2733 </tr>
2734 </tbody>
2735 </table></div>
2736 </div>
2737 </div>
2738 <hr>
2739 <div class="refsect2">
2740 <a name="ObjectBlob"></a><h3>ObjectBlob</h3>
2741 <pre class="programlisting">typedef struct {
2742   guint16   blob_type;  /* 7 */
2743   guint16   deprecated   : 1;
2744   guint16   abstract     : 1;
2745   guint16   fundamental  : 1;
2746   guint16   reserved     :13;
2747   guint32   name;
2748
2749   guint32   gtype_name;
2750   guint32   gtype_init;
2751
2752   guint16   parent;
2753   guint16   gtype_struct;
2754
2755   guint16   n_interfaces;
2756   guint16   n_fields;
2757   guint16   n_properties;
2758   guint16   n_methods;
2759   guint16   n_signals;
2760   guint16   n_vfuncs;
2761   guint16   n_constants;
2762   guint16   n_field_callbacks;
2763
2764   guint32   ref_func;
2765   guint32   unref_func;
2766   guint32   set_value_func;
2767   guint32   get_value_func;
2768
2769   guint32   reserved3;
2770   guint32   reserved4;
2771
2772   guint16   interfaces[];
2773 } ObjectBlob;
2774 </pre>
2775 <p>TODO</p>
2776 <div class="refsect3">
2777 <a name="ObjectBlob.members"></a><h4>Members</h4>
2778 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2779 <colgroup>
2780 <col width="300px" class="struct_members_name">
2781 <col class="struct_members_description">
2782 <col width="200px" class="struct_members_annotations">
2783 </colgroup>
2784 <tbody>
2785 <tr>
2786 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.blob-type"></a>blob_type</code></em>;</p></td>
2787 <td class="struct_member_description"><p><a class="link" href="gi-GITypelib.html#BLOB-TYPE-OBJECT:CAPS"><span class="type">BLOB_TYPE_OBJECT</span></a></p></td>
2788 <td class="struct_member_annotations"> </td>
2789 </tr>
2790 <tr>
2791 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2792 <td class="struct_member_description"><p>TODO</p></td>
2793 <td class="struct_member_annotations"> </td>
2794 </tr>
2795 <tr>
2796 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.abstract"></a>abstract</code></em> : 1;</p></td>
2797 <td class="struct_member_description"><p>TODO</p></td>
2798 <td class="struct_member_annotations"> </td>
2799 </tr>
2800 <tr>
2801 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.fundamental"></a>fundamental</code></em> : 1;</p></td>
2802 <td class="struct_member_description"><p>this object is not a GObject derived type, instead it's
2803 an additional fundamental type.</p></td>
2804 <td class="struct_member_annotations"> </td>
2805 </tr>
2806 <tr>
2807 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.reserved"></a>reserved</code></em> :13;</p></td>
2808 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2809 <td class="struct_member_annotations"> </td>
2810 </tr>
2811 <tr>
2812 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.name"></a>name</code></em>;</p></td>
2813 <td class="struct_member_description"><p>TODO</p></td>
2814 <td class="struct_member_annotations"> </td>
2815 </tr>
2816 <tr>
2817 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.gtype-name"></a>gtype_name</code></em>;</p></td>
2818 <td class="struct_member_description"><p>String name of the associated <span class="type">GType</span></p></td>
2819 <td class="struct_member_annotations"> </td>
2820 </tr>
2821 <tr>
2822 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.gtype-init"></a>gtype_init</code></em>;</p></td>
2823 <td class="struct_member_description"><p>String naming the symbol which gets the runtime <span class="type">GType</span></p></td>
2824 <td class="struct_member_annotations"> </td>
2825 </tr>
2826 <tr>
2827 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.parent"></a>parent</code></em>;</p></td>
2828 <td class="struct_member_description"><p>The directory index of the parent type. This is only set for
2829 objects. If an object does not have a parent, it is zero.</p></td>
2830 <td class="struct_member_annotations"> </td>
2831 </tr>
2832 <tr>
2833 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.gtype-struct"></a>gtype_struct</code></em>;</p></td>
2834 <td class="struct_member_description"><p>TODO</p></td>
2835 <td class="struct_member_annotations"> </td>
2836 </tr>
2837 <tr>
2838 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-interfaces"></a>n_interfaces</code></em>;</p></td>
2839 <td class="struct_member_description"><p>TODO</p></td>
2840 <td class="struct_member_annotations"> </td>
2841 </tr>
2842 <tr>
2843 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-fields"></a>n_fields</code></em>;</p></td>
2844 <td class="struct_member_description"><p>TODO</p></td>
2845 <td class="struct_member_annotations"> </td>
2846 </tr>
2847 <tr>
2848 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-properties"></a>n_properties</code></em>;</p></td>
2849 <td class="struct_member_description"><p>TODO</p></td>
2850 <td class="struct_member_annotations"> </td>
2851 </tr>
2852 <tr>
2853 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-methods"></a>n_methods</code></em>;</p></td>
2854 <td class="struct_member_description"><p>TODO</p></td>
2855 <td class="struct_member_annotations"> </td>
2856 </tr>
2857 <tr>
2858 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-signals"></a>n_signals</code></em>;</p></td>
2859 <td class="struct_member_description"><p>TODO</p></td>
2860 <td class="struct_member_annotations"> </td>
2861 </tr>
2862 <tr>
2863 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-vfuncs"></a>n_vfuncs</code></em>;</p></td>
2864 <td class="struct_member_description"><p>TODO</p></td>
2865 <td class="struct_member_annotations"> </td>
2866 </tr>
2867 <tr>
2868 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-constants"></a>n_constants</code></em>;</p></td>
2869 <td class="struct_member_description"><p>The lengths of the arrays.Up to 16bits of padding may be
2870 inserted between the arrays to ensure that they start on a 32bit
2871 boundary.</p></td>
2872 <td class="struct_member_annotations"> </td>
2873 </tr>
2874 <tr>
2875 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.n-field-callbacks"></a>n_field_callbacks</code></em>;</p></td>
2876 <td class="struct_member_description"><p>The number of n_fields which are also callbacks.
2877 This is used to calculate the fields section size in constant time.</p></td>
2878 <td class="struct_member_annotations"> </td>
2879 </tr>
2880 <tr>
2881 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.ref-func"></a>ref_func</code></em>;</p></td>
2882 <td class="struct_member_description"><p>String pointing to a function which can be called to increase
2883 the reference count for an instance of this object type.</p></td>
2884 <td class="struct_member_annotations"> </td>
2885 </tr>
2886 <tr>
2887 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.unref-func"></a>unref_func</code></em>;</p></td>
2888 <td class="struct_member_description"><p>String pointing to a function which can be called to decrease
2889 the reference count for an instance of this object type.</p></td>
2890 <td class="struct_member_annotations"> </td>
2891 </tr>
2892 <tr>
2893 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.set-value-func"></a>set_value_func</code></em>;</p></td>
2894 <td class="struct_member_description"><p>String pointing to a function which can be called to
2895 convert a pointer of this object to a GValue</p></td>
2896 <td class="struct_member_annotations"> </td>
2897 </tr>
2898 <tr>
2899 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.get-value-func"></a>get_value_func</code></em>;</p></td>
2900 <td class="struct_member_description"><p>String pointing to a function which can be called to
2901 convert extract a pointer to this object from a GValue</p></td>
2902 <td class="struct_member_annotations"> </td>
2903 </tr>
2904 <tr>
2905 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.reserved3"></a>reserved3</code></em>;</p></td>
2906 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2907 <td class="struct_member_annotations"> </td>
2908 </tr>
2909 <tr>
2910 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ObjectBlob.reserved4"></a>reserved4</code></em>;</p></td>
2911 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2912 <td class="struct_member_annotations"> </td>
2913 </tr>
2914 <tr>
2915 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ObjectBlob.interfaces"></a>interfaces</code></em>[];</p></td>
2916 <td class="struct_member_description"><p>An array of indices of directory entries for the implemented
2917 interfaces.</p></td>
2918 <td class="struct_member_annotations"> </td>
2919 </tr>
2920 </tbody>
2921 </table></div>
2922 </div>
2923 </div>
2924 <hr>
2925 <div class="refsect2">
2926 <a name="InterfaceBlob"></a><h3>InterfaceBlob</h3>
2927 <pre class="programlisting">typedef struct {
2928   guint16 blob_type;
2929   guint16 deprecated   : 1;
2930   guint16 reserved     :15;
2931   guint32 name;
2932
2933   guint32 gtype_name;
2934   guint32 gtype_init;
2935   guint16 gtype_struct;
2936
2937   guint16 n_prerequisites;
2938   guint16 n_properties;
2939   guint16 n_methods;
2940   guint16 n_signals;
2941   guint16 n_vfuncs;
2942   guint16 n_constants;
2943
2944   guint16 padding;
2945
2946   guint32 reserved2;
2947   guint32 reserved3;
2948
2949   guint16 prerequisites[];
2950 } InterfaceBlob;
2951 </pre>
2952 <p>TODO</p>
2953 <div class="refsect3">
2954 <a name="InterfaceBlob.members"></a><h4>Members</h4>
2955 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2956 <colgroup>
2957 <col width="300px" class="struct_members_name">
2958 <col class="struct_members_description">
2959 <col width="200px" class="struct_members_annotations">
2960 </colgroup>
2961 <tbody>
2962 <tr>
2963 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.blob-type"></a>blob_type</code></em>;</p></td>
2964 <td class="struct_member_description"><p>TODO</p></td>
2965 <td class="struct_member_annotations"> </td>
2966 </tr>
2967 <tr>
2968 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
2969 <td class="struct_member_description"><p>TODO</p></td>
2970 <td class="struct_member_annotations"> </td>
2971 </tr>
2972 <tr>
2973 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.reserved"></a>reserved</code></em> :15;</p></td>
2974 <td class="struct_member_description"><p>Reserved for future use.</p></td>
2975 <td class="struct_member_annotations"> </td>
2976 </tr>
2977 <tr>
2978 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="InterfaceBlob.name"></a>name</code></em>;</p></td>
2979 <td class="struct_member_description"><p>TODO</p></td>
2980 <td class="struct_member_annotations"> </td>
2981 </tr>
2982 <tr>
2983 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="InterfaceBlob.gtype-name"></a>gtype_name</code></em>;</p></td>
2984 <td class="struct_member_description"><p>TODO</p></td>
2985 <td class="struct_member_annotations"> </td>
2986 </tr>
2987 <tr>
2988 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="InterfaceBlob.gtype-init"></a>gtype_init</code></em>;</p></td>
2989 <td class="struct_member_description"><p>TODO</p></td>
2990 <td class="struct_member_annotations"> </td>
2991 </tr>
2992 <tr>
2993 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.gtype-struct"></a>gtype_struct</code></em>;</p></td>
2994 <td class="struct_member_description"><p>Name of the interface "class" C structure</p></td>
2995 <td class="struct_member_annotations"> </td>
2996 </tr>
2997 <tr>
2998 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.n-prerequisites"></a>n_prerequisites</code></em>;</p></td>
2999 <td class="struct_member_description"><p>Number of prerequisites</p></td>
3000 <td class="struct_member_annotations"> </td>
3001 </tr>
3002 <tr>
3003 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.n-properties"></a>n_properties</code></em>;</p></td>
3004 <td class="struct_member_description"><p>Number of properties</p></td>
3005 <td class="struct_member_annotations"> </td>
3006 </tr>
3007 <tr>
3008 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.n-methods"></a>n_methods</code></em>;</p></td>
3009 <td class="struct_member_description"><p>Number of methods</p></td>
3010 <td class="struct_member_annotations"> </td>
3011 </tr>
3012 <tr>
3013 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.n-signals"></a>n_signals</code></em>;</p></td>
3014 <td class="struct_member_description"><p>Number of signals</p></td>
3015 <td class="struct_member_annotations"> </td>
3016 </tr>
3017 <tr>
3018 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.n-vfuncs"></a>n_vfuncs</code></em>;</p></td>
3019 <td class="struct_member_description"><p>Number of virtual functions</p></td>
3020 <td class="struct_member_annotations"> </td>
3021 </tr>
3022 <tr>
3023 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.n-constants"></a>n_constants</code></em>;</p></td>
3024 <td class="struct_member_description"><p>The lengths of the arrays. Up to 16bits of padding may be
3025 inserted between the arrays to ensure that they start on a 32bit
3026 boundary.</p></td>
3027 <td class="struct_member_annotations"> </td>
3028 </tr>
3029 <tr>
3030 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.padding"></a>padding</code></em>;</p></td>
3031 <td class="struct_member_description"><p>TODO</p></td>
3032 <td class="struct_member_annotations"> </td>
3033 </tr>
3034 <tr>
3035 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="InterfaceBlob.reserved2"></a>reserved2</code></em>;</p></td>
3036 <td class="struct_member_description"><p>Reserved for future use.</p></td>
3037 <td class="struct_member_annotations"> </td>
3038 </tr>
3039 <tr>
3040 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="InterfaceBlob.reserved3"></a>reserved3</code></em>;</p></td>
3041 <td class="struct_member_description"><p>Reserved for future use.</p></td>
3042 <td class="struct_member_annotations"> </td>
3043 </tr>
3044 <tr>
3045 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="InterfaceBlob.prerequisites"></a>prerequisites</code></em>[];</p></td>
3046 <td class="struct_member_description"><p>An array of indices of directory entries for required
3047 interfaces.</p></td>
3048 <td class="struct_member_annotations"> </td>
3049 </tr>
3050 </tbody>
3051 </table></div>
3052 </div>
3053 </div>
3054 <hr>
3055 <div class="refsect2">
3056 <a name="ConstantBlob"></a><h3>ConstantBlob</h3>
3057 <pre class="programlisting">typedef struct {
3058   guint16        blob_type;
3059   guint16        deprecated   : 1;
3060   guint16        reserved     :15;
3061   guint32        name;
3062
3063   SimpleTypeBlob type;
3064
3065   guint32        size;
3066   guint32        offset;
3067
3068   guint32        reserved2;
3069 } ConstantBlob;
3070 </pre>
3071 <p>TODO</p>
3072 <div class="refsect3">
3073 <a name="ConstantBlob.members"></a><h4>Members</h4>
3074 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3075 <colgroup>
3076 <col width="300px" class="struct_members_name">
3077 <col class="struct_members_description">
3078 <col width="200px" class="struct_members_annotations">
3079 </colgroup>
3080 <tbody>
3081 <tr>
3082 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ConstantBlob.blob-type"></a>blob_type</code></em>;</p></td>
3083 <td class="struct_member_description"><p>TODO</p></td>
3084 <td class="struct_member_annotations"> </td>
3085 </tr>
3086 <tr>
3087 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ConstantBlob.deprecated"></a>deprecated</code></em> : 1;</p></td>
3088 <td class="struct_member_description"><p>TODO</p></td>
3089 <td class="struct_member_annotations"> </td>
3090 </tr>
3091 <tr>
3092 <td class="struct_member_name"><p><span class="type">guint16</span> <em class="structfield"><code><a name="ConstantBlob.reserved"></a>reserved</code></em> :15;</p></td>
3093 <td class="struct_member_description"><p>Reserved for future use.</p></td>
3094 <td class="struct_member_annotations"> </td>
3095 </tr>
3096 <tr>
3097 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ConstantBlob.name"></a>name</code></em>;</p></td>
3098 <td class="struct_member_description"><p>TODO</p></td>
3099 <td class="struct_member_annotations"> </td>
3100 </tr>
3101 <tr>
3102 <td class="struct_member_name"><p><a class="link" href="gi-GITypelib.html#SimpleTypeBlob" title="SimpleTypeBlob"><span class="type">SimpleTypeBlob</span></a> <em class="structfield"><code><a name="ConstantBlob.type"></a>type</code></em>;</p></td>
3103 <td class="struct_member_description"><p>The type of the value. In most cases this should be a numeric type
3104 or string.</p></td>
3105 <td class="struct_member_annotations"> </td>
3106 </tr>
3107 <tr>
3108 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ConstantBlob.size"></a>size</code></em>;</p></td>
3109 <td class="struct_member_description"><p>The size of the value in bytes.</p></td>
3110 <td class="struct_member_annotations"> </td>
3111 </tr>
3112 <tr>
3113 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ConstantBlob.offset"></a>offset</code></em>;</p></td>
3114 <td class="struct_member_description"><p>The offset of the value in the typelib.</p></td>
3115 <td class="struct_member_annotations"> </td>
3116 </tr>
3117 <tr>
3118 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="ConstantBlob.reserved2"></a>reserved2</code></em>;</p></td>
3119 <td class="struct_member_description"><p>Reserved for future use.</p></td>
3120 <td class="struct_member_annotations"> </td>
3121 </tr>
3122 </tbody>
3123 </table></div>
3124 </div>
3125 </div>
3126 <hr>
3127 <div class="refsect2">
3128 <a name="AttributeBlob"></a><h3>AttributeBlob</h3>
3129 <pre class="programlisting">typedef struct {
3130   guint32 offset;
3131   guint32 name;
3132   guint32 value;
3133 } AttributeBlob;
3134 </pre>
3135 <p>TODO</p>
3136 <div class="refsect3">
3137 <a name="AttributeBlob.members"></a><h4>Members</h4>
3138 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3139 <colgroup>
3140 <col width="300px" class="struct_members_name">
3141 <col class="struct_members_description">
3142 <col width="200px" class="struct_members_annotations">
3143 </colgroup>
3144 <tbody>
3145 <tr>
3146 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="AttributeBlob.offset"></a>offset</code></em>;</p></td>
3147 <td class="struct_member_description"><p>The offset of the typelib entry to which this attribute refers.
3148 Attributes are kept sorted by offset, so that the attributes of an
3149 entry can be found by a binary search.</p></td>
3150 <td class="struct_member_annotations"> </td>
3151 </tr>
3152 <tr>
3153 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="AttributeBlob.name"></a>name</code></em>;</p></td>
3154 <td class="struct_member_description"><p>The name of the attribute, a string.</p></td>
3155 <td class="struct_member_annotations"> </td>
3156 </tr>
3157 <tr>
3158 <td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="AttributeBlob.value"></a>value</code></em>;</p></td>
3159 <td class="struct_member_description"><p>The value of the attribute (also a string)</p></td>
3160 <td class="struct_member_annotations"> </td>
3161 </tr>
3162 </tbody>
3163 </table></div>
3164 </div>
3165 </div>
3166 <hr>
3167 <div class="refsect2">
3168 <a name="GITypelibError"></a><h3>enum GITypelibError</h3>
3169 <p>A error set while validating the <a class="link" href="gi-gitypelib.html#GITypelib" title="GITypelib"><span class="type">GITypelib</span></a></p>
3170 <div class="refsect3">
3171 <a name="GITypelibError.members"></a><h4>Members</h4>
3172 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3173 <colgroup>
3174 <col width="300px" class="enum_members_name">
3175 <col class="enum_members_description">
3176 <col width="200px" class="enum_members_annotations">
3177 </colgroup>
3178 <tbody>
3179 <tr>
3180 <td class="enum_member_name"><p><a name="G-TYPELIB-ERROR-INVALID:CAPS"></a>G_TYPELIB_ERROR_INVALID</p></td>
3181 <td class="enum_member_description">
3182 <p>the typelib is invalid</p>
3183 </td>
3184 <td class="enum_member_annotations"> </td>
3185 </tr>
3186 <tr>
3187 <td class="enum_member_name"><p><a name="G-TYPELIB-ERROR-INVALID-HEADER:CAPS"></a>G_TYPELIB_ERROR_INVALID_HEADER</p></td>
3188 <td class="enum_member_description">
3189 <p>the typelib header is invalid</p>
3190 </td>
3191 <td class="enum_member_annotations"> </td>
3192 </tr>
3193 <tr>
3194 <td class="enum_member_name"><p><a name="G-TYPELIB-ERROR-INVALID-DIRECTORY:CAPS"></a>G_TYPELIB_ERROR_INVALID_DIRECTORY</p></td>
3195 <td class="enum_member_description">
3196 <p>the typelib directory is invalid</p>
3197 </td>
3198 <td class="enum_member_annotations"> </td>
3199 </tr>
3200 <tr>
3201 <td class="enum_member_name"><p><a name="G-TYPELIB-ERROR-INVALID-ENTRY:CAPS"></a>G_TYPELIB_ERROR_INVALID_ENTRY</p></td>
3202 <td class="enum_member_description">
3203 <p>a typelib entry is invalid</p>
3204 </td>
3205 <td class="enum_member_annotations"> </td>
3206 </tr>
3207 <tr>
3208 <td class="enum_member_name"><p><a name="G-TYPELIB-ERROR-INVALID-BLOB:CAPS"></a>G_TYPELIB_ERROR_INVALID_BLOB</p></td>
3209 <td class="enum_member_description">
3210 <p>a typelib blob is invalid</p>
3211 </td>
3212 <td class="enum_member_annotations"> </td>
3213 </tr>
3214 </tbody>
3215 </table></div>
3216 </div>
3217 </div>
3218 <hr>
3219 <div class="refsect2">
3220 <a name="G-TYPELIB-ERROR:CAPS"></a><h3>G_TYPELIB_ERROR</h3>
3221 <pre class="programlisting">#define G_TYPELIB_ERROR (g_typelib_error_quark ())
3222 </pre>
3223 <p>TODO</p>
3224 </div>
3225 <hr>
3226 <div class="refsect2">
3227 <a name="GITypelibHashBuilder"></a><h3>GITypelibHashBuilder</h3>
3228 <pre class="programlisting">typedef struct _GITypelibHashBuilder GITypelibHashBuilder;</pre>
3229 <p>TODO</p>
3230 </div>
3231 </div>
3232 </div>
3233 <div class="footer">
3234 <hr>Generated by GTK-Doc V1.25.1</div>
3235 </body>
3236 </html>