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