c30418a8018601b53ec770a5065b1f3e78e4e34e
[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,         /*  5 */
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, /* 10 */
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,     /* 15 */
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 gboolean               g_base_info_equal            (GIBaseInfo   *info1,
207                                                      GIBaseInfo   *info2);
208
209 GIBaseInfo *           g_info_new                   (GIInfoType    type,
210                                                      GIBaseInfo   *container,
211                                                      GTypelib     *typelib, 
212                                                      guint32       offset);
213
214
215 /* GIFunctionInfo */
216
217 typedef enum
218 {
219   GI_FUNCTION_IS_METHOD      = 1 << 0,
220   GI_FUNCTION_IS_CONSTRUCTOR = 1 << 1,
221   GI_FUNCTION_IS_GETTER      = 1 << 2,
222   GI_FUNCTION_IS_SETTER      = 1 << 3,
223   GI_FUNCTION_WRAPS_VFUNC    = 1 << 4,
224   GI_FUNCTION_THROWS         = 1 << 5
225 } GIFunctionInfoFlags;
226
227 const gchar *           g_function_info_get_symbol     (GIFunctionInfo *info);
228 GIFunctionInfoFlags     g_function_info_get_flags      (GIFunctionInfo *info);
229 GIPropertyInfo *        g_function_info_get_property   (GIFunctionInfo *info);
230 GIVFuncInfo *           g_function_info_get_vfunc      (GIFunctionInfo *info);
231
232 typedef union 
233 {
234   gboolean v_boolean;
235   gint8    v_int8;
236   guint8   v_uint8;
237   gint16   v_int16;
238   guint16  v_uint16;
239   gint32   v_int32;
240   guint32  v_uint32;
241   gint64   v_int64;
242   guint64  v_uint64;
243   gfloat   v_float;
244   gdouble  v_double;
245   gshort   v_short;
246   gushort  v_ushort;
247   gint     v_int;
248   guint    v_uint;
249   glong    v_long;
250   gulong   v_ulong;
251   gssize   v_ssize;
252   gsize    v_size;
253   gchar *  v_string;
254   gpointer v_pointer;
255 } GArgument;
256
257 #define G_INVOKE_ERROR (g_invoke_error_quark ())
258 GQuark g_invoke_error_quark (void);
259
260 typedef enum
261 {
262   G_INVOKE_ERROR_FAILED,
263   G_INVOKE_ERROR_SYMBOL_NOT_FOUND,
264   G_INVOKE_ERROR_ARGUMENT_MISMATCH
265 } GInvokeError;
266
267 gboolean              g_function_info_invoke         (GIFunctionInfo *info, 
268                                                       const GArgument  *in_args,
269                                                       int               n_in_args,
270                                                       const GArgument  *out_args,
271                                                       int               n_out_args,
272                                                       GArgument        *return_value,
273                                                       GError          **error);
274
275
276 /* GICallableInfo */
277
278 typedef enum {
279   GI_TRANSFER_NOTHING,
280   GI_TRANSFER_CONTAINER,
281   GI_TRANSFER_EVERYTHING
282 } GITransfer;
283
284 GITypeInfo *           g_callable_info_get_return_type (GICallableInfo *info);
285 GITransfer             g_callable_info_get_caller_owns (GICallableInfo *info);
286 gboolean               g_callable_info_may_return_null (GICallableInfo *info);
287 gint                   g_callable_info_get_n_args      (GICallableInfo *info);
288 GIArgInfo *            g_callable_info_get_arg         (GICallableInfo *info,
289                                                         gint           n);
290
291 /* GIArgInfo */
292
293 typedef enum  {
294   GI_DIRECTION_IN,
295   GI_DIRECTION_OUT,
296   GI_DIRECTION_INOUT
297 } GIDirection;
298
299 typedef enum {
300   GI_SCOPE_TYPE_INVALID, /* The argument is not of callback type */
301   GI_SCOPE_TYPE_CALL, /* The callback and associated user_data is only used during the
302                          call to this function */
303   GI_SCOPE_TYPE_ASYNC, /* The callback and associated user_data is 
304                           only used until the callback is invoked, and the callback 
305                           is invoked always exactly once. */
306   GI_SCOPE_TYPE_NOTIFIED /* The callback and and associated user_data is
307                             used until the caller is notfied via the destroy_notify */
308 } GIScopeType;
309
310 GIDirection            g_arg_info_get_direction          (GIArgInfo *info);
311 gboolean               g_arg_info_is_dipper              (GIArgInfo *info);
312 gboolean               g_arg_info_is_return_value        (GIArgInfo *info);
313 gboolean               g_arg_info_is_optional            (GIArgInfo *info);
314 gboolean               g_arg_info_may_be_null            (GIArgInfo *info);
315 GITransfer             g_arg_info_get_ownership_transfer (GIArgInfo *info);
316 GIScopeType            g_arg_info_get_scope              (GIArgInfo *info);
317 gint                   g_arg_info_get_closure            (GIArgInfo *info);
318 gint                   g_arg_info_get_destroy            (GIArgInfo *info);
319 GITypeInfo *           g_arg_info_get_type               (GIArgInfo *info);
320
321
322 /* GITypeInfo */
323
324 typedef enum {
325   /* Basic types */
326   GI_TYPE_TAG_VOID      =  0,
327   GI_TYPE_TAG_BOOLEAN   =  1,
328   GI_TYPE_TAG_INT8      =  2,
329   GI_TYPE_TAG_UINT8     =  3,
330   GI_TYPE_TAG_INT16     =  4,
331   GI_TYPE_TAG_UINT16    =  5,  
332   GI_TYPE_TAG_INT32     =  6,
333   GI_TYPE_TAG_UINT32    =  7,
334   GI_TYPE_TAG_INT64     =  8,
335   GI_TYPE_TAG_UINT64    =  9,
336   GI_TYPE_TAG_SHORT     = 10,
337   GI_TYPE_TAG_USHORT    = 11,
338   GI_TYPE_TAG_INT       = 12,
339   GI_TYPE_TAG_UINT      = 13,
340   GI_TYPE_TAG_LONG      = 14,
341   GI_TYPE_TAG_ULONG     = 15,
342   GI_TYPE_TAG_SSIZE     = 16,
343   GI_TYPE_TAG_SIZE      = 17,
344   GI_TYPE_TAG_FLOAT     = 18,
345   GI_TYPE_TAG_DOUBLE    = 19,
346   GI_TYPE_TAG_TIME_T    = 20,
347   GI_TYPE_TAG_GTYPE     = 21,
348   GI_TYPE_TAG_UTF8      = 22,
349   GI_TYPE_TAG_FILENAME  = 23,
350   /* Non-basic types */
351   GI_TYPE_TAG_ARRAY     = 24,
352   GI_TYPE_TAG_INTERFACE = 25,
353   GI_TYPE_TAG_GLIST     = 26,
354   GI_TYPE_TAG_GSLIST    = 27,
355   GI_TYPE_TAG_GHASH     = 28,
356   GI_TYPE_TAG_ERROR     = 29
357   /* Note - there is only room currently for 32 tags.
358    * See docs/typelib-format.txt SimpleTypeBlob definition */
359 } GITypeTag;
360
361 #define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY)
362
363 const gchar*           g_type_tag_to_string            (GITypeTag   type);
364
365 gboolean               g_type_info_is_pointer          (GITypeInfo *info);
366 GITypeTag              g_type_info_get_tag             (GITypeInfo *info);
367 GITypeInfo *           g_type_info_get_param_type      (GITypeInfo *info,
368                                                         gint       n);
369 GIBaseInfo *           g_type_info_get_interface       (GITypeInfo *info);
370 gint                   g_type_info_get_array_length    (GITypeInfo *info);
371 gint                   g_type_info_get_array_fixed_size(GITypeInfo *info);
372 gboolean               g_type_info_is_zero_terminated  (GITypeInfo *info);
373
374 gint                   g_type_info_get_n_error_domains (GITypeInfo *info);
375 GIErrorDomainInfo     *g_type_info_get_error_domain    (GITypeInfo *info,
376                                                         gint       n);
377
378 /* GIErrorDomainInfo */
379
380 const gchar *          g_error_domain_info_get_quark   (GIErrorDomainInfo *info);
381 GIInterfaceInfo *           g_error_domain_info_get_codes (GIErrorDomainInfo *info);
382
383
384 /* GIValueInfo */
385  
386 glong                  g_value_info_get_value      (GIValueInfo *info);
387
388
389 /* GIFieldInfo */
390
391 typedef enum
392 {
393   GI_FIELD_IS_READABLE = 1 << 0,
394   GI_FIELD_IS_WRITABLE = 1 << 1
395 } GIFieldInfoFlags;
396
397 GIFieldInfoFlags       g_field_info_get_flags      (GIFieldInfo *info);
398 gint                   g_field_info_get_size       (GIFieldInfo *info);
399 gint                   g_field_info_get_offset     (GIFieldInfo *info);
400 GITypeInfo *           g_field_info_get_type       (GIFieldInfo *info);
401
402 gboolean g_field_info_get_field (GIFieldInfo     *field_info,
403                                  gpointer         mem,
404                                  GArgument       *value);
405 gboolean g_field_info_set_field (GIFieldInfo     *field_info,
406                                  gpointer         mem,
407                                  const GArgument *value);
408
409 /* GIUnionInfo */
410 gint                   g_union_info_get_n_fields  (GIUnionInfo *info);
411 GIFieldInfo *          g_union_info_get_field     (GIUnionInfo *info,
412                                                    gint         n);
413 gint                   g_union_info_get_n_methods (GIUnionInfo *info);
414 GIFunctionInfo *       g_union_info_get_method    (GIUnionInfo *info,
415                                                    gint         n);
416 gboolean               g_union_info_is_discriminated (GIUnionInfo *info);
417 gint                   g_union_info_get_discriminator_offset (GIUnionInfo *info);
418 GITypeInfo *           g_union_info_get_discriminator_type (GIUnionInfo *info);
419 GIConstantInfo *       g_union_info_get_discriminator      (GIUnionInfo *info,
420                                                             gint         n);
421 GIFunctionInfo *       g_union_info_find_method    (GIUnionInfo *info,
422                                                     const gchar *name);
423 gsize                  g_union_info_get_size       (GIUnionInfo *info);
424 gsize                  g_union_info_get_alignment  (GIUnionInfo *info);
425
426
427 /* GIStructInfo */
428 gint                   g_struct_info_get_n_fields  (GIStructInfo *info);
429 GIFieldInfo *          g_struct_info_get_field     (GIStructInfo *info,
430                                                     gint         n);
431 gint                   g_struct_info_get_n_methods (GIStructInfo *info);
432 GIFunctionInfo *       g_struct_info_get_method    (GIStructInfo *info,
433                                                     gint         n);
434 GIFunctionInfo *       g_struct_info_find_method   (GIStructInfo *info,
435                                                     const gchar *name);
436 gsize                  g_struct_info_get_size      (GIStructInfo *info);
437 gsize                  g_struct_info_get_alignment (GIStructInfo *info);
438 gboolean               g_struct_info_is_gtype_struct (GIStructInfo *info);
439
440 /* GIRegisteredTypeInfo */
441
442 const gchar *          g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info);
443 const gchar *          g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info);
444 GType                  g_registered_type_info_get_g_type    (GIRegisteredTypeInfo *info);
445
446 /* GIEnumInfo */
447
448 gint                   g_enum_info_get_n_values             (GIEnumInfo      *info);
449 GIValueInfo  *         g_enum_info_get_value                (GIEnumInfo      *info,
450                                                              gint            n);
451 GITypeTag              g_enum_info_get_storage_type         (GIEnumInfo      *info);
452
453 /* GIObjectInfo */
454
455 const gchar *          g_object_info_get_type_name          (GIObjectInfo    *info);
456 const gchar *          g_object_info_get_type_init          (GIObjectInfo    *info);
457 gboolean               g_object_info_get_abstract           (GIObjectInfo    *info);
458 GIObjectInfo *         g_object_info_get_parent             (GIObjectInfo    *info);
459 gint                   g_object_info_get_n_interfaces       (GIObjectInfo    *info);
460 GIInterfaceInfo *      g_object_info_get_interface          (GIObjectInfo    *info,
461                                                              gint            n);
462 gint                   g_object_info_get_n_fields           (GIObjectInfo    *info);
463 GIFieldInfo *          g_object_info_get_field              (GIObjectInfo    *info,
464                                                              gint            n);
465 gint                   g_object_info_get_n_properties       (GIObjectInfo    *info);
466 GIPropertyInfo *       g_object_info_get_property           (GIObjectInfo    *info,
467                                                              gint            n);
468 gint                   g_object_info_get_n_methods          (GIObjectInfo    *info);
469 GIFunctionInfo *       g_object_info_get_method             (GIObjectInfo    *info,
470                                                              gint            n);
471 GIFunctionInfo *       g_object_info_find_method            (GIObjectInfo *info,
472                                                              const gchar *name);
473 gint                   g_object_info_get_n_signals          (GIObjectInfo    *info);
474 GISignalInfo *         g_object_info_get_signal             (GIObjectInfo    *info,
475                                                              gint            n);
476 gint                   g_object_info_get_n_vfuncs           (GIObjectInfo    *info);
477 GIVFuncInfo *          g_object_info_get_vfunc              (GIObjectInfo    *info,
478                                                              gint            n);
479 GIVFuncInfo *          g_object_info_find_vfunc             (GIObjectInfo *info,
480                                                              const gchar *name);
481 gint                   g_object_info_get_n_constants        (GIObjectInfo    *info);
482 GIConstantInfo *       g_object_info_get_constant           (GIObjectInfo    *info,
483                                                              gint            n);
484 GIStructInfo *         g_object_info_get_class_struct       (GIObjectInfo    *info);
485
486                                                              
487 /* GIInterfaceInfo */
488
489 gint                   g_interface_info_get_n_prerequisites (GIInterfaceInfo *info);
490 GIBaseInfo *           g_interface_info_get_prerequisite    (GIInterfaceInfo *info,
491                                                              gint        n);
492 gint                   g_interface_info_get_n_properties    (GIInterfaceInfo *info);
493 GIPropertyInfo *       g_interface_info_get_property        (GIInterfaceInfo *info,
494                                                              gint        n);
495 gint                   g_interface_info_get_n_methods       (GIInterfaceInfo *info);
496 GIFunctionInfo *       g_interface_info_get_method          (GIInterfaceInfo *info,
497                                                              gint        n);
498 GIFunctionInfo *       g_interface_info_find_method         (GIInterfaceInfo *info,
499                                                              const gchar *name);
500 gint                   g_interface_info_get_n_signals       (GIInterfaceInfo *info);
501 GISignalInfo *         g_interface_info_get_signal          (GIInterfaceInfo *info,
502                                                              gint        n);
503 gint                   g_interface_info_get_n_vfuncs        (GIInterfaceInfo *info);
504 GIVFuncInfo *          g_interface_info_get_vfunc           (GIInterfaceInfo *info,
505                                                              gint        n);
506 GIVFuncInfo *          g_interface_info_find_vfunc          (GIInterfaceInfo *info,
507                                                              const gchar *name);
508 gint                   g_interface_info_get_n_constants     (GIInterfaceInfo *info);
509 GIConstantInfo *       g_interface_info_get_constant        (GIInterfaceInfo *info,
510                                                              gint        n);
511
512 GIStructInfo *         g_interface_info_get_iface_struct    (GIInterfaceInfo *info);
513
514
515 /* GIPropertyInfo  */
516
517 GParamFlags             g_property_info_get_flags                (GIPropertyInfo         *info);
518 GITypeInfo *            g_property_info_get_type                 (GIPropertyInfo         *info);
519
520
521 /* GISignalInfo */
522
523 GSignalFlags            g_signal_info_get_flags                  (GISignalInfo           *info);
524 GIVFuncInfo *           g_signal_info_get_class_closure          (GISignalInfo           *info);
525 gboolean                g_signal_info_true_stops_emit            (GISignalInfo           *info);
526
527
528 /* GIVFuncInfo */
529
530 typedef enum
531 {
532   GI_VFUNC_MUST_CHAIN_UP     = 1 << 0,
533   GI_VFUNC_MUST_OVERRIDE     = 1 << 1,
534   GI_VFUNC_MUST_NOT_OVERRIDE = 1 << 2
535 } GIVFuncInfoFlags;
536
537 GIVFuncInfoFlags        g_vfunc_info_get_flags                   (GIVFuncInfo            *info);
538 gint                    g_vfunc_info_get_offset                  (GIVFuncInfo            *info);
539 GISignalInfo *          g_vfunc_info_get_signal                  (GIVFuncInfo            *info);
540 GIFunctionInfo *        g_vfunc_info_get_invoker                 (GIVFuncInfo            *info);
541
542
543 /* GIConstantInfo */
544
545 GITypeInfo *            g_constant_info_get_type                 (GIConstantInfo         *info);
546 gint                    g_constant_info_get_value                (GIConstantInfo         *info,
547                                                                   GArgument             *value);
548
549
550 G_END_DECLS
551
552 #endif  /* __G_IREPOSITORY_H__ */
553