summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJohan Dahlin <jdahlin@litl.com>2009-02-17 18:23:25 -0300
committerJohan Dahlin <johan@gnome.org>2009-02-17 18:23:25 -0300
commit2a8d36c3570f6c1d469a323e344b8ea480a71d3d (patch)
treec570aef2806936720ac495fa4176c0e37125238d /examples
parent53104000372583319f7330fb036c096ca7af4a6b (diff)
downloadgobject-introspection-2a8d36c3570f6c1d469a323e344b8ea480a71d3d.tar.gz
Add a simple invokation example
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile.am5
-rw-r--r--examples/glib-print.c44
2 files changed, 49 insertions, 0 deletions
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 00000000..681a4ca6
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,5 @@
+noinst_PROGRAMS = glib-print
+
+glib_print_SOURCES = glib-print.c
+glib_print_CFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository
+glib_print_LDADD = $(top_builddir)/girepository/libgirepository-1.0.la $(GIREPO_LIBS)
diff --git a/examples/glib-print.c b/examples/glib-print.c
new file mode 100644
index 00000000..f2f0d6bc
--- /dev/null
+++ b/examples/glib-print.c
@@ -0,0 +1,44 @@
+#include <girepository.h>
+
+int main(void)
+{
+ GIRepository *repository;
+ GError *error = NULL;
+ GIBaseInfo *base_info;
+ GArgument in_args[5];
+ GArgument retval;
+
+ g_type_init();
+
+ repository = g_irepository_get_default();
+ g_irepository_require(repository, "GLib", "2.0", 0, &error);
+ if (error) {
+ g_error("ERROR: %s\n", error->message);
+ return 1;
+ }
+
+ base_info = g_irepository_find_by_name(repository, "GLib", "assertion_message");
+ if (!base_info) {
+ g_error("ERROR: %s\n", "Could not find GLib.warn_message");
+ return 1;
+ }
+
+ in_args[0].v_pointer = "domain";
+ in_args[1].v_pointer = "glib-print.c";
+ in_args[2].v_pointer = "30";
+ in_args[3].v_pointer = "main";
+ in_args[4].v_pointer = "hello world";
+
+ if (!g_function_info_invoke ((GIFunctionInfo *)base_info,
+ (const GArgument*)&in_args,
+ 5,
+ NULL,
+ 0,
+ &retval,
+ &error)) {
+ g_error("ERROR: %s\n", error->message);
+ return 1;
+ }
+
+ return 0;
+}