new function to get the GType given a RegisteredTypeInfo
authorHavoc Pennington <hp@pobox.com>
Wed, 23 Apr 2008 00:57:48 +0000 (00:57 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Wed, 23 Apr 2008 00:57:48 +0000 (00:57 +0000)
2008-04-22  Havoc Pennington  <hp@pobox.com>

  * girepository/ginfo.c (g_registered_type_info_get_g_type): new
function to get the GType given a RegisteredTypeInfo

svn path=/trunk/; revision=216

ChangeLog
girepository/ginfo.c
girepository/girepository.h

index 6b03bc8..38f1138 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-22  Havoc Pennington  <hp@pobox.com>
+
+       * girepository/ginfo.c (g_registered_type_info_get_g_type): new
+       function to get the GType given a RegisteredTypeInfo
+
 2008-04-22  Johan Dahlin  <johan@gnome.org>
 
        * COPYING: Add a LGPL license, to prevent automake to
index 6d66de2..1707fa8 100644 (file)
@@ -968,6 +968,25 @@ g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info)
   return NULL;
 }
 
+GType
+g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info)
+{
+  const char *type_init;
+  GType (* get_type_func) (void);
+
+  type_init = g_registered_type_info_get_type_init (info);  
+  
+  if (type_init == NULL)
+    return G_TYPE_NONE;
+  
+  get_type_func = NULL;
+  if (!g_module_symbol (((GIBaseInfo*)info)->metadata->module,
+                        type_init,
+                        (void**) &get_type_func))
+    return G_TYPE_NONE;
+  
+  return (* get_type_func) ();
+}
 
 /* GIStructInfo functions */
 gint
index 7ad1067..fa625aa 100644 (file)
@@ -350,7 +350,7 @@ GIFunctionInfo *       g_struct_info_find_method   (GIStructInfo *info,
 
 const gchar *          g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info);
 const gchar *          g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info);
-
+GType                  g_registered_type_info_get_g_type    (GIRegisteredTypeInfo *info);
 
 /* GIEnumInfo */