Add support for foreign structs
[gnome.gobject-introspection] / girepository / girepository.h
index c881c8b..cfa5b39 100644 (file)
 
 G_BEGIN_DECLS
 
-#define G_TYPE_IREPOSITORY      (g_irepository_get_type ())
-#define G_IREPOSITORY(obj)      (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_IREPOSITORY, GIRepository))
-
-typedef struct _GIRepository         GIRepository; 
-typedef struct _GIRepositoryClass    GIRepositoryClass; 
-typedef struct _GIRepositoryPrivate  GIRepositoryPrivate; 
-typedef struct _GIBaseInfo           GIBaseInfo;
-typedef struct _GICallableInfo       GICallableInfo;
-typedef struct _GIFunctionInfo       GIFunctionInfo;
-typedef struct _GICallbackInfo       GICallbackInfo;
-typedef struct _GIRegisteredTypeInfo GIRegisteredTypeInfo;
-typedef struct _GIStructInfo         GIStructInfo;
-typedef struct _GIUnionInfo          GIUnionInfo;
-typedef struct _GIEnumInfo           GIEnumInfo;
-typedef struct _GIObjectInfo         GIObjectInfo;
-typedef struct _GIInterfaceInfo      GIInterfaceInfo;
-typedef struct _GIConstantInfo       GIConstantInfo;
-typedef struct _GIValueInfo          GIValueInfo;
-typedef struct _GISignalInfo         GISignalInfo;
-typedef struct _GIVFuncInfo          GIVFuncInfo;
-typedef struct _GIPropertyInfo       GIPropertyInfo;
-typedef struct _GIFieldInfo          GIFieldInfo;
-typedef struct _GIArgInfo            GIArgInfo;
-typedef struct _GITypeInfo           GITypeInfo;
-typedef struct _GIErrorDomainInfo    GIErrorDomainInfo;
+#define G_TYPE_IREPOSITORY              (g_irepository_get_type ())
+#define G_IREPOSITORY(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_IREPOSITORY, GIRepository))
+#define G_IREPOSITORY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_IREPOSITORY, GIRepositoryClass))
+#define G_IS_IREPOSITORY(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_IREPOSITORY))
+#define G_IS_IREPOSITORY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_IREPOSITORY))
+#define G_IREPOSITORY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_IREPOSITORY, GIRepositoryClass))
+
+typedef struct _GIRepository         GIRepository;
+typedef struct _GIRepositoryClass    GIRepositoryClass;
+typedef struct _GIRepositoryPrivate  GIRepositoryPrivate;
+
+typedef struct _GIBaseInfoStub       GIBaseInfo;
+
+struct _GIBaseInfoStub {
+  gint32 dummy1;
+  gint32 dummy2;
+  gpointer dummy3;
+  gpointer dummy4;
+  gpointer dummy5;
+  guint32  dummy6;
+  guint32  dummy7;
+  gpointer padding[4];
+};
+
+typedef GIBaseInfo GICallableInfo;
+typedef GIBaseInfo GIFunctionInfo;
+typedef GIBaseInfo GICallbackInfo;
+typedef GIBaseInfo GIRegisteredTypeInfo;
+typedef GIBaseInfo GIStructInfo;
+typedef GIBaseInfo GIUnionInfo;
+typedef GIBaseInfo GIEnumInfo;
+typedef GIBaseInfo GIObjectInfo;
+typedef GIBaseInfo GIInterfaceInfo;
+typedef GIBaseInfo GIConstantInfo;
+typedef GIBaseInfo GIValueInfo;
+typedef GIBaseInfo GISignalInfo;
+typedef GIBaseInfo GIVFuncInfo;
+typedef GIBaseInfo GIPropertyInfo;
+typedef GIBaseInfo GIFieldInfo;
+typedef GIBaseInfo GIArgInfo;
+typedef GIBaseInfo GITypeInfo;
+typedef GIBaseInfo GIErrorDomainInfo;
+
 typedef struct _GIUnresolvedInfo     GIUnresolvedInfo;
 typedef struct _GTypelib            GTypelib;
 
