g_irepository_dump implementation
authorColin Walters <walters@src.gnome.org>
Thu, 13 Nov 2008 19:57:09 +0000 (19:57 +0000)
committerColin Walters <walters@src.gnome.org>
Thu, 13 Nov 2008 19:57:09 +0000 (19:57 +0000)
svn path=/trunk/; revision=911

ChangeLog
configure.ac
girepository/Makefile.am
girepository/girepository.c
girepository/girepository.h

index 4d55a55..b35ce0a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-13  Colin Walters  <walters@verbum.org>
+
+       * configure.ac: Depend on Gio, we use it in gdump.c.
+       * girepository/gdump.c: Code to dump GType data to XML.
+       * girepository/girepository.c: Add option group for dumping.
+       * girepository/girepository.h: Define API for the above.
+
 2008-11-13  Colin Walters  <walters@verbum.org>
 
        * common.mk: Add a file to include with Makefile fragments
index d8a521a..158203b 100644 (file)
@@ -107,9 +107,10 @@ GOBJECT_INTROSPECTION_LIBDIR="$EXPANDED_LIBDIR"
 AC_SUBST(GOBJECT_INTROSPECTION_LIBDIR)
 AC_DEFINE_UNQUOTED(GOBJECT_INTROSPECTION_LIBDIR,"$GOBJECT_INTROSPECTION_LIBDIR", [Directory prefix for typelib installation])
 
-PKG_CHECK_MODULES(GOBJECT, [gobject-2.0])
+PKG_CHECK_MODULES(GOBJECT, [gobject-2.0 gio-2.0])
+PKG_CHECK_MODULES(GTHREAD, [gthread-2.0])
 
-PKG_CHECK_MODULES(SCANNER, [gobject-2.0 gthread-2.0])
+PKG_CHECK_MODULES(SCANNER, [gobject-2.0 gthread-2.0 gio-2.0])
 
 dnl libffi
 PKG_CHECK_MODULES(FFI, libffi, have_ffi_pkgconfig=yes, have_ffi_pkgconfig=no)
@@ -149,7 +150,7 @@ fi
 
 AC_CHECK_SIZEOF(time_t, [], [#include <time.h>])
 
-PKG_CHECK_MODULES(GIREPO, [glib-2.0 gobject-2.0 gmodule-2.0])
+PKG_CHECK_MODULES(GIREPO, [glib-2.0 gobject-2.0 gmodule-2.0 gio-2.0])
 
 # if we ever remove manual check for ffi and require .pc file, then 
 # just put libffi in the PKG_CHECK_MODULES(GIREPO) deps
index c3694fd..b58288e 100644 (file)
@@ -13,9 +13,11 @@ libgirepository_la_SOURCES =                 \
        gtypelib.h                              \
        gtypelib.c                              \
        ginfo.c                                 \
-       ginvoke.c                               \
        girffi.c                                \
-       girffi.h
+       girffi.h                                \
+       gdump.c                                 \
+       ginvoke.c
+
 libgirepository_la_CPPFLAGS = $(GIREPO_CFLAGS)
 libgirepository_la_LIBADD = $(GIREPO_LIBS)
 libgirepository_la_LDFLAGS = -no-undefined
index 0ff7bdd..e65910d 100644 (file)
@@ -1145,6 +1145,31 @@ g_irepository_require (GIRepository  *repository,
   return ret; 
 }
 
+static gboolean
+g_irepository_introspect_cb (const char *option_name,
+                            const char *value,
+                            gpointer data,
+                            GError **error)
+{
+  return g_irepository_dump (value, error);
+}
+
+static const GOptionEntry introspection_args[] = {
+  { "introspect-dump", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK,
+    g_irepository_introspect_cb, "Dump introspection information",
+    "infile.txt,outfile.xml" },
+  { NULL }
+};
+
+GOptionGroup *
+g_irepository_get_option_group (void)
+{
+  GOptionGroup *group;
+  group = g_option_group_new ("girepository", "Introspection Options", "Show Introspection Options", NULL, NULL);
+
+  g_option_group_add_entries (group, introspection_args);
+  return group;
+}
 
 GQuark
 g_irepository_error_quark (void)
index 225c1f8..46082e0 100644 (file)
@@ -110,6 +110,10 @@ const gchar * g_irepository_get_shared_library (GIRepository *repository,
 const gchar * g_irepository_get_version (GIRepository *repository,
                                         const gchar  *namespace);
 
+GOptionGroup * g_irepository_get_option_group (void);
+
+gboolean       g_irepository_dump  (const char *arg, GError **error);
+
 /* Typelib */
 
 GTypelib *   g_typelib_new_from_memory       (guchar       *memory,