Bug 564016 - Include c:prefix in typelib, use it to optimize find_by_gtype
[gnome.gobject-introspection] / girepository / girepository.h
1 /* GObject introspection: Repository
2  *
3  * Copyright (C) 2005 Matthias Clasen
4  * Copyright (C) 2008,2009 Red Hat, Inc.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21
22 #ifndef __G_IREPOSITORY_H__
23 #define __G_IREPOSITORY_H__
24
25 #include <glib-object.h>
26 #include <gmodule.h>
27
28 G_BEGIN_DECLS
29
30 #define G_TYPE_IREPOSITORY      (g_irepository_get_type ())
31 #define G_IREPOSITORY(obj)      (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_IREPOSITORY, GIRepository))
32
33 typedef struct _GIRepository         GIRepository; 
34 typedef struct _GIRepositoryClass    GIRepositoryClass; 
35 typedef struct _GIRepositoryPrivate  GIRepositoryPrivate; 
36 typedef struct _GIBaseInfo           GIBaseInfo;
37 typedef struct _GICallableInfo       GICallableInfo;
38 typedef struct _GIFunctionInfo       GIFunctionInfo;
39 typedef struct _GICallbackInfo       GICallbackInfo;
40 typedef struct _GIRegisteredTypeInfo GIRegisteredTypeInfo;
41 typedef struct _GIStructInfo         GIStructInfo;
42 typedef struct _GIUnionInfo          GIUnionInfo;
43 typedef struct _GIEnumInfo           GIEnumInfo;
44 typedef struct _GIObjectInfo         GIObjectInfo;
45 typedef struct _GIInterfaceInfo      GIInterfaceInfo;
46 typedef struct _GIConstantInfo       GIConstantInfo;
47 typedef struct _GIValueInfo          GIValueInfo;
48 typedef struct _GISignalInfo         GISignalInfo;
49 typedef struct _GIVFuncInfo          GIVFuncInfo;
50 typedef struct _GIPropertyInfo       GIPropertyInfo;
51 typedef struct _GIFieldInfo          GIFieldInfo;
52 typedef struct _GIArgInfo            GIArgInfo;
53 typedef struct _GITypeInfo           GITypeInfo;
54 typedef struct _GIErrorDomainInfo    GIErrorDomainInfo;
55 typedef struct _GIUnresolvedInfo     GIUnresolvedInfo;
56 typedef struct _GTypelib            GTypelib;
57
58 struct _GIRepository 
59
60   GObject parent; 
61
62   /*< private >*/
63   GIRepositoryPrivate *priv;
64 };
65
66 struct _GIRepositoryClass
67
68   GObjectClass parent; 
69 };
70
71 typedef enum
72 {
73   G_IREPOSITORY_LOAD_FLAG_LAZY = 1 << 0
74 } GIRepositoryLoadFlags;
75
76 /* Repository */
77
78 GType         g_irepository_get_type      (void) G_GNUC_CONST;
79 GIRepository *g_irepository_get_default   (void);
80 void          g_irepository_prepend_search_path (const char *directory);
81 GSList *      g_irepository_get_search_path     (void);
82 const char *  g_irepository_load_typelib  (GIRepository *repository,
83                                            GTypelib     *typelib,
84                                            GIRepositoryLoadFlags flags,
85                                            GError      **error);
86 gboolean      g_irepository_is_registered (GIRepository *repository,
87                                            const gchar  *namespace_,
88                                            const gchar  *version);
89 GIBaseInfo *  g_irepository_find_by_name  (GIRepository *repository,
90                                            const gchar  *namespace_,
91                                            const gchar  *name);
92 GTypelib *    g_irepository_require       (GIRepository *repository,
93                                            const gchar  *namespace_,
94                                            const gchar  *version,
95                                            GIRepositoryLoadFlags flags,
96                                            GError      **error);
97 gchar      ** g_irepository_get_dependencies (GIRepository *repository,
98                                               const gchar  *namespace_);
99 gchar      ** g_irepository_get_loaded_namespaces (GIRepository *repository);
100 GIBaseInfo *  g_irepository_find_by_gtype (GIRepository *repository,
101                                            GType         gtype);
102 gint          g_irepository_get_n_infos   (GIRepository *repository,
103                                            const gchar  *namespace_);
104 GIBaseInfo *  g_irepository_get_info      (GIRepository *repository,
105                                            const gchar  *namespace_,
106                                            gint          index);
107 const gchar * g_irepository_get_typelib_path   (GIRepository *repository,
108                                                 const gchar  *namespace_);
109 const gchar * g_irepository_get_shared_library (GIRepository *repository,
110                                                 const gchar  *namespace_);
111 const gchar * g_irepository_get_c_prefix (GIRepository *repository,
112                                           const gchar  *namespace_);
113 const gchar * g_irepository_get_version (GIRepository *repository,
114                                          const gchar  *namespace_);
115
116 GOptionGroup * g_irepository_get_option_group (void);
117
118 gboolean       g_irepository_dump  (const char *arg, GError **error);
119
120 /* Typelib */
121
122 GTypelib *   g_typelib_new_from_memory       (guchar       *memory,
123                                                 gsize         len);
124 GTypelib *   g_typelib_new_from_const_memory (const guchar *memory,
125                                                 gsize         len);
126 GTypelib *   g_typelib_new_from_mapped_file  (GMappedFile  *mfile);
127 void          g_typelib_free                  (GTypelib    *typelib);
128
129 gboolean      g_typelib_symbol                (GTypelib    *typelib,
130                                                const gchar *symbol_name,
131                                                gpointer    *symbol);
132 const gchar * g_typelib_get_namespace         (GTypelib    *typelib);
133
134 typedef enum
135 {
136   G_IREPOSITORY_ERROR_TYPELIB_NOT_FOUND,
137   G_IREPOSITORY_ERROR_NAMESPACE_MISMATCH,
138   G_IREPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT,
139   G_IREPOSITORY_ERROR_LIBRARY_NOT_FOUND
140 } GIRepositoryError;
141
142 #define G_IREPOSITORY_ERROR (g_irepository_error_quark ())
143
144 GQuark g_irepository_error_quark (void);
145
146
147 /* Global utility functions */
148
149 void gi_cclosure_marshal_generic (GClosure       *closure,
150                                   GValue         *return_gvalue,
151                                   guint           n_param_values,
152                                   const GValue   *param_values,
153                                   gpointer        invocation_hint,
154                                   gpointer        marshal_data);
155
156 /* Types of objects registered in the repository */
157
158 typedef enum 
159 {
160   GI_INFO_TYPE_INVALID,
161   GI_INFO_TYPE_FUNCTION,
162   GI_INFO_TYPE_CALLBACK,
163   GI_INFO_TYPE_STRUCT,
164   GI_INFO_TYPE_BOXED,
165   GI_INFO_TYPE_ENUM,
166   GI_INFO_TYPE_FLAGS,
167   GI_INFO_TYPE_OBJECT,
168   GI_INFO_TYPE_INTERFACE,
169   GI_INFO_TYPE_CONSTANT,
170   GI_INFO_TYPE_ERROR_DOMAIN,
171   GI_INFO_TYPE_UNION,
172   GI_INFO_TYPE_VALUE,
173   GI_INFO_TYPE_SIGNAL,
174   GI_INFO_TYPE_VFUNC,
175   GI_INFO_TYPE_PROPERTY,
176   GI_INFO_TYPE_FIELD,
177   GI_INFO_TYPE_ARG,
178   GI_INFO_TYPE_TYPE,
179   GI_INFO_TYPE_UNRESOLVED
180 } GIInfoType;
181
182
183 /* GIBaseInfo */
184
185 typedef struct {
186   gpointer data;
187   gpointer data2;
188   gpointer data3;
189   gpointer data4;
190 } GIAttributeIter;
191
192 GIBaseInfo *           g_base_info_ref              (GIBaseInfo   *info);
193 void                   g_base_info_unref            (GIBaseInfo   *info);
194 GIInfoType             g_base_info_get_type         (GIBaseInfo   *info);
195 const gchar *          g_base_info_get_name         (GIBaseInfo   *info);
196 const gchar *          g_base_info_get_namespace    (GIBaseInfo   *info);
197 gboolean               g_base_info_is_deprecated    (GIBaseInfo   *info);
198 const gchar *          g_base_info_get_attribute    (GIBaseInfo   *info,
199                                                      const gchar  *name);
200 gboolean               g_base_info_iterate_attributes (GIBaseInfo      *info,
201                                                        GIAttributeIter *iterator,
202                                                        char           **name,
203                                                        char          **value);
204 GIBaseInfo *           g_base_info_get_container    (GIBaseInfo   *info);
205 GTypelib *             g_base_info_get_typelib      (GIBaseInfo   *info);
206
207 GIBaseInfo *           g_info_new                   (GIInfoType    type,
208                                                      GIBaseInfo   *container,
209                                                      GTypelib     *typelib, 
210                                                      guint32       offset);
211
212
213 /* GIFunctionInfo */
214
215 typedef enum
216 {
217   GI_FUNCTION_IS_METHOD      = 1 << 0,
218   GI_FUNCTION_IS_CONSTRUCTOR = 1 << 1,
219   GI_FUNCTION_IS_GETTER      = 1 << 2,
220   GI_FUNCTION_IS_SETTER      = 1 << 3,
221   GI_FUNCTION_WRAPS_VFUNC    = 1 << 4,
222   GI_FUNCTION_THROWS         = 1 << 5
223 } GIFunctionInfoFlags;
224
225 const gchar *           g_function_info_get_symbol     (GIFunctionInfo *info);
226 GIFunctionInfoFlags     g_function_info_get_flags      (GIFunctionInfo *info);
227 GIPropertyInfo *        g_function_info_get_property   (GIFunctionInfo *info);
228 GIVFuncInfo *           g_function_info_get_vfunc      (GIFunctionInfo *info);
229
230 typedef union 
231 {
232   gboolean v_boolean;
233   gint8    v_int8;
234   guint8   v_uint8;
235   gint16   v_int16;
236   guint16  v_uint16;
237   gint32   v_int32;
238   guint32  v_uint32;
239   gint64   v_int64;
240   guint64  v_uint64;
241   gfloat   v_float;
242   gdouble  v_double;
243   gint     v_int;
244   guint    v_uint;
245   glong    v_long;
246   gulong   v_ulong;
247   gssize   v_ssize;
248   gsize    v_size;
249   gchar *  v_string;
250   gpointer v_pointer;
251 } GArgument;
252
253 #define G_INVOKE_ERROR (g_invoke_error_quark ())
254 GQuark g_invoke_error_quark (void);
255
256 typedef enum
257 {
258   G_INVOKE_ERROR_FAILED,
259   G_INVOKE_ERROR_SYMBOL_NOT_FOUND,
260   G_INVOKE_ERROR_ARGUMENT_MISMATCH
261 } GInvokeError;
262
263 gboolean              g_function_info_invoke         (GIFunctionInfo *info, 
264                                                       const GArgument  *in_args,
265                                                       int               n_in_args,
266                                                       const GArgument  *out_args,
267                                                       int               n_out_args,
268                                                       GArgument        *return_value,
269                                                       GError          **error);
270
271
272 /* GICallableInfo */
273
274 typedef enum {
275   GI_TRANSFER_NOTHING,
276   GI_TRANSFER_CONTAINER,
277   GI_TRANSFER_EVERYTHING
278 } GITransfer;
279
280 GITypeInfo *           g_callable_info_get_return_type (GICallableInfo *info);
281 GITransfer             g_callable_info_get_caller_owns (GICallableInfo *info);
282 gboolean               g_callable_info_may_return_null (GICallableInfo *info);
283 gint                   g_callable_info_get_n_args      (GICallableInfo *info);
284 GIArgInfo *            g_callable_info_get_arg         (GICallableInfo *info,
285                                                         gint           n);
286
287 /* GIArgInfo */
288
289 typedef enum  {
290   GI_DIRECTION_IN,
291   GI_DIRECTION_OUT,
292   GI_DIRECTION_INOUT
293 } GIDirection;
294
295 typedef enum {
296   GI_SCOPE_TYPE_INVALID, /* The argument is not of callback type */
297   GI_SCOPE_TYPE_CALL, /* The callback and associated user_data is only used during the
298                          call to this function */
299   GI_SCOPE_TYPE_OBJECT, /* The callback and associated user_data is used until
300                            the object containing this method is destroyed */
301   GI_SCOPE_TYPE_ASYNC, /* The callback and associated user_data is 
302                           only used until the callback is invoked, and the callback 
303                           is invoked always exactly once. */
304   GI_SCOPE_TYPE_NOTIFIED /* The callback and and associated user_data is
305                             used until the caller is notfied via the destroy_notify */
306 } GIScopeType;
307
308 GIDirection            g_arg_info_get_direction          (GIArgInfo *info);
309 gboolean               g_arg_info_is_dipper              (GIArgInfo *info);
310 gboolean               g_arg_info_is_return_value        (GIArgInfo *info);
311 gboolean               g_arg_info_is_optional            (GIArgInfo *info);
312 gboolean               g_arg_info_may_be_null            (GIArgInfo *info);
313 GITransfer             g_arg_info_get_ownership_transfer (GIArgInfo *info);
314 GIScopeType            g_arg_info_get_scope              (GIArgInfo *info);
315 gint                   g_arg_info_get_closure            (GIArgInfo *info);
316 gint                   g_arg_info_get_destroy            (GIArgInfo *info);
317 GITypeInfo *           g_arg_info_get_type               (GIArgInfo *info);
318
319
320 /* GITypeInfo */
321
322 typedef enum {
323   /* Basic types */
324   GI_TYPE_TAG_VOID      =  0,
325   GI_TYPE_TAG_BOOLEAN   =  1,
326   GI_TYPE_TAG_INT8      =  2,
327   GI_TYPE_TAG_UINT8     =  3,
328   GI_TYPE_TAG_INT16     =  4,
329   GI_TYPE_TAG_UINT16    =  5,  
330   GI_TYPE_TAG_INT32     =  6,
331   GI_TYPE_TAG_UINT32    =  7,
332   GI_TYPE_TAG_INT64     =  8,
333   GI_TYPE_TAG_UINT64    =  9,
334   GI_TYPE_TAG_INT       = 10,
335   GI_TYPE_TAG_UINT      = 11,
336   GI_TYPE_TAG_LONG      = 12,
337   GI_TYPE_TAG_ULONG     = 13,
338   GI_TYPE_TAG_SSIZE     = 14,
339   GI_TYPE_TAG_SIZE      = 15,
340   GI_TYPE_TAG_FLOAT     = 16,
341   GI_TYPE_TAG_DOUBLE    = 17,
342   GI_TYPE_TAG_TIME_T    = 18,
343   GI_TYPE_TAG_GTYPE     = 19,
344   GI_TYPE_TAG_UTF8      = 20,
345   GI_TYPE_TAG_FILENAME  = 21,
346   /* Non-basic types */
347   GI_TYPE_TAG_ARRAY     = 22,
348   GI_TYPE_TAG_INTERFACE = 23,
349   GI_TYPE_TAG_GLIST     = 24,
350   GI_TYPE_TAG_GSLIST    = 25,
351   GI_TYPE_TAG_GHASH     = 26,
352   GI_TYPE_TAG_ERROR     = 27
353   /* Note - there is only room currently for 32 tags.
354    * See docs/typelib-format.txt SimpleTypeBlob definition */
355 } GITypeTag;
356
357 #define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY)
358
359 const gchar*           g_type_tag_to_string            (GITypeTag   type);
360
361 gboolean               g_type_info_is_pointer          (GITypeInfo *info);
362 GITypeTag              g_type_info_get_tag             (GITypeInfo *info);
363 GITypeInfo *           g_type_info_get_param_type      (GITypeInfo *info,
364                                                         gint       n);
365 GIBaseInfo *           g_type_info_get_interface       (GITypeInfo *info);
366 gint                   g_type_info_get_array_length    (GITypeInfo *info);
367 gint                   g_type_info_get_array_fixed_size(GITypeInfo *info);
368 gboolean               g_type_info_is_zero_terminated  (GITypeInfo *info);
369
370 gint                   g_type_info_get_n_error_domains (GITypeInfo *info);
371 GIErrorDomainInfo     *g_type_info_get_error_domain    (GITypeInfo *info,
372                                                         gint       n);
373
374 /* GIErrorDomainInfo */
375
376 const gchar *          g_error_domain_info_get_quark   (GIErrorDomainInfo *info);
377 GIInterfaceInfo *           g_error_domain_info_get_codes (GIErrorDomainInfo *info);
378
379
380 /* GIValueInfo */
381  
382 glong                  g_value_info_get_value      (GIValueInfo *info);
383
384
385 /* GIFieldInfo */
386
387 typedef enum
388 {
389   GI_FIELD_IS_READABLE = 1 << 0,
390   GI_FIELD_IS_WRITABLE = 1 << 1
391 } GIFieldInfoFlags;
392
393 GIFieldInfoFlags       g_field_info_get_flags      (GIFieldInfo *info);
394 gint                   g_field_info_get_size       (GIFieldInfo *info);
395 gint                   g_field_info_get_offset     (GIFieldInfo *info);
396 GITypeInfo *           g_field_info_get_type       (GIFieldInfo *info);
397
398 gboolean g_field_info_get_field (GIFieldInfo     *field_info,
399                                  gpointer         mem,
400                                  GArgument       *value);
401 gboolean g_field_info_set_field (GIFieldInfo     *field_info,
402                                  gpointer         mem,
403                                  const GArgument *value);
404
405 /* GIUnionInfo */
406 gint                   g_union_info_get_n_fields  (GIUnionInfo *info);
407 GIFieldInfo *          g_union_info_get_field     (GIUnionInfo *info,
408                                                    gint         n);
409 gint                   g_union_info_get_n_methods (GIUnionInfo *info);
410 GIFunctionInfo *       g_union_info_get_method    (GIUnionInfo *info,
411                                                    gint         n);
412 gboolean               g_union_info_is_discriminated (GIUnionInfo *info);
413 gint                   g_union_info_get_discriminator_offset (GIUnionInfo *info);
414 GITypeInfo *           g_union_info_get_discriminator_type (GIUnionInfo *info);
415 GIConstantInfo *       g_union_info_get_discriminator      (GIUnionInfo *info,
416                                                             gint         n);
417 GIFunctionInfo *       g_union_info_find_method    (GIUnionInfo *info,
418                                                     const gchar *name);
419 gsize                  g_union_info_get_size       (GIUnionInfo *info);
420 gsize                  g_union_info_get_alignment  (GIUnionInfo *info);
421
422
423 /* GIStructInfo */
424 gint                   g_struct_info_get_n_fields  (GIStructInfo *info);
425 GIFieldInfo *          g_struct_info_get_field     (GIStructInfo *info,
426                                                     gint         n);
427 gint                   g_struct_info_get_n_methods (GIStructInfo *info);
428 GIFunctionInfo *       g_struct_info_get_method    (GIStructInfo *info,
429                                                     gint         n);
430 GIFunctionInfo *       g_struct_info_find_method   (GIStructInfo *info,
431                                                     const gchar *name);
432 gsize                  g_struct_info_get_size      (GIStructInfo *info);
433 gsize                  g_struct_info_get_alignment (GIStructInfo *info);
434 gboolean               g_struct_info_is_gtype_struct (GIStructInfo *info);
435
436 /* GIRegisteredTypeInfo */
437
438 const gchar *          g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info);
439 const gchar *          g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info);
440 GType                  g_registered_type_info_get_g_type    (GIRegisteredTypeInfo *info);
441
442 /* GIEnumInfo */
443
444 gint                   g_enum_info_get_n_values             (GIEnumInfo      *info);
445 GIValueInfo  *         g_enum_info_get_value                (GIEnumInfo      *info,
446                                                              gint            n);
447 GITypeTag              g_enum_info_get_storage_type         (GIEnumInfo      *info);
448
449 /* GIObjectInfo */
450
451 const gchar *          g_object_info_get_type_name          (GIObjectInfo    *info);
452 const gchar *          g_object_info_get_type_init          (GIObjectInfo    *info);
453 gboolean               g_object_info_get_abstract           (GIObjectInfo    *info);
454 GIObjectInfo *         g_object_info_get_parent             (GIObjectInfo    *info);
455 gint                   g_object_info_get_n_interfaces       (GIObjectInfo    *info);
456 GIInterfaceInfo *      g_object_info_get_interface          (GIObjectInfo    *info,
457                                                              gint            n);
458 gint                   g_object_info_get_n_fields           (GIObjectInfo    *info);
459 GIFieldInfo *          g_object_info_get_field              (GIObjectInfo    *info,
460                                                              gint            n);
461 gint                   g_object_info_get_n_properties       (GIObjectInfo    *info);
462 GIPropertyInfo *       g_object_info_get_property           (GIObjectInfo    *info,
463                                                              gint            n);
464 gint                   g_object_info_get_n_methods          (GIObjectInfo    *info);
465 GIFunctionInfo *       g_object_info_get_method             (GIObjectInfo    *info,
466                                                              gint            n);
467 GIFunctionInfo *       g_object_info_find_method            (GIObjectInfo *info,
468                                                              const gchar *name);
469 gint                   g_object_info_get_n_signals          (GIObjectInfo    *info);
470 GISignalInfo *         g_object_info_get_signal             (GIObjectInfo    *info,
471                                                              gint            n);
472 gint                   g_object_info_get_n_vfuncs           (GIObjectInfo    *info);
473 GIVFuncInfo *          g_object_info_get_vfunc              (GIObjectInfo    *info,
474                                                              gint            n);
475 GIVFuncInfo *          g_object_info_find_vfunc             (GIObjectInfo *info,
476                                                              const gchar *name);
477 gint                   g_object_info_get_n_constants        (GIObjectInfo    *info);
478 GIConstantInfo *       g_object_info_get_constant           (GIObjectInfo    *info,
479                                                              gint            n);
480 GIStructInfo *         g_object_info_get_class_struct       (GIObjectInfo    *info);
481
482                                                              
483 /* GIInterfaceInfo */
484
485 gint                   g_interface_info_get_n_prerequisites (GIInterfaceInfo *info);
486 GIBaseInfo *           g_interface_info_get_prerequisite    (GIInterfaceInfo *info,
487                                                              gint        n);
488 gint                   g_interface_info_get_n_properties    (GIInterfaceInfo *info);
489 GIPropertyInfo *       g_interface_info_get_property        (GIInterfaceInfo *info,
490                                                              gint        n);
491 gint                   g_interface_info_get_n_methods       (GIInterfaceInfo *info);
492 GIFunctionInfo *       g_interface_info_get_method          (GIInterfaceInfo *info,
493                                                              gint        n);
494 GIFunctionInfo *       g_interface_info_find_method         (GIInterfaceInfo *info,
495                                                              const gchar *name);
496 gint                   g_interface_info_get_n_signals       (GIInterfaceInfo *info);
497 GISignalInfo *         g_interface_info_get_signal          (GIInterfaceInfo *info,
498                                                              gint        n);
499 gint                   g_interface_info_get_n_vfuncs        (GIInterfaceInfo *info);
500 GIVFuncInfo *          g_interface_info_get_vfunc           (GIInterfaceInfo *info,
501                                                              gint        n);
502 GIVFuncInfo *          g_interface_info_find_vfunc          (GIInterfaceInfo *info,
503                                                              const gchar *name);
504 gint                   g_interface_info_get_n_constants     (GIInterfaceInfo *info);
505 GIConstantInfo *       g_interface_info_get_constant        (GIInterfaceInfo *info,
506                                                              gint        n);
507
508 GIStructInfo *         g_interface_info_get_iface_struct    (GIInterfaceInfo *info);
509
510
511 /* GIPropertyInfo  */
512
513 GParamFlags             g_property_info_get_flags                (GIPropertyInfo         *info);
514 GITypeInfo *            g_property_info_get_type                 (GIPropertyInfo         *info);
515
516
517 /* GISignalInfo */
518
519 GSignalFlags            g_signal_info_get_flags                  (GISignalInfo           *info);
520 GIVFuncInfo *           g_signal_info_get_class_closure          (GISignalInfo           *info);
521 gboolean                g_signal_info_true_stops_emit            (GISignalInfo           *info);
522
523
524 /* GIVFuncInfo */
525
526 typedef enum
527 {
528   GI_VFUNC_MUST_CHAIN_UP     = 1 << 0,
529   GI_VFUNC_MUST_OVERRIDE     = 1 << 1,
530   GI_VFUNC_MUST_NOT_OVERRIDE = 1 << 2
531 } GIVFuncInfoFlags;
532
533 GIVFuncInfoFlags        g_vfunc_info_get_flags                   (GIVFuncInfo            *info);
534 gint                    g_vfunc_info_get_offset                  (GIVFuncInfo            *info);
535 GISignalInfo *          g_vfunc_info_get_signal                  (GIVFuncInfo            *info);
536 GIFunctionInfo *        g_vfunc_info_get_invoker                 (GIVFuncInfo            *info);
537
538
539 /* GIConstantInfo */
540
541 GITypeInfo *            g_constant_info_get_type                 (GIConstantInfo         *info);
542 gint                    g_constant_info_get_value                (GIConstantInfo         *info,
543                                                                   GArgument             *value);
544
545
546 G_END_DECLS
547
548 #endif  /* __G_IREPOSITORY_H__ */
549