summaryrefslogtreecommitdiff
path: root/devel/gobject-introspection/files
diff options
context:
space:
mode:
authorKoop Mast <kwm@FreeBSD.org>2010-05-10 21:19:08 +0000
committerKoop Mast <kwm@FreeBSD.org>2010-05-10 21:19:08 +0000
commit48e62d9a379cd45a15f6ae89d564f81b3c13d16e (patch)
treeb627baa77f19bb1eab2fa4dee08aab1908131cd0 /devel/gobject-introspection/files
parentRegister conflict between opal and opal3. (diff)
Presenting GNOME 2.30.1 for FreeBSD. The offical release notes for this
release can be found at http://library.gnome.org/misc/release-notes/2.30/ . This release brings initial PackageKit support, Upower (replaces power management part of hal), cuse4bsd integration with HAL and cheese, and a faster Evolution. Sadly GNOME 2.30.x will be the last release with FreeBSD 6.X support. This will also be the last of the 2.x releases. The next release will be the highly-anticipated GNOME 3.0 which will bring with it a new UI experience. Currently, there are a few bugs with GNOME 2.30 that may be of note for our users. Be sure to consult the UPGRADING note or the 2.30 upgrade FAQ at http://www.freebsd.org/gnome/docs/faq230.html for specific upgrading instructions, and the up-to-date list of known issues. This release features commits by avl, ahze, bland, marcus, mezz, and myself. The FreeBSD GNOME Team would like to thank Anders F Bjorklund for doing the initual packagekit porting. And the following contributors & testers for there help with this release: Eric L. Chen Vladimir Grebenschikov Sergio de Almeida Lenzi DomiX walder crsd Kevin Oberman Michal Varga Pavel Plesov Bapt kevin and ITetcu for two exp-run PR: ports/143852 ports/145347 ports/144980 ports/145830 ports/145511
Notes
Notes: svn path=/head/; revision=254099
Diffstat (limited to 'devel/gobject-introspection/files')
-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
4 files changed, 4 insertions, 2713 deletions
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: