summaryrefslogtreecommitdiff
path: root/girepository/gifunctioninfo.c
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2010-06-06 19:52:12 -0300
committerJohan Dahlin <johan@gnome.org>2010-06-06 19:54:53 -0300
commitfa25cf7d285507bfa9e5c4ca05caa3748bfa2018 (patch)
treec64fac9dbe1f9b341ced7cfa967939b81c305eab /girepository/gifunctioninfo.c
parent553097d46144cef1b2e3a1315581c38d16fb73f4 (diff)
downloadgobject-introspection-fa25cf7d285507bfa9e5c4ca05caa3748bfa2018.tar.gz
[girepository] Move the rest out of ginfo.ch
Diffstat (limited to 'girepository/gifunctioninfo.c')
-rw-r--r--girepository/gifunctioninfo.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/girepository/gifunctioninfo.c b/girepository/gifunctioninfo.c
index 1bda54df..33852801 100644
--- a/girepository/gifunctioninfo.c
+++ b/girepository/gifunctioninfo.c
@@ -19,6 +19,8 @@
* Boston, MA 02111-1307, USA.
*/
+#include <string.h>
+
#include <glib.h>
#include <girepository.h>
@@ -39,6 +41,32 @@
* other metadata.
*/
+GIFunctionInfo *
+_g_base_info_find_method (GIBaseInfo *base,
+ guint32 offset,
+ gint n_methods,
+ const gchar *name)
+{
+ /* FIXME hash */
+ GIRealInfo *rinfo = (GIRealInfo*)base;
+ Header *header = (Header *)rinfo->typelib->data;
+ gint i;
+
+ for (i = 0; i < n_methods; i++)
+ {
+ 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,
+ rinfo->typelib, offset);
+
+ offset += header->function_blob_size;
+ }
+
+ return NULL;
+}
+
/**
* g_function_info_get_symbol:
* @info: a #GIFunctionInfo