diff options
author | Johan Dahlin <johan@gnome.org> | 2010-06-06 19:52:12 -0300 |
---|---|---|
committer | Johan Dahlin <johan@gnome.org> | 2010-06-06 19:54:53 -0300 |
commit | fa25cf7d285507bfa9e5c4ca05caa3748bfa2018 (patch) | |
tree | c64fac9dbe1f9b341ced7cfa967939b81c305eab /girepository/gifunctioninfo.c | |
parent | 553097d46144cef1b2e3a1315581c38d16fb73f4 (diff) | |
download | gobject-introspection-fa25cf7d285507bfa9e5c4ca05caa3748bfa2018.tar.gz |
[girepository] Move the rest out of ginfo.ch
Diffstat (limited to 'girepository/gifunctioninfo.c')
-rw-r--r-- | girepository/gifunctioninfo.c | 28 |
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 |