aboutsummaryrefslogtreecommitdiff
path: root/devel/gobject-introspection
diff options
context:
space:
mode:
Diffstat (limited to 'devel/gobject-introspection')
-rw-r--r--devel/gobject-introspection/Makefile7
-rw-r--r--devel/gobject-introspection/distinfo6
-rw-r--r--devel/gobject-introspection/files/patch-200912072632
-rw-r--r--devel/gobject-introspection/files/patch-2010010766
-rw-r--r--devel/gobject-introspection/files/patch-gir_Makefile.in7
-rw-r--r--devel/gobject-introspection/files/patch-girepository_girnode.c12
-rw-r--r--devel/gobject-introspection/pkg-plist6
7 files changed, 17 insertions, 2719 deletions
diff --git a/devel/gobject-introspection/Makefile b/devel/gobject-introspection/Makefile
index 3ee455c39804..56fe63a36283 100644
--- a/devel/gobject-introspection/Makefile
+++ b/devel/gobject-introspection/Makefile
@@ -3,11 +3,11 @@
# Whom: Alexander Logvinov <avl@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/devel/gobject-introspection/Makefile,v 1.3 2009/09/06 07:37:44 avl Exp $
+# $MCom: ports/devel/gobject-introspection/Makefile,v 1.8 2010/04/22 15:11:23 kwm Exp $
#
PORTNAME= gobject-introspection
-PORTVERSION= 0.6.7
+PORTVERSION= 0.6.10
CATEGORIES= devel
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
@@ -16,7 +16,8 @@ MAINTAINER= gnome@FreeBSD.org
COMMENT= Generate interface introspection data for GObject libraries
BUILD_DEPENDS= flex:${PORTSDIR}/textproc/flex
-LIB_DEPENDS= ffi.5:${PORTSDIR}/devel/libffi
+LIB_DEPENDS= ffi.5:${PORTSDIR}/devel/libffi \
+ cairo.2:${PORTSDIR}/graphics/cairo
USE_BZIP2= yes
GNU_CONFIGURE= yes
diff --git a/devel/gobject-introspection/distinfo b/devel/gobject-introspection/distinfo
index e3eccda319b7..73ae07e84f39 100644
--- a/devel/gobject-introspection/distinfo
+++ b/devel/gobject-introspection/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gobject-introspection-0.6.7.tar.bz2) = 41205c14cbd86632806578448e29bd30
-SHA256 (gnome2/gobject-introspection-0.6.7.tar.bz2) = c97ca4e978b0583999775640e9e9f97b64a5880ad2a6adc3ce903207b616f24a
-SIZE (gnome2/gobject-introspection-0.6.7.tar.bz2) = 579956
+MD5 (gnome2/gobject-introspection-0.6.10.tar.bz2) = cdf7af644a0407c3fd2d57ba2bb3549f
+SHA256 (gnome2/gobject-introspection-0.6.10.tar.bz2) = 36bd511a4d45967f95526f94708b3f4367e9d344aa11f3206fe6edb7fc3a8d4b
+SIZE (gnome2/gobject-introspection-0.6.10.tar.bz2) = 550501
diff --git a/devel/gobject-introspection/files/patch-20091207 b/devel/gobject-introspection/files/patch-20091207
deleted file mode 100644
index fa0b93cf3086..000000000000
--- a/devel/gobject-introspection/files/patch-20091207
+++ /dev/null
@@ -1,2632 +0,0 @@
-From 804f59f40c027cf1fb2944764adea564dff07678 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Mon, 07 Dec 2009 23:35:06 +0000
-Subject: Allow stack allocating GIBaseInfo, add stack retrieval variants
-
-We don't want to malloc each GIBaseInfo when they can be used in
-function invocation; instead, allow stack allocation.
-
-There were a lot of structure typedefs which were actually just
-exactly the same as GIBaseInfo, with the one exception of GITypeInfo.
-
-Instead, just put the single GITypeInfo boolean inside GIBaseInfo
-as a bit in a bitfield.
-
-GIBaseInfo is still opaque publicly; GIRealInfo is the new
-internal structure.
-
-Using this, add new functions to retrieve arguments and argument types
-on the stack.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=604074
----
-diff --git a/girepository/ginfo.c b/girepository/ginfo.c
-index 2aacb76..b11cc8f 100644
---- girepository/ginfo.c
-+++ girepository/ginfo.c
-@@ -28,11 +28,19 @@
- #include "gtypelib.h"
- #include "ginfo.h"
-
--struct _GIBaseInfo
-+typedef struct _GIRealInfo GIRealInfo;
-+
-+/**
-+ * We just use one structure for all of the info object
-+ * types; in general, we should be reading data directly
-+ * from the typelib, and not having computed data in
-+ * per-type structures.
-+ */
-+struct _GIRealInfo
- {
- /* Keep this part in sync with GIUnresolvedInfo below */
-- gint type;
-- gint ref_count;
-+ gint32 type;
-+ gint32 ref_count;
- GIRepository *repository;
- GIBaseInfo *container;
-
-@@ -40,13 +48,18 @@ struct _GIBaseInfo
-
- GTypelib *typelib;
- guint32 offset;
-+
-+ guint32 type_is_embedded : 1; /* Used by GITypeInfo */
-+ guint32 reserved : 31;
-+
-+ gpointer reserved2[4];
- };
-
- struct _GIUnresolvedInfo
- {
- /* Keep this part in sync with GIBaseInfo above */
-- gint type;
-- gint ref_count;
-+ gint32 type;
-+ gint32 ref_count;
- GIRepository *repository;
- GIBaseInfo *container;
-
-@@ -56,137 +69,68 @@ struct _GIUnresolvedInfo
- const gchar *namespace;
- };
-
--struct _GICallableInfo
--{
-- GIBaseInfo base;
--};
--
--struct _GIFunctionInfo
--{
-- GICallableInfo callable;
--};
--
--struct _GICallbackInfo
--{
-- GICallableInfo callable;
--};
--
--struct _GIRegisteredTypeInfo
--{
-- GIBaseInfo base;
--};
--
--struct _GIStructInfo
--{
-- GIRegisteredTypeInfo registered;
--};
--
--struct _GIEnumInfo
--{
-- GIRegisteredTypeInfo registered;
--};
--
--struct _GIObjectInfo
--{
-- GIRegisteredTypeInfo registered;
--};
--
--struct _GIInterfaceInfo
--{
-- GIRegisteredTypeInfo registered;
--};
--
--struct _GIConstantInfo
--{
-- GIBaseInfo base;
--};
--
--struct _GIValueInfo
--{
-- GIBaseInfo base;
--};
--
--struct _GISignalInfo
--{
-- GICallableInfo callable;
--};
--
--struct _GIVFuncInfo
--{
-- GICallableInfo callable;
--};
--
--struct _GIPropertyInfo
--{
-- GIBaseInfo base;
--};
--
--struct _GIFieldInfo
-+static void
-+g_info_init (GIRealInfo *info,
-+ GIInfoType type,
-+ GIRepository *repository,
-+ GIBaseInfo *container,
-+ GTypelib *typelib,
-+ guint32 offset)
- {
-- GIBaseInfo base;
--};
-+ memset (info, 0, sizeof (GIRealInfo));
-
--struct _GIArgInfo
--{
-- GIBaseInfo base;
--};
-+ /* Invalid refcount used to flag stack-allocated infos */
-+ info->ref_count = 0xFFFF;
-+ info->type = type;
-
--struct _GITypeInfo
--{
-- GIBaseInfo base;
-- gboolean is_embedded;
--};
-+ info->typelib = typelib;
-+ info->offset = offset;
-
--struct _GIUnionInfo
--{
-- GIRegisteredTypeInfo registered;
--};
-+ if (container)
-+ info->container = container;
-
-+ g_assert (G_IS_IREPOSITORY (repository));
-+ info->repository = repository;
-+}
-
- /* info creation */
- GIBaseInfo *
- g_info_new_full (GIInfoType type,
-- GIRepository *repository,
-- GIBaseInfo *container,
-- GTypelib *typelib,
-- guint32 offset)
-+ GIRepository *repository,
-+ GIBaseInfo *container,
-+ GTypelib *typelib,
-+ guint32 offset)
- {
-- GIBaseInfo *info;
-+ GIRealInfo *info;
-
- g_return_val_if_fail (container != NULL || repository != NULL, NULL);
-
-- if (type == GI_INFO_TYPE_TYPE)
-- info = (GIBaseInfo *)g_new0 (GITypeInfo, 1);
-- else
-- info = g_new0 (GIBaseInfo, 1);
--
-+ info = g_new (GIRealInfo, 1);
-+
-+ g_info_init (info, type, repository, container, typelib, offset);
- info->ref_count = 1;
-- info->type = type;
--
-- info->typelib = typelib;
-- info->offset = offset;
-
-- if (container)
-- info->container = g_base_info_ref (container);
-+ if (container && ((GIRealInfo *) container)->ref_count != 0xFFFF)
-+ g_base_info_ref (info->container);
-
-- info->repository = g_object_ref (repository);
-+ g_object_ref (info->repository);
-
-- return info;
-+ return (GIBaseInfo*)info;
- }
-
- GIBaseInfo *
- g_info_new (GIInfoType type,
-- GIBaseInfo *container,
-- GTypelib *typelib,
-- guint32 offset)
-+ GIBaseInfo *container,
-+ GTypelib *typelib,
-+ guint32 offset)
- {
-- return g_info_new_full (type, container->repository, container, typelib, offset);
-+ return g_info_new_full (type, ((GIRealInfo*)container)->repository, container, typelib, offset);
- }
-
- static GIBaseInfo *
- g_info_from_entry (GIRepository *repository,
-- GTypelib *typelib,
-- guint16 index)
-+ GTypelib *typelib,
-+ guint16 index)
- {
- GIBaseInfo *result;
- DirEntry *entry = g_typelib_get_dir_entry (typelib, index);
-@@ -200,31 +144,34 @@ g_info_from_entry (GIRepository *repository,
-
- result = g_irepository_find_by_name (repository, namespace, name);
- if (result == NULL)
-- {
-- GIUnresolvedInfo *unresolved;
-+ {
-+ GIUnresolvedInfo *unresolved;
-
-- unresolved = g_new0 (GIUnresolvedInfo, 1);
-+ unresolved = g_new0 (GIUnresolvedInfo, 1);
-
-- unresolved->type = GI_INFO_TYPE_UNRESOLVED;
-- unresolved->ref_count = 1;
-- unresolved->repository = g_object_ref (repository);
-- unresolved->container = NULL;
-- unresolved->name = name;
-- unresolved->namespace = namespace;
-+ unresolved->type = GI_INFO_TYPE_UNRESOLVED;
-+ unresolved->ref_count = 1;
-+ unresolved->repository = g_object_ref (repository);
-+ unresolved->container = NULL;
-+ unresolved->name = name;
-+ unresolved->namespace = namespace;
-
-- return (GIBaseInfo*)unresolved;
-- }
-- return result;
-+ return (GIBaseInfo *)unresolved;
-+ }
-+ return (GIBaseInfo *)result;
- }
-
-- return result;
-+ return (GIBaseInfo *)result;
- }
-
- /* GIBaseInfo functions */
- GIBaseInfo *
- g_base_info_ref (GIBaseInfo *info)
- {
-- info->ref_count++;
-+ GIRealInfo *rinfo = (GIRealInfo*)info;
-+
-+ g_assert (rinfo->ref_count != 0xFFFF);
-+ ((GIRealInfo*)info)->ref_count++;
-
- return info;
- }
-@@ -232,18 +179,20 @@ g_base_info_ref (GIBaseInfo *info)
- void
- g_base_info_unref (GIBaseInfo *info)
- {
-- g_assert (info->ref_count > 0);
-- info->ref_count--;
-+ GIRealInfo *rinfo = (GIRealInfo*)info;
-+
-+ g_assert (rinfo->ref_count > 0 && rinfo->ref_count != 0xFFFF);
-+ rinfo->ref_count--;
-
-- if (!info->ref_count)
-+ if (!rinfo->ref_count)
- {
-- if (info->container)
-- g_base_info_unref (info->container);
-+ if (rinfo->container && ((GIRealInfo *) rinfo->container)->ref_count != 0xFFFF)
-+ g_base_info_unref (rinfo->container);
-
-- if (info->repository)
-- g_object_unref (info->repository);
-+ if (rinfo->repository)
-+ g_object_unref (rinfo->repository);
-
-- g_free (info);
-+ g_free (rinfo);
- }
- }
-
-@@ -251,14 +200,15 @@ GIInfoType
- g_base_info_get_type (GIBaseInfo *info)
- {
-
-- return info->type;
-+ return ((GIRealInfo*)info)->type;
- }
-
- const gchar *
- g_base_info_get_name (GIBaseInfo *info)
- {
-- g_assert (info->ref_count > 0);
-- switch (info->type)
-+ GIRealInfo *rinfo = (GIRealInfo*)info;
-+ g_assert (rinfo->ref_count > 0);
-+ switch (rinfo->type)
- {
- case GI_INFO_TYPE_FUNCTION:
- case GI_INFO_TYPE_CALLBACK:
-@@ -272,64 +222,64 @@ g_base_info_get_name (GIBaseInfo *info)
- case GI_INFO_TYPE_ERROR_DOMAIN:
- case GI_INFO_TYPE_UNION:
- {
-- CommonBlob *blob = (CommonBlob *)&info->typelib->data[info->offset];
-+ CommonBlob *blob = (CommonBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
-
- case GI_INFO_TYPE_VALUE:
- {
-- ValueBlob *blob = (ValueBlob *)&info->typelib->data[info->offset];
-+ ValueBlob *blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
-
- case GI_INFO_TYPE_SIGNAL:
- {
-- SignalBlob *blob = (SignalBlob *)&info->typelib->data[info->offset];
-+ SignalBlob *blob = (SignalBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
-
- case GI_INFO_TYPE_PROPERTY:
- {
-- PropertyBlob *blob = (PropertyBlob *)&info->typelib->data[info->offset];
-+ PropertyBlob *blob = (PropertyBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
-
- case GI_INFO_TYPE_VFUNC:
- {
-- VFuncBlob *blob = (VFuncBlob *)&info->typelib->data[info->offset];
-+ VFuncBlob *blob = (VFuncBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
-
- case GI_INFO_TYPE_FIELD:
- {
-- FieldBlob *blob = (FieldBlob *)&info->typelib->data[info->offset];
-+ FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
-
- case GI_INFO_TYPE_ARG:
- {
-- ArgBlob *blob = (ArgBlob *)&info->typelib->data[info->offset];
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (info->typelib, blob->name);
-+ return g_typelib_get_string (rinfo->typelib, blob->name);
- }
- break;
- case GI_INFO_TYPE_UNRESOLVED:
- {
-- GIUnresolvedInfo *unresolved = (GIUnresolvedInfo *)info;
-+ GIUnresolvedInfo *unresolved = (GIUnresolvedInfo *)info;
-
-- return unresolved->name;
-+ return unresolved->name;
- }
- break;
- case GI_INFO_TYPE_TYPE:
-@@ -344,24 +294,26 @@ g_base_info_get_name (GIBaseInfo *info)
- const gchar *
- g_base_info_get_namespace (GIBaseInfo *info)
- {
-- Header *header = (Header *)info->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo*) info;
-+ Header *header = (Header *)rinfo->typelib->data;
-
-- g_assert (info->ref_count > 0);
-+ g_assert (rinfo->ref_count > 0);
-
-- if (info->type == GI_INFO_TYPE_UNRESOLVED)
-+ if (rinfo->type == GI_INFO_TYPE_UNRESOLVED)
- {
- GIUnresolvedInfo *unresolved = (GIUnresolvedInfo *)info;
-
- return unresolved->namespace;
- }
-
-- return g_typelib_get_string (info->typelib, header->namespace);
-+ return g_typelib_get_string (rinfo->typelib, header->namespace);
- }
-
- gboolean
- g_base_info_is_deprecated (GIBaseInfo *info)
- {
-- switch (info->type)
-+ GIRealInfo *rinfo = (GIRealInfo*) info;
-+ switch (rinfo->type)
- {
- case GI_INFO_TYPE_FUNCTION:
- case GI_INFO_TYPE_CALLBACK:
-@@ -374,33 +326,33 @@ g_base_info_is_deprecated (GIBaseInfo *info)
- case GI_INFO_TYPE_CONSTANT:
- case GI_INFO_TYPE_ERROR_DOMAIN:
- {
-- CommonBlob *blob = (CommonBlob *)&info->typelib->data[info->offset];
-+ CommonBlob *blob = (CommonBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return blob->deprecated;
-+ return blob->deprecated;
- }
- break;
-
- case GI_INFO_TYPE_VALUE:
- {
-- ValueBlob *blob = (ValueBlob *)&info->typelib->data[info->offset];
-+ ValueBlob *blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return blob->deprecated;
-+ return blob->deprecated;
- }
- break;
-
- case GI_INFO_TYPE_SIGNAL:
- {
-- SignalBlob *blob = (SignalBlob *)&info->typelib->data[info->offset];
-+ SignalBlob *blob = (SignalBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return blob->deprecated;
-+ return blob->deprecated;
- }
- break;
-
- case GI_INFO_TYPE_PROPERTY:
- {
-- PropertyBlob *blob = (PropertyBlob *)&info->typelib->data[info->offset];
-+ PropertyBlob *blob = (PropertyBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return blob->deprecated;
-+ return blob->deprecated;
- }
- break;
-
-@@ -426,7 +378,7 @@ g_base_info_is_deprecated (GIBaseInfo *info)
- */
- const gchar *
- g_base_info_get_attribute (GIBaseInfo *info,
-- const gchar *name)
-+ const gchar *name)
- {
- GIAttributeIter iter = { 0, };
- gchar *curname, *curvalue;
-@@ -455,15 +407,14 @@ cmp_attribute (const void *av,
- }
-
- static AttributeBlob *
--find_first_attribute (GIBaseInfo *info)
-+find_first_attribute (GIRealInfo *rinfo)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-+ Header *header = (Header *)rinfo->typelib->data;
- AttributeBlob blob, *first, *res, *previous;
-
-- blob.offset = base->offset;
-+ blob.offset = rinfo->offset;
-
-- first = (AttributeBlob *) &base->typelib->data[header->attributes];
-+ first = (AttributeBlob *) &rinfo->typelib->data[header->attributes];
-
- res = bsearch (&blob, first, header->n_attributes,
- header->attribute_blob_size, cmp_attribute);
-@@ -472,7 +423,7 @@ find_first_attribute (GIBaseInfo *info)
- return NULL;
-
- previous = res - 1;
-- while (previous >= first && previous->offset == base->offset)
-+ while (previous >= first && previous->offset == rinfo->offset)
- {
- res = previous;
- previous = res - 1;
-@@ -520,23 +471,23 @@ g_base_info_iterate_attributes (GIBaseInfo *info,
- gchar **name,
- gchar **value)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
- AttributeBlob *next, *after;
-
-- after = (AttributeBlob *) &base->typelib->data[header->attributes +
-+ after = (AttributeBlob *) &rinfo->typelib->data[header->attributes +
- header->n_attributes * header->attribute_blob_size];
-
- if (iter->data != NULL)
- next = (AttributeBlob *) iter->data;
- else
-- next = find_first_attribute (info);
-+ next = find_first_attribute (rinfo);
-
-- if (next == NULL || next->offset != base->offset || next >= after)
-+ if (next == NULL || next->offset != rinfo->offset || next >= after)
- return FALSE;
-
-- *name = (gchar*) g_typelib_get_string (base->typelib, next->name);
-- *value = (gchar*) g_typelib_get_string (base->typelib, next->value);
-+ *name = (gchar*) g_typelib_get_string (rinfo->typelib, next->name);
-+ *value = (gchar*) g_typelib_get_string (rinfo->typelib, next->value);
- iter->data = next + 1;
-
- return TRUE;
-@@ -545,13 +496,13 @@ g_base_info_iterate_attributes (GIBaseInfo *info,
- GIBaseInfo *
- g_base_info_get_container (GIBaseInfo *info)
- {
-- return info->container;
-+ return ((GIRealInfo*)info)->container;
- }
-
- GTypelib *
- g_base_info_get_typelib (GIBaseInfo *info)
- {
-- return info->typelib;
-+ return ((GIRealInfo*)info)->typelib;
- }
-
- /*
-@@ -571,25 +522,27 @@ gboolean
- g_base_info_equal (GIBaseInfo *info1, GIBaseInfo *info2)
- {
- /* Compare the TypeLib pointers, which are mmapped. */
-- return info1->typelib->data + info1->offset == info2->typelib->data + info2->offset;
-+ GIRealInfo *rinfo1 = (GIRealInfo*)info1;
-+ GIRealInfo *rinfo2 = (GIRealInfo*)info2;
-+ return rinfo1->typelib->data + rinfo1->offset == rinfo2->typelib->data + rinfo2->offset;
- }
-
- /* GIFunctionInfo functions */
- const gchar *
- g_function_info_get_symbol (GIFunctionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FunctionBlob *blob = (FunctionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ FunctionBlob *blob = (FunctionBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (base->typelib, blob->symbol);
-+ return g_typelib_get_string (rinfo->typelib, blob->symbol);
- }
-
- GIFunctionInfoFlags
- g_function_info_get_flags (GIFunctionInfo *info)
- {
- GIFunctionInfoFlags flags;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FunctionBlob *blob = (FunctionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ FunctionBlob *blob = (FunctionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- flags = 0;
-
-@@ -618,9 +571,9 @@ g_function_info_get_flags (GIFunctionInfo *info)
- GIPropertyInfo *
- g_function_info_get_property (GIFunctionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FunctionBlob *blob = (FunctionBlob *)&base->typelib->data[base->offset];
-- GIInterfaceInfo *container = (GIInterfaceInfo *)base->container;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ FunctionBlob *blob = (FunctionBlob *)&rinfo->typelib->data[rinfo->offset];
-+ GIInterfaceInfo *container = (GIInterfaceInfo *)rinfo->container;
-
- return g_interface_info_get_property (container, blob->index);
- }
-@@ -628,20 +581,21 @@ g_function_info_get_property (GIFunctionInfo *info)
- GIVFuncInfo *
- g_function_info_get_vfunc (GIFunctionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FunctionBlob *blob = (FunctionBlob *)&base->typelib->data[base->offset];
-- GIInterfaceInfo *container = (GIInterfaceInfo *)base->container;
-+ GIRealInfo *rinfo = (GIRealInfo*)info;
-+ FunctionBlob *blob = (FunctionBlob *)&rinfo->typelib->data[rinfo->offset];
-+ GIInterfaceInfo *container = (GIInterfaceInfo *)rinfo->container;
-
- return g_interface_info_get_vfunc (container, blob->index);
- }
-
--
- /* GICallableInfo functions */
- static guint32
- signature_offset (GICallableInfo *info)
- {
-+ GIRealInfo *rinfo = (GIRealInfo*)info;
- int sigoff = -1;
-- switch (info->base.type)
-+
-+ switch (rinfo->type)
- {
- case GI_INFO_TYPE_FUNCTION:
- sigoff = G_STRUCT_OFFSET (FunctionBlob, signature);
-@@ -657,23 +611,32 @@ signature_offset (GICallableInfo *info)
- break;
- }
- if (sigoff >= 0)
-- return *(guint32 *)&info->base.typelib->data[info->base.offset + sigoff];
-+ return *(guint32 *)&rinfo->typelib->data[rinfo->offset + sigoff];
- return 0;
- }
-
- GITypeInfo *
- g_type_info_new (GIBaseInfo *container,
-- GTypelib *typelib,
-- guint32 offset)
-+ GTypelib *typelib,
-+ guint32 offset)
- {
- SimpleTypeBlob *type = (SimpleTypeBlob *)&typelib->data[offset];
-- GITypeInfo *type_info;
-
-- type_info = (GITypeInfo *) g_info_new (GI_INFO_TYPE_TYPE, container, typelib,
-- (type->flags.reserved == 0 && type->flags.reserved2 == 0) ? offset : type->offset);
-- type_info->is_embedded = FALSE;
-+ return (GITypeInfo *) g_info_new (GI_INFO_TYPE_TYPE, container, typelib,
-+ (type->flags.reserved == 0 && type->flags.reserved2 == 0) ? offset : type->offset);
-+}
-
-- return type_info;
-+static void
-+g_type_info_init (GIBaseInfo *info,
-+ GIBaseInfo *container,
-+ GTypelib *typelib,
-+ guint32 offset)
-+{
-+ GIRealInfo *rinfo = (GIRealInfo*)container;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&typelib->data[offset];
-+
-+ g_info_init ((GIRealInfo*)info, GI_INFO_TYPE_TYPE, rinfo->repository, container, typelib,
-+ (type->flags.reserved == 0 && type->flags.reserved2 == 0) ? offset : type->offset);
- }
-
- /**
-@@ -689,12 +652,36 @@ g_type_info_new (GIBaseInfo *container,
- GITypeInfo *
- g_callable_info_get_return_type (GICallableInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
- guint32 offset;
-
- offset = signature_offset (info);
-
-- return g_type_info_new (base, base->typelib, offset);
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib, offset);
-+}
-+
-+
-+/**
-+ * g_callable_info_load_return_type:
-+ * @info: a #GICallableInfo
-+ * @type: (out caller-allocates): Initialized with return type of @info
-+ *
-+ * Get information about a return value of callable; this
-+ * function is a variant of g_callable_info_get_return_type() designed for stack
-+ * allocation.
-+ *
-+ * The initialized @type must not be referenced after @info is deallocated.
-+ */
-+void
-+g_callable_info_load_return_type (GICallableInfo *info,
-+ GITypeInfo *type)
-+{
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ guint32 offset;
-+
-+ offset = signature_offset (info);
-+
-+ g_type_info_init (type, (GIBaseInfo*)info, rinfo->typelib, offset);
- }
-
- /**
-@@ -708,8 +695,8 @@ g_callable_info_get_return_type (GICallableInfo *info)
- gboolean
- g_callable_info_may_return_null (GICallableInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SignatureBlob *blob = (SignatureBlob *)&base->typelib->data[signature_offset (info)];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SignatureBlob *blob = (SignatureBlob *)&rinfo->typelib->data[signature_offset (info)];
-
- return blob->may_return_null;
- }
-@@ -726,8 +713,8 @@ g_callable_info_may_return_null (GICallableInfo *info)
- GITransfer
- g_callable_info_get_caller_owns (GICallableInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SignatureBlob *blob = (SignatureBlob *)&base->typelib->data[signature_offset (info)];
-+ GIRealInfo *rinfo = (GIRealInfo*) info;
-+ SignatureBlob *blob = (SignatureBlob *)&rinfo->typelib->data[signature_offset (info)];
-
- if (blob->caller_owns_return_value)
- return GI_TRANSFER_EVERYTHING;
-@@ -748,12 +735,12 @@ g_callable_info_get_caller_owns (GICallableInfo *info)
- gint
- g_callable_info_get_n_args (GICallableInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
- gint offset;
- SignatureBlob *blob;
-
- offset = signature_offset (info);
-- blob = (SignatureBlob *)&base->typelib->data[offset];
-+ blob = (SignatureBlob *)&rinfo->typelib->data[offset];
-
- return blob->n_arguments;
- }
-@@ -769,24 +756,51 @@ g_callable_info_get_n_args (GICallableInfo *info)
- */
- GIArgInfo *
- g_callable_info_get_arg (GICallableInfo *info,
-- gint n)
-+ gint n)
-+{
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ gint offset;
-+
-+ offset = signature_offset (info);
-+
-+ return (GIArgInfo *) g_info_new (GI_INFO_TYPE_ARG, (GIBaseInfo*)info, rinfo->typelib,
-+ offset + header->signature_blob_size + n * header->arg_blob_size);
-+}
-+
-+/**
-+ * g_callable_info_load_arg:
-+ * @info: a #GICallableInfo
-+ * @n: the argument index to fetch
-+ * @arg: (out caller-allocates): Initialize with argument number @n
-+ *
-+ * Get information about a particular argument of this callable; this
-+ * function is a variant of g_callable_info_get_arg() designed for stack
-+ * allocation.
-+ *
-+ * The initialized @arg must not be referenced after @info is deallocated.
-+ */
-+void
-+g_callable_info_load_arg (GICallableInfo *info,
-+ gint n,
-+ GIArgInfo *arg)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
- gint offset;
-
- offset = signature_offset (info);
-
-- return (GIArgInfo *) g_info_new (GI_INFO_TYPE_ARG, base, base->typelib,
-- offset + header->signature_blob_size + n * header->arg_blob_size);
-+ g_info_init ((GIRealInfo*)arg, GI_INFO_TYPE_ARG, rinfo->repository, (GIBaseInfo*)info, rinfo->typelib,
-+ offset + header->signature_blob_size + n * header->arg_blob_size);
- }
-
- /* GIArgInfo function */
- GIDirection
- g_arg_info_get_direction (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->in && blob->out)
- return GI_DIRECTION_INOUT;
-@@ -799,8 +813,8 @@ g_arg_info_get_direction (GIArgInfo *info)
- gboolean
- g_arg_info_is_return_value (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->return_value;
- }
-@@ -808,8 +822,8 @@ g_arg_info_is_return_value (GIArgInfo *info)
- gboolean
- g_arg_info_is_dipper (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->dipper;
- }
-@@ -817,8 +831,8 @@ g_arg_info_is_dipper (GIArgInfo *info)
- gboolean
- g_arg_info_is_optional (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->optional;
- }
-@@ -826,8 +840,8 @@ g_arg_info_is_optional (GIArgInfo *info)
- gboolean
- g_arg_info_may_be_null (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->allow_none;
- }
-@@ -835,8 +849,8 @@ g_arg_info_may_be_null (GIArgInfo *info)
- GITransfer
- g_arg_info_get_ownership_transfer (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->transfer_ownership)
- return GI_TRANSFER_EVERYTHING;
-@@ -849,8 +863,8 @@ g_arg_info_get_ownership_transfer (GIArgInfo *info)
- GIScopeType
- g_arg_info_get_scope (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->scope;
- }
-@@ -858,8 +872,8 @@ g_arg_info_get_scope (GIArgInfo *info)
- gint
- g_arg_info_get_closure (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->closure;
- }
-@@ -867,32 +881,57 @@ g_arg_info_get_closure (GIArgInfo *info)
- gint
- g_arg_info_get_destroy (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ArgBlob *blob = (ArgBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ArgBlob *blob = (ArgBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->destroy;
- }
-
-+/**
-+ * g_arg_info_get_type:
-+ * @info: A #GIArgInfo
-+ *
-+ * Returns: (transfer full): Information about the type of argument @info
-+ */
- GITypeInfo *
- g_arg_info_get_type (GIArgInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-
-- return g_type_info_new (base, base->typelib, base->offset + G_STRUCT_OFFSET (ArgBlob, arg_type));
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib, rinfo->offset + G_STRUCT_OFFSET (ArgBlob, arg_type));
-+}
-+
-+/**
-+ * g_arg_info_load_type:
-+ * @info: A #GIArgInfo
-+ * @type: (out caller-allocates): Initialized with information about type of @info
-+ *
-+ * Get information about a the type of given argument @info; this
-+ * function is a variant of g_arg_info_get_type() designed for stack
-+ * allocation.
-+ *
-+ * The initialized @type must not be referenced after @info is deallocated.
-+ */
-+void
-+g_arg_info_load_type (GIArgInfo *info,
-+ GITypeInfo *type)
-+{
-+ GIRealInfo *rinfo = (GIRealInfo*) info;
-+ g_type_info_init (type, (GIBaseInfo*)info, rinfo->typelib, rinfo->offset + G_STRUCT_OFFSET (ArgBlob, arg_type));
- }
-
- /* GITypeInfo functions */
- gboolean
- g_type_info_is_pointer (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (type->flags.reserved == 0 && type->flags.reserved2 == 0)
- return type->flags.pointer;
- else
- {
-- InterfaceTypeBlob *iface = (InterfaceTypeBlob *)&base->typelib->data[base->offset];
-+ InterfaceTypeBlob *iface = (InterfaceTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return iface->pointer;
- }
-@@ -901,16 +940,16 @@ g_type_info_is_pointer (GITypeInfo *info)
- GITypeTag
- g_type_info_get_tag (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- if (info->is_embedded)
-+ if (rinfo->type_is_embedded)
- return GI_TYPE_TAG_INTERFACE;
- else if (type->flags.reserved == 0 && type->flags.reserved2 == 0)
- return type->flags.tag;
- else
- {
-- InterfaceTypeBlob *iface = (InterfaceTypeBlob *)&base->typelib->data[base->offset];
-+ InterfaceTypeBlob *iface = (InterfaceTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return iface->tag;
- }
-@@ -918,49 +957,58 @@ g_type_info_get_tag (GITypeInfo *info)
-
- GITypeInfo *
- g_type_info_get_param_type (GITypeInfo *info,
-- gint n)
-+ gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- ParamTypeBlob *param = (ParamTypeBlob *)&base->typelib->data[base->offset];
-+ ParamTypeBlob *param = (ParamTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- switch (param->tag)
-- {
-- case GI_TYPE_TAG_ARRAY:
-- case GI_TYPE_TAG_GLIST:
-- case GI_TYPE_TAG_GSLIST:
-- case GI_TYPE_TAG_GHASH:
-- return g_type_info_new (base, base->typelib,
-- base->offset + sizeof (ParamTypeBlob)
-- + sizeof (SimpleTypeBlob) * n);
-- break;
--
-- default: ;
-- }
-+ {
-+ case GI_TYPE_TAG_ARRAY:
-+ case GI_TYPE_TAG_GLIST:
-+ case GI_TYPE_TAG_GSLIST:
-+ case GI_TYPE_TAG_GHASH:
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib,
-+ rinfo->offset + sizeof (ParamTypeBlob)
-+ + sizeof (SimpleTypeBlob) * n);
-+ break;
-+ default:
-+ break;
-+ }
- }
--
-+
- return NULL;
- }
-
-+/**
-+ * g_type_info_get_interface:
-+ * @info: A #GITypeInfo
-+ *
-+ * For types which have #GI_TYPE_TAG_INTERFACE such as GObjects and boxed values,
-+ * this function returns full information about the referenced type. You can then
-+ * inspect the type of the returned #GIBaseInfo to further query whether it is
-+ * a concrete GObject, a GInterface, a structure, etc. using g_base_info_get_type().
-+ */
- GIBaseInfo *
- g_type_info_get_interface (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- if (info->is_embedded)
-- return (GIBaseInfo *) g_info_new (type->offset, base, base->typelib,
-- base->offset);
-+ if (rinfo->type_is_embedded)
-+ return (GIBaseInfo *) g_info_new (type->offset, (GIBaseInfo*)info, rinfo->typelib,
-+ rinfo->offset);
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- InterfaceTypeBlob *blob = (InterfaceTypeBlob *)&base->typelib->data[base->offset];
-+ InterfaceTypeBlob *blob = (InterfaceTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->tag == GI_TYPE_TAG_INTERFACE)
-- return g_info_from_entry (base->repository, base->typelib, blob->interface);
-+ return g_info_from_entry (rinfo->repository, rinfo->typelib, blob->interface);
- }
-
- return NULL;
-@@ -969,12 +1017,12 @@ g_type_info_get_interface (GITypeInfo *info)
- gint
- g_type_info_get_array_length (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- ArrayTypeBlob *blob = (ArrayTypeBlob *)&base->typelib->data[base->offset];
-+ ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->tag == GI_TYPE_TAG_ARRAY)
- {
-@@ -989,12 +1037,12 @@ g_type_info_get_array_length (GITypeInfo *info)
- gint
- g_type_info_get_array_fixed_size (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- ArrayTypeBlob *blob = (ArrayTypeBlob *)&base->typelib->data[base->offset];
-+ ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->tag == GI_TYPE_TAG_ARRAY)
- {
-@@ -1009,12 +1057,12 @@ g_type_info_get_array_fixed_size (GITypeInfo *info)
- gboolean
- g_type_info_is_zero_terminated (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- ArrayTypeBlob *blob = (ArrayTypeBlob *)&base->typelib->data[base->offset];
-+ ArrayTypeBlob *blob = (ArrayTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->tag == GI_TYPE_TAG_ARRAY)
- return blob->zero_terminated;
-@@ -1026,12 +1074,12 @@ g_type_info_is_zero_terminated (GITypeInfo *info)
- gint
- g_type_info_get_n_error_domains (GITypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- ErrorTypeBlob *blob = (ErrorTypeBlob *)&base->typelib->data[base->offset];
-+ ErrorTypeBlob *blob = (ErrorTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->tag == GI_TYPE_TAG_ERROR)
- return blob->n_domains;
-@@ -1042,19 +1090,19 @@ g_type_info_get_n_error_domains (GITypeInfo *info)
-
- GIErrorDomainInfo *
- g_type_info_get_error_domain (GITypeInfo *info,
-- gint n)
-+ gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
- {
-- ErrorTypeBlob *blob = (ErrorTypeBlob *)&base->typelib->data[base->offset];
-+ ErrorTypeBlob *blob = (ErrorTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->tag == GI_TYPE_TAG_ERROR)
-- return (GIErrorDomainInfo *) g_info_from_entry (base->repository,
-- base->typelib,
-- blob->domains[n]);
-+ return (GIErrorDomainInfo *) g_info_from_entry (rinfo->repository,
-+ rinfo->typelib,
-+ blob->domains[n]);
- }
-
- return NULL;
-@@ -1065,20 +1113,20 @@ g_type_info_get_error_domain (GITypeInfo *info,
- const gchar *
- g_error_domain_info_get_quark (GIErrorDomainInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ErrorDomainBlob *blob = (ErrorDomainBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ErrorDomainBlob *blob = (ErrorDomainBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (base->typelib, blob->get_quark);
-+ return g_typelib_get_string (rinfo->typelib, blob->get_quark);
- }
-
- GIInterfaceInfo *
- g_error_domain_info_get_codes (GIErrorDomainInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ErrorDomainBlob *blob = (ErrorDomainBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ErrorDomainBlob *blob = (ErrorDomainBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return (GIInterfaceInfo *) g_info_from_entry (base->repository,
-- base->typelib, blob->error_codes);
-+ return (GIInterfaceInfo *) g_info_from_entry (rinfo->repository,
-+ rinfo->typelib, blob->error_codes);
- }
-
-
-@@ -1086,8 +1134,8 @@ g_error_domain_info_get_codes (GIErrorDomainInfo *info)
- glong
- g_value_info_get_value (GIValueInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ValueBlob *blob = (ValueBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ValueBlob *blob = (ValueBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return (glong)blob->value;
- }
-@@ -1098,8 +1146,8 @@ g_field_info_get_flags (GIFieldInfo *info)
- {
- GIFieldInfoFlags flags;
-
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FieldBlob *blob = (FieldBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
-
- flags = 0;
-
-@@ -1115,8 +1163,8 @@ g_field_info_get_flags (GIFieldInfo *info)
- gint
- g_field_info_get_size (GIFieldInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FieldBlob *blob = (FieldBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->bits;
- }
-@@ -1124,8 +1172,8 @@ g_field_info_get_size (GIFieldInfo *info)
- gint
- g_field_info_get_offset (GIFieldInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- FieldBlob *blob = (FieldBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->struct_offset;
- }
-@@ -1133,33 +1181,33 @@ g_field_info_get_offset (GIFieldInfo *info)
- GITypeInfo *
- g_field_info_get_type (GIFieldInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- FieldBlob *blob = (FieldBlob *)&base->typelib->data[base->offset];
-- GITypeInfo *type_info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ FieldBlob *blob = (FieldBlob *)&rinfo->typelib->data[rinfo->offset];
-+ GIRealInfo *type_info;
-
- if (blob->has_embedded_type)
- {
-- type_info = (GITypeInfo *) g_info_new (GI_INFO_TYPE_TYPE,
-- (GIBaseInfo*)info, base->typelib,
-- base->offset + header->field_blob_size);
-- type_info->is_embedded = TRUE;
-+ type_info = (GIRealInfo *) g_info_new (GI_INFO_TYPE_TYPE,
-+ (GIBaseInfo*)info, rinfo->typelib,
-+ rinfo->offset + header->field_blob_size);
-+ type_info->type_is_embedded = TRUE;
- }
- else
-- return g_type_info_new (base, base->typelib, base->offset + G_STRUCT_OFFSET (FieldBlob, type));
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib, rinfo->offset + G_STRUCT_OFFSET (FieldBlob, type));
-
-- return type_info;
-+ return (GIBaseInfo*)type_info;
- }
-
- /* GIRegisteredTypeInfo functions */
- const gchar *
- g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- RegisteredTypeBlob *blob = (RegisteredTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ RegisteredTypeBlob *blob = (RegisteredTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->gtype_name)
-- return g_typelib_get_string (base->typelib, blob->gtype_name);
-+ return g_typelib_get_string (rinfo->typelib, blob->gtype_name);
-
- return NULL;
- }
-@@ -1167,11 +1215,11 @@ g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info)
- const gchar *
- g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- RegisteredTypeBlob *blob = (RegisteredTypeBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ RegisteredTypeBlob *blob = (RegisteredTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->gtype_init)
-- return g_typelib_get_string (base->typelib, blob->gtype_init);
-+ return g_typelib_get_string (rinfo->typelib, blob->gtype_init);
-
- return NULL;
- }
-@@ -1181,6 +1229,7 @@ g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
- {
- const char *type_init;
- GType (* get_type_func) (void);
-+ GIRealInfo *rinfo = (GIRealInfo*)info;
-
- type_init = g_registered_type_info_get_type_init (info);
-
-@@ -1190,7 +1239,7 @@ g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
- return G_TYPE_OBJECT;
-
- get_type_func = NULL;
-- if (!g_typelib_symbol (((GIBaseInfo*)info)->typelib,
-+ if (!g_typelib_symbol (rinfo->typelib,
- type_init,
- (void**) &get_type_func))
- return G_TYPE_NONE;
-@@ -1202,8 +1251,8 @@ g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
- gint
- g_struct_info_get_n_fields (GIStructInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_fields;
- }
-@@ -1212,15 +1261,15 @@ static gint32
- g_struct_get_field_offset (GIStructInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- guint32 offset = base->offset + header->struct_blob_size;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ guint32 offset = rinfo->offset + header->struct_blob_size;
- gint i;
- FieldBlob *field_blob;
-
- for (i = 0; i < n; i++)
- {
-- field_blob = (FieldBlob *)&base->typelib->data[offset];
-+ field_blob = (FieldBlob *)&rinfo->typelib->data[offset];
- offset += header->field_blob_size;
- if (field_blob->has_embedded_type)
- offset += header->callback_blob_size;
-@@ -1231,19 +1280,19 @@ g_struct_get_field_offset (GIStructInfo *info,
-
- GIFieldInfo *
- g_struct_info_get_field (GIStructInfo *info,
-- gint n)
-+ gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-
-- return (GIFieldInfo *) g_info_new (GI_INFO_TYPE_FIELD, base, base->typelib,
-- g_struct_get_field_offset (info, n));
-+ return (GIFieldInfo *) g_info_new (GI_INFO_TYPE_FIELD, (GIBaseInfo*)info, rinfo->typelib,
-+ g_struct_get_field_offset (info, n));
- }
-
- gint
- g_struct_info_get_n_methods (GIStructInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_methods;
- }
-@@ -1252,35 +1301,35 @@ GIFunctionInfo *
- g_struct_info_get_method (GIStructInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-+ Header *header = (Header *)rinfo->typelib->data;
- gint offset;
-
-- offset = g_struct_get_field_offset (info, blob->n_fields)
-- + n * header->function_blob_size;
-- return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, base,
-- base->typelib, offset);
-+ offset = g_struct_get_field_offset (info, blob->n_fields) + n * header->function_blob_size;
-+ return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- static GIFunctionInfo *
- find_method (GIBaseInfo *base,
-- guint32 offset,
-- gint n_methods,
-- const gchar *name)
-+ guint32 offset,
-+ gint n_methods,
-+ const gchar *name)
- {
- /* FIXME hash */
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo*)base;
-+ Header *header = (Header *)rinfo->typelib->data;
- gint i;
-
- for (i = 0; i < n_methods; i++)
- {
-- FunctionBlob *fblob = (FunctionBlob *)&base->typelib->data[offset];
-- const gchar *fname = (const gchar *)&base->typelib->data[fblob->name];
-+ FunctionBlob *fblob = (FunctionBlob *)&rinfo->typelib->data[offset];
-+ const gchar *fname = (const gchar *)&rinfo->typelib->data[fblob->name];
-
- if (strcmp (name, fname) == 0)
-- return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, base,
-- base->typelib, offset);
-+ return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, base,
-+ rinfo->typelib, offset);
-
- offset += header->function_blob_size;
- }
-@@ -1293,21 +1342,21 @@ g_struct_info_find_method (GIStructInfo *info,
- const gchar *name)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->struct_blob_size
-+ offset = rinfo->offset + header->struct_blob_size
- + blob->n_fields * header->field_blob_size;
-
-- return find_method (base, offset, blob->n_methods, name);
-+ return find_method ((GIBaseInfo*)info, offset, blob->n_methods, name);
- }
-
- gsize
- g_struct_info_get_size (GIStructInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->size;
- }
-@@ -1315,8 +1364,8 @@ g_struct_info_get_size (GIStructInfo *info)
- gsize
- g_struct_info_get_alignment (GIStructInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->alignment;
- }
-@@ -1334,8 +1383,8 @@ g_struct_info_get_alignment (GIStructInfo *info)
- gboolean
- g_struct_info_is_gtype_struct (GIStructInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- StructBlob *blob = (StructBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ StructBlob *blob = (StructBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->is_gtype_struct;
- }
-@@ -1343,8 +1392,8 @@ g_struct_info_is_gtype_struct (GIStructInfo *info)
- gint
- g_enum_info_get_n_values (GIEnumInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- EnumBlob *blob = (EnumBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ EnumBlob *blob = (EnumBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_values;
- }
-@@ -1353,13 +1402,13 @@ GIValueInfo *
- g_enum_info_get_value (GIEnumInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
- gint offset;
-
-- offset = base->offset + header->enum_blob_size
-+ offset = rinfo->offset + header->enum_blob_size
- + n * header->value_blob_size;
-- return (GIValueInfo *) g_info_new (GI_INFO_TYPE_VALUE, base, base->typelib, offset);
-+ return (GIValueInfo *) g_info_new (GI_INFO_TYPE_VALUE, (GIBaseInfo*)info, rinfo->typelib, offset);
- }
-
- /**
-@@ -1378,8 +1427,8 @@ g_enum_info_get_value (GIEnumInfo *info,
- GITypeTag
- g_enum_info_get_storage_type (GIEnumInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- EnumBlob *blob = (EnumBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ EnumBlob *blob = (EnumBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->storage_type;
- }
-@@ -1388,12 +1437,12 @@ g_enum_info_get_storage_type (GIEnumInfo *info)
- GIObjectInfo *
- g_object_info_get_parent (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->parent)
-- return (GIObjectInfo *) g_info_from_entry (base->repository,
-- base->typelib, blob->parent);
-+ return (GIObjectInfo *) g_info_from_entry (rinfo->repository,
-+ rinfo->typelib, blob->parent);
- else
- return NULL;
- }
-@@ -1401,34 +1450,34 @@ g_object_info_get_parent (GIObjectInfo *info)
- gboolean
- g_object_info_get_abstract (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
- return blob->abstract != 0;
- }
-
- const gchar *
- g_object_info_get_type_name (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (base->typelib, blob->gtype_name);
-+ return g_typelib_get_string (rinfo->typelib, blob->gtype_name);
- }
-
- const gchar *
- g_object_info_get_type_init (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_typelib_get_string (base->typelib, blob->gtype_init);
-+ return g_typelib_get_string (rinfo->typelib, blob->gtype_init);
- }
-
- gint
- g_object_info_get_n_interfaces (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_interfaces;
- }
-@@ -1437,18 +1486,18 @@ GIInterfaceInfo *
- g_object_info_get_interface (GIObjectInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return (GIInterfaceInfo *) g_info_from_entry (base->repository,
-- base->typelib, blob->interfaces[n]);
-+ return (GIInterfaceInfo *) g_info_from_entry (rinfo->repository,
-+ rinfo->typelib, blob->interfaces[n]);
- }
-
- gint
- g_object_info_get_n_fields (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_fields;
- }
-@@ -1458,22 +1507,22 @@ g_object_info_get_field (GIObjectInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + n * header->field_blob_size;
-
-- return (GIFieldInfo *) g_info_new (GI_INFO_TYPE_FIELD, base, base->typelib, offset);
-+ return (GIFieldInfo *) g_info_new (GI_INFO_TYPE_FIELD, (GIBaseInfo*)info, rinfo->typelib, offset);
- }
-
- gint
- g_object_info_get_n_properties (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_properties;
- }
-@@ -1483,24 +1532,24 @@ g_object_info_get_property (GIObjectInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size
- + n * header->property_blob_size;
-
-- return (GIPropertyInfo *) g_info_new (GI_INFO_TYPE_PROPERTY, base,
-- base->typelib, offset);
-+ return (GIPropertyInfo *) g_info_new (GI_INFO_TYPE_PROPERTY, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- gint
- g_object_info_get_n_methods (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_methods;
- }
-@@ -1510,18 +1559,18 @@ g_object_info_get_method (GIObjectInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size
- + blob->n_properties * header->property_blob_size
- + n * header->function_blob_size;
-
-- return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, base,
-- base->typelib, offset);
-+ return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- GIFunctionInfo *
-@@ -1529,23 +1578,23 @@ g_object_info_find_method (GIObjectInfo *info,
- const gchar *name)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size +
- + blob->n_properties * header->property_blob_size;
-
-- return find_method (base, offset, blob->n_methods, name);
-+ return find_method ((GIBaseInfo*)info, offset, blob->n_methods, name);
- }
-
- gint
- g_object_info_get_n_signals (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_signals;
- }
-@@ -1555,26 +1604,26 @@ g_object_info_get_signal (GIObjectInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size
- + blob->n_properties * header->property_blob_size
- + blob->n_methods * header->function_blob_size
- + n * header->signal_blob_size;
-
-- return (GISignalInfo *) g_info_new (GI_INFO_TYPE_SIGNAL, base,
-- base->typelib, offset);
-+ return (GISignalInfo *) g_info_new (GI_INFO_TYPE_SIGNAL, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- gint
- g_object_info_get_n_vfuncs (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_vfuncs;
- }
-@@ -1584,11 +1633,11 @@ g_object_info_get_vfunc (GIObjectInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size
- + blob->n_properties * header->property_blob_size
-@@ -1596,28 +1645,28 @@ g_object_info_get_vfunc (GIObjectInfo *info,
- + blob->n_signals * header->signal_blob_size
- + n * header->vfunc_blob_size;
-
-- return (GIVFuncInfo *) g_info_new (GI_INFO_TYPE_VFUNC, base,
-- base->typelib, offset);
-+ return (GIVFuncInfo *) g_info_new (GI_INFO_TYPE_VFUNC, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- static GIVFuncInfo *
--find_vfunc (GIBaseInfo *base,
-+find_vfunc (GIRealInfo *rinfo,
- guint32 offset,
- gint n_vfuncs,
- const gchar *name)
- {
- /* FIXME hash */
-- Header *header = (Header *)base->typelib->data;
-+ Header *header = (Header *)rinfo->typelib->data;
- gint i;
-
- for (i = 0; i < n_vfuncs; i++)
- {
-- VFuncBlob *fblob = (VFuncBlob *)&base->typelib->data[offset];
-- const gchar *fname = (const gchar *)&base->typelib->data[fblob->name];
-+ VFuncBlob *fblob = (VFuncBlob *)&rinfo->typelib->data[offset];
-+ const gchar *fname = (const gchar *)&rinfo->typelib->data[fblob->name];
-
- if (strcmp (name, fname) == 0)
-- return (GIVFuncInfo *) g_info_new (GI_INFO_TYPE_VFUNC, base,
-- base->typelib, offset);
-+ return (GIVFuncInfo *) g_info_new (GI_INFO_TYPE_VFUNC, (GIBaseInfo*) rinfo,
-+ rinfo->typelib, offset);
-
- offset += header->vfunc_blob_size;
- }
-@@ -1643,25 +1692,25 @@ g_object_info_find_vfunc (GIObjectInfo *info,
- const gchar *name)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size
- + blob->n_properties * header->property_blob_size
- + blob->n_methods * header->function_blob_size
- + blob->n_signals * header->signal_blob_size;
-
-- return find_vfunc (base, offset, blob->n_vfuncs, name);
-+ return find_vfunc (rinfo, offset, blob->n_vfuncs, name);
- }
-
- gint
- g_object_info_get_n_constants (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_constants;
- }
-@@ -1671,11 +1720,11 @@ g_object_info_get_constant (GIObjectInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->object_blob_size
-+ offset = rinfo->offset + header->object_blob_size
- + (blob->n_interfaces + blob->n_interfaces % 2) * 2
- + blob->n_fields * header->field_blob_size
- + blob->n_properties * header->property_blob_size
-@@ -1684,8 +1733,8 @@ g_object_info_get_constant (GIObjectInfo *info,
- + blob->n_vfuncs * header->vfunc_blob_size
- + n * header->constant_blob_size;
-
-- return (GIConstantInfo *) g_info_new (GI_INFO_TYPE_CONSTANT, base,
-- base->typelib, offset);
-+ return (GIConstantInfo *) g_info_new (GI_INFO_TYPE_CONSTANT, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- /**
-@@ -1700,12 +1749,12 @@ g_object_info_get_constant (GIObjectInfo *info,
- GIStructInfo *
- g_object_info_get_class_struct (GIObjectInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ObjectBlob *blob = (ObjectBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ObjectBlob *blob = (ObjectBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->gtype_struct)
-- return (GIStructInfo *) g_info_from_entry (base->repository,
-- base->typelib, blob->gtype_struct);
-+ return (GIStructInfo *) g_info_from_entry (rinfo->repository,
-+ rinfo->typelib, blob->gtype_struct);
- else
- return NULL;
- }
-@@ -1714,8 +1763,8 @@ g_object_info_get_class_struct (GIObjectInfo *info)
- gint
- g_interface_info_get_n_prerequisites (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_prerequisites;
- }
-@@ -1724,19 +1773,19 @@ GIBaseInfo *
- g_interface_info_get_prerequisite (GIInterfaceInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- return g_info_from_entry (base->repository,
-- base->typelib, blob->prerequisites[n]);
-+ return g_info_from_entry (rinfo->repository,
-+ rinfo->typelib, blob->prerequisites[n]);
- }
-
-
- gint
- g_interface_info_get_n_properties (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_properties;
- }
-@@ -1746,23 +1795,23 @@ g_interface_info_get_property (GIInterfaceInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + (blob->n_prerequisites % 2)) * 2
- + n * header->property_blob_size;
-
-- return (GIPropertyInfo *) g_info_new (GI_INFO_TYPE_PROPERTY, base,
-- base->typelib, offset);
-+ return (GIPropertyInfo *) g_info_new (GI_INFO_TYPE_PROPERTY, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- gint
- g_interface_info_get_n_methods (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_methods;
- }
-@@ -1772,17 +1821,17 @@ g_interface_info_get_method (GIInterfaceInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + (blob->n_prerequisites % 2)) * 2
- + blob->n_properties * header->property_blob_size
- + n * header->function_blob_size;
-
-- return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, base,
-- base->typelib, offset);
-+ return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- GIFunctionInfo *
-@@ -1790,22 +1839,22 @@ g_interface_info_find_method (GIInterfaceInfo *info,
- const gchar *name)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + (blob->n_prerequisites % 2)) * 2
- + blob->n_properties * header->property_blob_size;
-
-- return find_method (base, offset, blob->n_methods, name);
-+ return find_method ((GIBaseInfo*)info, offset, blob->n_methods, name);
- }
-
- gint
- g_interface_info_get_n_signals (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_signals;
- }
-@@ -1815,25 +1864,25 @@ g_interface_info_get_signal (GIInterfaceInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + (blob->n_prerequisites % 2)) * 2
- + blob->n_properties * header->property_blob_size
- + blob->n_methods * header->function_blob_size
- + n * header->signal_blob_size;
-
-- return (GISignalInfo *) g_info_new (GI_INFO_TYPE_SIGNAL, base,
-- base->typelib, offset);
-+ return (GISignalInfo *) g_info_new (GI_INFO_TYPE_SIGNAL, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- gint
- g_interface_info_get_n_vfuncs (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_vfuncs;
- }
-@@ -1843,19 +1892,19 @@ g_interface_info_get_vfunc (GIInterfaceInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + (blob->n_prerequisites % 2)) * 2
- + blob->n_properties * header->property_blob_size
- + blob->n_methods * header->function_blob_size
- + blob->n_signals * header->signal_blob_size
- + n * header->vfunc_blob_size;
-
-- return (GIVFuncInfo *) g_info_new (GI_INFO_TYPE_VFUNC, base,
-- base->typelib, offset);
-+ return (GIVFuncInfo *) g_info_new (GI_INFO_TYPE_VFUNC, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- /**
-@@ -1873,24 +1922,24 @@ g_interface_info_find_vfunc (GIInterfaceInfo *info,
- const gchar *name)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + blob->n_prerequisites % 2) * 2
- + blob->n_properties * header->property_blob_size
- + blob->n_methods * header->function_blob_size
- + blob->n_signals * header->signal_blob_size;
-
-- return find_vfunc (base, offset, blob->n_vfuncs, name);
-+ return find_vfunc (rinfo, offset, blob->n_vfuncs, name);
- }
-
- gint
- g_interface_info_get_n_constants (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_constants;
- }
-@@ -1900,11 +1949,11 @@ g_interface_info_get_constant (GIInterfaceInfo *info,
- gint n)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->interface_blob_size
-+ offset = rinfo->offset + header->interface_blob_size
- + (blob->n_prerequisites + (blob->n_prerequisites % 2)) * 2
- + blob->n_properties * header->property_blob_size
- + blob->n_methods * header->function_blob_size
-@@ -1912,8 +1961,8 @@ g_interface_info_get_constant (GIInterfaceInfo *info,
- + blob->n_vfuncs * header->vfunc_blob_size
- + n * header->constant_blob_size;
-
-- return (GIConstantInfo *) g_info_new (GI_INFO_TYPE_CONSTANT, base,
-- base->typelib, offset);
-+ return (GIConstantInfo *) g_info_new (GI_INFO_TYPE_CONSTANT, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- /**
-@@ -1927,12 +1976,12 @@ g_interface_info_get_constant (GIInterfaceInfo *info,
- GIStructInfo *
- g_interface_info_get_iface_struct (GIInterfaceInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- InterfaceBlob *blob = (InterfaceBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ InterfaceBlob *blob = (InterfaceBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->gtype_struct)
-- return (GIStructInfo *) g_info_from_entry (base->repository,
-- base->typelib, blob->gtype_struct);
-+ return (GIStructInfo *) g_info_from_entry (rinfo->repository,
-+ rinfo->typelib, blob->gtype_struct);
- else
- return NULL;
- }
-@@ -1942,8 +1991,8 @@ GParamFlags
- g_property_info_get_flags (GIPropertyInfo *info)
- {
- GParamFlags flags;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- PropertyBlob *blob = (PropertyBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ PropertyBlob *blob = (PropertyBlob *)&rinfo->typelib->data[rinfo->offset];
-
- flags = 0;
-
-@@ -1965,9 +2014,9 @@ g_property_info_get_flags (GIPropertyInfo *info)
- GITypeInfo *
- g_property_info_get_type (GIPropertyInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-
-- return g_type_info_new (base, base->typelib, base->offset + G_STRUCT_OFFSET (PropertyBlob, type));
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib, rinfo->offset + G_STRUCT_OFFSET (PropertyBlob, type));
- }
-
-
-@@ -1977,8 +2026,8 @@ g_signal_info_get_flags (GISignalInfo *info)
- {
- GSignalFlags flags;
-
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SignalBlob *blob = (SignalBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SignalBlob *blob = (SignalBlob *)&rinfo->typelib->data[rinfo->offset];
-
- flags = 0;
-
-@@ -2009,11 +2058,11 @@ g_signal_info_get_flags (GISignalInfo *info)
- GIVFuncInfo *
- g_signal_info_get_class_closure (GISignalInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SignalBlob *blob = (SignalBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SignalBlob *blob = (SignalBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->has_class_closure)
-- return g_interface_info_get_vfunc ((GIInterfaceInfo *)base->container, blob->class_closure);
-+ return g_interface_info_get_vfunc ((GIInterfaceInfo *)rinfo->container, blob->class_closure);
-
- return NULL;
- }
-@@ -2021,8 +2070,8 @@ g_signal_info_get_class_closure (GISignalInfo *info)
- gboolean
- g_signal_info_true_stops_emit (GISignalInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- SignalBlob *blob = (SignalBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ SignalBlob *blob = (SignalBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->true_stops_emit;
- }
-@@ -2033,8 +2082,8 @@ g_vfunc_info_get_flags (GIVFuncInfo *info)
- {
- GIVFuncInfoFlags flags;
-
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- VFuncBlob *blob = (VFuncBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ VFuncBlob *blob = (VFuncBlob *)&rinfo->typelib->data[rinfo->offset];
-
- flags = 0;
-
-@@ -2053,8 +2102,8 @@ g_vfunc_info_get_flags (GIVFuncInfo *info)
- gint
- g_vfunc_info_get_offset (GIVFuncInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- VFuncBlob *blob = (VFuncBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ VFuncBlob *blob = (VFuncBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->struct_offset;
- }
-@@ -2062,11 +2111,11 @@ g_vfunc_info_get_offset (GIVFuncInfo *info)
- GISignalInfo *
- g_vfunc_info_get_signal (GIVFuncInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- VFuncBlob *blob = (VFuncBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ VFuncBlob *blob = (VFuncBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->class_closure)
-- return g_interface_info_get_signal ((GIInterfaceInfo *)base->container, blob->signal);
-+ return g_interface_info_get_signal ((GIInterfaceInfo *)rinfo->container, blob->signal);
-
- return NULL;
- }
-@@ -2085,9 +2134,9 @@ g_vfunc_info_get_signal (GIVFuncInfo *info)
- GIFunctionInfo *
- g_vfunc_info_get_invoker (GIVFuncInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- VFuncBlob *blob = (VFuncBlob *)&base->typelib->data[base->offset];
-- GIBaseInfo *container = base->container;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ VFuncBlob *blob = (VFuncBlob *)&rinfo->typelib->data[rinfo->offset];
-+ GIBaseInfo *container = rinfo->container;
- GIInfoType parent_type;
-
- /* 1023 = 0x3ff is the maximum of the 10 bits for invoker index */
-@@ -2107,80 +2156,80 @@ g_vfunc_info_get_invoker (GIVFuncInfo *info)
- GITypeInfo *
- g_constant_info_get_type (GIConstantInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-
-- return g_type_info_new (base, base->typelib, base->offset + 8);
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib, rinfo->offset + 8);
- }
-
- gint
- g_constant_info_get_value (GIConstantInfo *info,
- GArgument *value)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- ConstantBlob *blob = (ConstantBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ ConstantBlob *blob = (ConstantBlob *)&rinfo->typelib->data[rinfo->offset];
-
- /* FIXME non-basic types ? */
- if (blob->type.flags.reserved == 0 && blob->type.flags.reserved2 == 0)
- {
- if (blob->type.flags.pointer)
-- value->v_pointer = g_memdup (&base->typelib->data[blob->offset], blob->size);
-+ value->v_pointer = g_memdup (&rinfo->typelib->data[blob->offset], blob->size);
- else
- {
- switch (blob->type.flags.tag)
- {
- case GI_TYPE_TAG_BOOLEAN:
-- value->v_boolean = *(gboolean*)&base->typelib->data[blob->offset];
-+ value->v_boolean = *(gboolean*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_INT8:
-- value->v_int8 = *(gint8*)&base->typelib->data[blob->offset];
-+ value->v_int8 = *(gint8*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_UINT8:
-- value->v_uint8 = *(guint8*)&base->typelib->data[blob->offset];
-+ value->v_uint8 = *(guint8*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_INT16:
-- value->v_int16 = *(gint16*)&base->typelib->data[blob->offset];
-+ value->v_int16 = *(gint16*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_UINT16:
-- value->v_uint16 = *(guint16*)&base->typelib->data[blob->offset];
-+ value->v_uint16 = *(guint16*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_INT32:
-- value->v_int32 = *(gint32*)&base->typelib->data[blob->offset];
-+ value->v_int32 = *(gint32*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_UINT32:
-- value->v_uint32 = *(guint32*)&base->typelib->data[blob->offset];
-+ value->v_uint32 = *(guint32*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_INT64:
-- value->v_int64 = *(gint64*)&base->typelib->data[blob->offset];
-+ value->v_int64 = *(gint64*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_UINT64:
-- value->v_uint64 = *(guint64*)&base->typelib->data[blob->offset];
-+ value->v_uint64 = *(guint64*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_FLOAT:
-- value->v_float = *(gfloat*)&base->typelib->data[blob->offset];
-+ value->v_float = *(gfloat*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_DOUBLE:
-- value->v_double = *(gdouble*)&base->typelib->data[blob->offset];
-+ value->v_double = *(gdouble*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_TIME_T:
-- value->v_long = *(long*)&base->typelib->data[blob->offset];
-+ value->v_long = *(long*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_SHORT:
-- value->v_short = *(gshort*)&base->typelib->data[blob->offset];
-+ value->v_short = *(gshort*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_USHORT:
-- value->v_ushort = *(gushort*)&base->typelib->data[blob->offset];
-+ value->v_ushort = *(gushort*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_INT:
-- value->v_int = *(gint*)&base->typelib->data[blob->offset];
-+ value->v_int = *(gint*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_UINT:
-- value->v_uint = *(guint*)&base->typelib->data[blob->offset];
-+ value->v_uint = *(guint*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_LONG:
-- value->v_long = *(glong*)&base->typelib->data[blob->offset];
-+ value->v_long = *(glong*)&rinfo->typelib->data[blob->offset];
- break;
- case GI_TYPE_TAG_ULONG:
-- value->v_ulong = *(gulong*)&base->typelib->data[blob->offset];
-+ value->v_ulong = *(gulong*)&rinfo->typelib->data[blob->offset];
- break;
- }
- }
-@@ -2193,8 +2242,8 @@ g_constant_info_get_value (GIConstantInfo *info,
- gint
- g_union_info_get_n_fields (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_fields;
- }
-@@ -2203,19 +2252,19 @@ GIFieldInfo *
- g_union_info_get_field (GIUnionInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-
-- return (GIFieldInfo *) g_info_new (GI_INFO_TYPE_FIELD, base, base->typelib,
-- base->offset + header->union_blob_size +
-+ return (GIFieldInfo *) g_info_new (GI_INFO_TYPE_FIELD, (GIBaseInfo*)info, rinfo->typelib,
-+ rinfo->offset + header->union_blob_size +
- n * header->field_blob_size);
- }
-
- gint
- g_union_info_get_n_methods (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->n_functions;
- }
-@@ -2224,23 +2273,23 @@ GIFunctionInfo *
- g_union_info_get_method (GIUnionInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-- Header *header = (Header *)base->typelib->data;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-+ Header *header = (Header *)rinfo->typelib->data;
- gint offset;
-
-- offset = base->offset + header->union_blob_size
-+ offset = rinfo->offset + header->union_blob_size
- + blob->n_fields * header->field_blob_size
- + n * header->function_blob_size;
-- return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, base,
-- base->typelib, offset);
-+ return (GIFunctionInfo *) g_info_new (GI_INFO_TYPE_FUNCTION, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- gboolean
- g_union_info_is_discriminated (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->discriminated;
- }
-@@ -2248,8 +2297,8 @@ g_union_info_is_discriminated (GIUnionInfo *info)
- gint
- g_union_info_get_discriminator_offset (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->discriminator_offset;
- }
-@@ -2257,30 +2306,30 @@ g_union_info_get_discriminator_offset (GIUnionInfo *info)
- GITypeInfo *
- g_union_info_get_discriminator_type (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-
-- return g_type_info_new (base, base->typelib, base->offset + 24);
-+ return g_type_info_new ((GIBaseInfo*)info, rinfo->typelib, rinfo->offset + 24);
- }
-
- GIConstantInfo *
- g_union_info_get_discriminator (GIUnionInfo *info,
- gint n)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- if (blob->discriminated)
- {
-- Header *header = (Header *)base->typelib->data;
-+ Header *header = (Header *)rinfo->typelib->data;
- gint offset;
-
-- offset = base->offset + header->union_blob_size
-+ offset = rinfo->offset + header->union_blob_size
- + blob->n_fields * header->field_blob_size
- + blob->n_functions * header->function_blob_size
- + n * header->constant_blob_size;
-
-- return (GIConstantInfo *) g_info_new (GI_INFO_TYPE_CONSTANT, base,
-- base->typelib, offset);
-+ return (GIConstantInfo *) g_info_new (GI_INFO_TYPE_CONSTANT, (GIBaseInfo*)info,
-+ rinfo->typelib, offset);
- }
-
- return NULL;
-@@ -2291,21 +2340,21 @@ g_union_info_find_method (GIUnionInfo *info,
- const gchar *name)
- {
- gint offset;
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- Header *header = (Header *)base->typelib->data;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ Header *header = (Header *)rinfo->typelib->data;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
-- offset = base->offset + header->union_blob_size
-+ offset = rinfo->offset + header->union_blob_size
- + blob->n_fields * header->field_blob_size;
-
-- return find_method (base, offset, blob->n_functions, name);
-+ return find_method ((GIBaseInfo*)info, offset, blob->n_functions, name);
- }
-
- gsize
- g_union_info_get_size (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->size;
- }
-@@ -2313,8 +2362,8 @@ g_union_info_get_size (GIUnionInfo *info)
- gsize
- g_union_info_get_alignment (GIUnionInfo *info)
- {
-- GIBaseInfo *base = (GIBaseInfo *)info;
-- UnionBlob *blob = (UnionBlob *)&base->typelib->data[base->offset];
-+ GIRealInfo *rinfo = (GIRealInfo *)info;
-+ UnionBlob *blob = (UnionBlob *)&rinfo->typelib->data[rinfo->offset];
-
- return blob->alignment;
- }
-diff --git a/girepository/girepository.h b/girepository/girepository.h
-index c30418a..93cf126 100644
---- girepository/girepository.h
-+++ girepository/girepository.h
-@@ -27,37 +27,55 @@
-
- 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))
-+#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 _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;
-+
-+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;
-+ GObject parent;
-
- /*< private >*/
- GIRepositoryPrivate *priv;
-@@ -282,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 */
-
-@@ -317,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 */
---
-cgit v0.8.3.1
diff --git a/devel/gobject-introspection/files/patch-20100107 b/devel/gobject-introspection/files/patch-20100107
deleted file mode 100644
index 570d2c7c7591..000000000000
--- a/devel/gobject-introspection/files/patch-20100107
+++ /dev/null
@@ -1,66 +0,0 @@
-From e7b9f873f0152136af60753598077156e7ae1545 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Thu, 07 Jan 2010 21:12:15 +0000
-Subject: Correctly cast to a CommonBlob when looking up embedded types
-
-When looking at an embedded type (e.g. a Callback after a Field), the
-offset we put in the info structure was to the CallbackBlob itself.
-
-However the code in g_type_info_get_interface assumed that the offset
-was to a SimpleTypeBlob, which it wasn't.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=606180
----
-diff --git a/girepository/ginfo.c b/girepository/ginfo.c
-index b11cc8f..ed2fc93 100644
---- girepository/ginfo.c
-+++ girepository/ginfo.c
-@@ -997,18 +997,38 @@ GIBaseInfo *
- g_type_info_get_interface (GITypeInfo *info)
- {
- GIRealInfo *rinfo = (GIRealInfo *)info;
-- SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-
-+ /* For embedded types, the given offset is a pointer to the actual blob,
-+ * after the end of the field. In that case we know it's a "subclass" of
-+ * CommonBlob, so use that to determine the info type.
-+ */
- if (rinfo->type_is_embedded)
-- return (GIBaseInfo *) g_info_new (type->offset, (GIBaseInfo*)info, rinfo->typelib,
-- rinfo->offset);
-+ {
-+ CommonBlob *common = (CommonBlob *)&rinfo->typelib->data[rinfo->offset];
-+ GIInfoType info_type;
-
-- if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
-+ switch (common->blob_type)
-+ {
-+ case BLOB_TYPE_CALLBACK:
-+ info_type = GI_INFO_TYPE_CALLBACK;
-+ break;
-+ default:
-+ g_assert_not_reached ();
-+ return NULL;
-+ }
-+ return (GIBaseInfo *) g_info_new (info_type, (GIBaseInfo*)info, rinfo->typelib,
-+ rinfo->offset);
-+ }
-+ else
- {
-- InterfaceTypeBlob *blob = (InterfaceTypeBlob *)&rinfo->typelib->data[rinfo->offset];
--
-- if (blob->tag == GI_TYPE_TAG_INTERFACE)
-- return g_info_from_entry (rinfo->repository, rinfo->typelib, blob->interface);
-+ SimpleTypeBlob *type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-+ if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0))
-+ {
-+ InterfaceTypeBlob *blob = (InterfaceTypeBlob *)&rinfo->typelib->data[rinfo->offset];
-+
-+ if (blob->tag == GI_TYPE_TAG_INTERFACE)
-+ return g_info_from_entry (rinfo->repository, rinfo->typelib, blob->interface);
-+ }
- }
-
- return NULL;
---
-cgit v0.8.3.1
diff --git a/devel/gobject-introspection/files/patch-gir_Makefile.in b/devel/gobject-introspection/files/patch-gir_Makefile.in
index cf8ce2b3d94f..9e9ef5b8c9bd 100644
--- a/devel/gobject-introspection/files/patch-gir_Makefile.in
+++ b/devel/gobject-introspection/files/patch-gir_Makefile.in
@@ -1,11 +1,12 @@
---- gir/Makefile.in.orig 2009-12-18 18:25:43.000000000 +0100
-+++ gir/Makefile.in 2009-12-18 18:25:54.000000000 +0100
-@@ -359,13 +359,12 @@ GLib_2_0_gir_SCANNERFLAGS = --noclosure
+--- gir/Makefile.in.orig 2010-03-10 17:14:45.000000000 +0000
++++ gir/Makefile.in 2010-03-10 17:17:53.000000000 +0000
+@@ -400,14 +400,13 @@ GLib_2_0_gir_SCANNERFLAGS = --noclosure
GLib_2_0_gir_PACKAGES = glib-2.0
GLib_2_0_gir_CFLAGS = $(CPPFLAGS) \
-I$(GLIB_INCLUDEDIR) \
- -I$(GLIB_LIBDIR)/glib-2.0/include \
-DGETTEXT_PACKAGE=Dummy \
+ -DGLIB_COMPILATION \
-D__G_I18N_LIB_H__
GLib_2_0_gir_ASSERTIONS = $(srcdir)/GLib-2.0.xpath
diff --git a/devel/gobject-introspection/files/patch-girepository_girnode.c b/devel/gobject-introspection/files/patch-girepository_girnode.c
deleted file mode 100644
index f566de3d6208..000000000000
--- a/devel/gobject-introspection/files/patch-girepository_girnode.c
+++ /dev/null
@@ -1,12 +0,0 @@
---- girepository/girnode.c.orig 2009-07-09 21:20:46.000000000 +0400
-+++ girepository/girnode.c 2009-12-09 16:12:24.000000000 +0300
-@@ -2288,7 +2288,8 @@
- break;
- case GI_TYPE_TAG_DOUBLE:
- blob->size = sizeof (gdouble);
-- *(gdouble*)&data[blob->offset] = (gdouble) parse_float_value (constant->value);
-+ gdouble tmp = parse_float_value (constant->value);
-+ memcpy (&data[blob->offset], &tmp, blob->size);
- break;
- case GI_TYPE_TAG_UTF8:
- case GI_TYPE_TAG_FILENAME:
diff --git a/devel/gobject-introspection/pkg-plist b/devel/gobject-introspection/pkg-plist
index 8083b30ec40f..8543297adaef 100644
--- a/devel/gobject-introspection/pkg-plist
+++ b/devel/gobject-introspection/pkg-plist
@@ -4,6 +4,7 @@ bin/g-ir-scanner
include/gobject-introspection-1.0/girepository.h
include/gobject-introspection-1.0/girffi.h
lib/girepository-1.0/Everything-1.0.typelib
+lib/girepository-1.0/GIMarshallingTests-1.0.typelib
lib/girepository-1.0/GIRepository-2.0.typelib
lib/girepository-1.0/GL-1.0.typelib
lib/girepository-1.0/GLib-2.0.typelib
@@ -85,10 +86,15 @@ lib/libgirepository-everything-1.0.a
lib/libgirepository-everything-1.0.la
lib/libgirepository-everything-1.0.so
lib/libgirepository-everything-1.0.so.1
+lib/libgirepository-gimarshallingtests-1.0.a
+lib/libgirepository-gimarshallingtests-1.0.la
+lib/libgirepository-gimarshallingtests-1.0.so
+lib/libgirepository-gimarshallingtests-1.0.so.1
libdata/pkgconfig/gobject-introspection-1.0.pc
libdata/pkgconfig/gobject-introspection-no-export-1.0.pc
share/aclocal/introspection.m4
share/gir-1.0/Everything-1.0.gir
+share/gir-1.0/GIMarshallingTests-1.0.gir
share/gir-1.0/GIRepository-2.0.gir
share/gir-1.0/GL-1.0.gir
share/gir-1.0/GLib-2.0.gir