summaryrefslogtreecommitdiff
path: root/examples/girepository
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2019-11-09 15:26:27 +0100
committerChristoph Reiter <reiter.christoph@gmail.com>2019-11-09 16:17:54 +0100
commit3ed45723550a21d714ac34a82d20e4aa2d7f9958 (patch)
treed3440d2ca04ee6dd89374668480b2c82f9aaa178 /examples/girepository
parent2e9f0a4fc9c7f1ba4583eeb76859bbab8cd7c702 (diff)
downloadgobject-introspection-3ed45723550a21d714ac34a82d20e4aa2d7f9958.tar.gz
examples: Make self contained and add build system integration examples
The libgirepository example now is its own meson project. There now is a small library that is buildable with meson and autotools which creates a gir/typelib. Usefull for testing our build system integration and for small experiments. Fixes #287
Diffstat (limited to 'examples/girepository')
-rw-r--r--examples/girepository/glib-print.c48
-rw-r--r--examples/girepository/meson.build7
2 files changed, 55 insertions, 0 deletions
diff --git a/examples/girepository/glib-print.c b/examples/girepository/glib-print.c
new file mode 100644
index 00000000..595ae48b
--- /dev/null
+++ b/examples/girepository/glib-print.c
@@ -0,0 +1,48 @@
+#include <girepository.h>
+
+int
+main (void)
+{
+ GIRepository *repository;
+ GError *error = NULL;
+ GIBaseInfo *base_info;
+ GIArgument in_args[5];
+ GIArgument retval;
+
+ 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 = (gpointer)"domain";
+ in_args[1].v_pointer = (gpointer)"glib-print.c";
+ in_args[2].v_int = 42;
+ in_args[3].v_pointer = (gpointer)"main";
+ in_args[4].v_pointer = (gpointer)"hello world";
+
+ if (!g_function_info_invoke ((GIFunctionInfo *) base_info,
+ (const GIArgument *) &in_args,
+ 5,
+ NULL,
+ 0,
+ &retval,
+ &error))
+ {
+ g_error ("ERROR: %s\n", error->message);
+ return 1;
+ }
+
+ g_base_info_unref (base_info);
+
+ return 0;
+}
diff --git a/examples/girepository/meson.build b/examples/girepository/meson.build
new file mode 100644
index 00000000..e3e0b7eb
--- /dev/null
+++ b/examples/girepository/meson.build
@@ -0,0 +1,7 @@
+project('girepository-sample', 'c')
+
+girepo_dep = dependency('gobject-introspection-1.0')
+
+executable('glib-print', 'glib-print.c',
+ dependencies: girepo_dep,
+)