-struct _GIRepository 
-{ 
-  GObject parent; 
+struct _GIRepository
+{
+  GObject parent;
 
   /*< private >*/
   GIRepositoryPrivate *priv;
 };
 
 struct _GIRepositoryClass
-{ 
-  GObjectClass parent; 
+{
+  GObjectClass parent;
 };
 
 typedef enum
@@ -155,7 +173,7 @@ void gi_cclosure_marshal_generic (GClosure       *closure,
 
 /* Types of objects registered in the repository */
 
-typedef enum 
+typedef enum
 {
   GI_INFO_TYPE_INVALID,
   GI_INFO_TYPE_FUNCTION,
@@ -203,10 +221,12 @@ gboolean               g_base_info_iterate_attributes (GIBaseInfo      *info,
                                                        char          **value);
 GIBaseInfo *           g_base_info_get_container    (GIBaseInfo   *info);
 GTypelib *             g_base_info_get_typelib      (GIBaseInfo   *info);
+gboolean               g_base_info_equal            (GIBaseInfo   *info1,
+                                                     GIBaseInfo   *info2);
 
 GIBaseInfo *           g_info_new                   (GIInfoType    type,
                                                     GIBaseInfo   *container,
-                                                    GTypelib     *typelib, 
+                                                    GTypelib     *typelib,
                                                     guint32       offset);
 
 
@@ -227,7 +247,7 @@ GIFunctionInfoFlags     g_function_info_get_flags      (GIFunctionInfo *info);
 GIPropertyInfo *        g_function_info_get_property   (GIFunctionInfo *info);
 GIVFuncInfo *           g_function_info_get_vfunc      (GIFunctionInfo *info);
 
-typedef union 
+typedef union
 {
   gboolean v_boolean;
   gint8    v_int8;
@@ -262,7 +282,7 @@ typedef enum
   G_INVOKE_ERROR_ARGUMENT_MISMATCH
 } GInvokeError;
 
-gboolean              g_function_info_invoke         (GIFunctionInfo *info, 
+gboolean              g_function_info_invoke         (GIFunctionInfo *info,
                                                      const GArgument  *in_args,
                                                      int               n_in_args,
                                                      const GArgument  *out_args,
@@ -280,11 +300,16 @@ typedef enum {
 } GITransfer;
 
 GITypeInfo *           g_callable_info_get_return_type (GICallableInfo *info);
+void                   g_callable_info_load_return_type (GICallableInfo *info,
+                                                         GITypeInfo     *type);
 GITransfer             g_callable_info_get_caller_owns (GICallableInfo *info);
 gboolean               g_callable_info_may_return_null (GICallableInfo *info);
 gint                   g_callable_info_get_n_args      (GICallableInfo *info);
 GIArgInfo *            g_callable_info_get_arg         (GICallableInfo *info,
-                                                       gint           n);
+                                                        gint            n);
+void                   g_callable_info_load_arg        (GICallableInfo *info,
+                                                        gint            n,
+                                                        GIArgInfo      *arg);
 
 /* GIArgInfo */
 
@@ -298,8 +323,8 @@ typedef enum {
   GI_SCOPE_TYPE_INVALID, /* The argument is not of callback type */
   GI_SCOPE_TYPE_CALL, /* The callback and associated user_data is only used during the
                          call to this function */
-  GI_SCOPE_TYPE_ASYNC, /* The callback and associated user_data is 
-                          only used until the callback is invoked, and the callback 
+  GI_SCOPE_TYPE_ASYNC, /* The callback and associated user_data is
+                          only used until the callback is invoked, and the callback
                           is invoked always exactly once. */
   GI_SCOPE_TYPE_NOTIFIED /* The callback and and associated user_data is
                             used until the caller is notfied via the destroy_notify */
@@ -315,6 +340,8 @@ GIScopeType            g_arg_info_get_scope              (GIArgInfo *info);
 gint                   g_arg_info_get_closure            (GIArgInfo *info);
 gint                   g_arg_info_get_destroy            (GIArgInfo *info);
 GITypeInfo *           g_arg_info_get_type               (GIArgInfo *info);
+void                   g_arg_info_load_type              (GIArgInfo *info,
+                                                          GITypeInfo *type);
 
 
 /* GITypeInfo */
@@ -326,7 +353,7 @@ typedef enum {
   GI_TYPE_TAG_INT8      =  2,
   GI_TYPE_TAG_UINT8     =  3,
   GI_TYPE_TAG_INT16     =  4,
-  GI_TYPE_TAG_UINT16    =  5,  
+  GI_TYPE_TAG_UINT16    =  5,
   GI_TYPE_TAG_INT32     =  6,
   GI_TYPE_TAG_UINT32    =  7,
   GI_TYPE_TAG_INT64     =  8,
@@ -380,7 +407,7 @@ GIInterfaceInfo *           g_error_domain_info_get_codes (GIErrorDomainInfo *in
 
 
 /* GIValueInfo */
+
 glong                  g_value_info_get_value      (GIValueInfo *info);
 
 
@@ -434,6 +461,7 @@ GIFunctionInfo *       g_struct_info_find_method   (GIStructInfo *info,
 gsize                  g_struct_info_get_size      (GIStructInfo *info);
 gsize                  g_struct_info_get_alignment (GIStructInfo *info);
 gboolean               g_struct_info_is_gtype_struct (GIStructInfo *info);
+gboolean               g_struct_info_is_foreign    (GIStructInfo *info);
 
 /* GIRegisteredTypeInfo */
 
@@ -450,8 +478,8 @@ GITypeTag              g_enum_info_get_storage_type         (GIEnumInfo      *in
 
 /* GIObjectInfo */
 
-const gchar *          g_object_info_get_type_name         (GIObjectInfo    *info);
-const gchar *          g_object_info_get_type_init         (GIObjectInfo    *info);
+const gchar *          g_object_info_get_type_name         (GIObjectInfo    *info);
+const gchar *          g_object_info_get_type_init         (GIObjectInfo    *info);
 gboolean               g_object_info_get_abstract           (GIObjectInfo    *info);
 GIObjectInfo *         g_object_info_get_parent             (GIObjectInfo    *info);
 gint                   g_object_info_get_n_interfaces       (GIObjectInfo    *info);
@@ -481,7 +509,7 @@ GIConstantInfo *       g_object_info_get_constant           (GIObjectInfo    *in
                                                             gint            n);
 GIStructInfo *         g_object_info_get_class_struct       (GIObjectInfo    *info);
 
-                                                            
+
 /* GIInterfaceInfo */
 
 gint                   g_interface_info_get_n_prerequisites (GIInterfaceInfo *info);
@@ -494,7 +522,7 @@ gint                   g_interface_info_get_n_methods       (GIInterfaceInfo *in
 GIFunctionInfo *       g_interface_info_get_method          (GIInterfaceInfo *info,
                                                             gint        n);
 GIFunctionInfo *       g_interface_info_find_method         (GIInterfaceInfo *info,
-                                                            const gchar *name);
+                                                            const gchar *name);
 gint                   g_interface_info_get_n_signals       (GIInterfaceInfo *info);
 GISignalInfo *         g_interface_info_get_signal          (GIInterfaceInfo *info,
                                                             gint        n);