Add a simple invokation example
authorJohan Dahlin <jdahlin@litl.com>
Tue, 17 Feb 2009 21:23:25 +0000 (18:23 -0300)
committerJohan Dahlin <johan@gnome.org>
Tue, 17 Feb 2009 21:23:25 +0000 (18:23 -0300)
.gitignore
Makefile.am
configure.ac
examples/Makefile.am [new file with mode: 0644]
examples/glib-print.c [new file with mode: 0644]

index a161504..742cd66 100644 (file)
@@ -29,6 +29,7 @@ missing
 stamp-h1
 ylwrap
 py-compile
+examples/glib-print
 docs/reference/html
 docs/reference/xml
 gir/GIRepository-2.0.gir
index 054ea14..0ef8325 100644 (file)
@@ -18,7 +18,7 @@ endif
 
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = girepository giscanner tools gir tests
+SUBDIRS = girepository giscanner tools gir tests examples
 DIST_SUBDIRS = m4 $(SUBDIRS)
 
 man_MANS =                     \
index 4182a9d..cbb0ec5 100644 (file)
@@ -204,6 +204,7 @@ tests/offsets/Makefile
 tests/scanner/Makefile
 tests/repository/Makefile
 tests/everything/Makefile
+examples/Makefile
 docs/Makefile
 docs/reference/Makefile
 gobject-introspection-1.0.pc])
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644 (file)
index 0000000..681a4ca
--- /dev/null
@@ -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 (file)
index 0000000..f2f0d6b
--- /dev/null
@@ -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;
+}