From 4faecff08de961ca0736cad5b798c3fb2f2abb44 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Thu, 29 Mar 2012 11:56:13 +0200 Subject: [PATCH] Add GType's for packagekit-glib2 enumerations https://bugs.freedesktop.org/show_bug.cgi?id=48038 --- configure.ac | 1 + lib/packagekit-glib2/Makefile.am | 15 ++++++++- lib/packagekit-glib2/packagekit.h | 1 + lib/packagekit-glib2/pk-enum-types.c.template | 43 +++++++++++++++++++++++++ lib/packagekit-glib2/pk-enum-types.h.template | 28 ++++++++++++++++ 5 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 lib/packagekit-glib2/pk-enum-types.c.template create mode 100644 lib/packagekit-glib2/pk-enum-types.h.template diff --git a/configure.ac b/configure.ac index a40eeb0..aa4bd9a 100644 --- a/configure.ac +++ b/configure.ac @@ -81,6 +81,7 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[gettext domain]) GTK_DOC_CHECK([1.11],[--flavour no-tmpl]) AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) +AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums) AM_PATH_PYTHON([2.7]) PYTHON_PACKAGE_DIR=${pythondir}/packagekit diff --git a/lib/packagekit-glib2/Makefile.am b/lib/packagekit-glib2/Makefile.am index ead4160..1c55f58 100644 --- a/lib/packagekit-glib2/Makefile.am +++ b/lib/packagekit-glib2/Makefile.am @@ -34,7 +34,7 @@ lib_LTLIBRARIES = \ libpackagekit_glib2_includedir = $(includedir)/PackageKit/packagekit-glib2 -libpackagekit_glib2_include_HEADERS = \ +HEADER_FILES = \ packagekit.h \ pk-bitfield.h \ pk-catalog.h \ @@ -73,6 +73,11 @@ libpackagekit_glib2_include_HEADERS = \ pk-version.h \ $(NULL) +libpackagekit_glib2_include_HEADERS = \ + $(HEADER_FILES) \ + pk-enum-types.h \ + $(NULL) + libpackagekit_glib2_la_SOURCES = \ packagekit.h \ pk-bitfield.c \ @@ -223,6 +228,8 @@ EXTRA_DIST = \ BUILT_SOURCES = \ pk-marshal.c \ pk-marshal.h \ + pk-enum-types.h \ + pk-enum-types.c \ $(NULL) pk-marshal.c: pk-marshal.list @@ -232,6 +239,12 @@ pk-marshal.c: pk-marshal.list pk-marshal.h: pk-marshal.list @GLIB_GENMARSHAL@ $< --prefix=pk_marshal --header > $@ +pk-enum-types.h: pk-enum-types.h.template $(HEADER_FILES) + $(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@ + +pk-enum-types.c: pk-enum-types.c.template $(HEADER_FILES) + $(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@ + CLEANFILES = $(BUILT_SOURCES) *.a *.servicepack if HAVE_INTROSPECTION diff --git a/lib/packagekit-glib2/packagekit.h b/lib/packagekit-glib2/packagekit.h index 7548efa..63b0e87 100644 --- a/lib/packagekit-glib2/packagekit.h +++ b/lib/packagekit-glib2/packagekit.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/packagekit-glib2/pk-enum-types.c.template b/lib/packagekit-glib2/pk-enum-types.c.template new file mode 100644 index 0000000..683cbda --- /dev/null +++ b/lib/packagekit-glib2/pk-enum-types.c.template @@ -0,0 +1,43 @@ +/*** BEGIN file-header ***/ + +#include + +#ifndef PK_COMPILATION +#define PK_COMPILATION +#endif + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +#include "@filename@" +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; + +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (G_UNLIKELY(etype == 0)) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + } + return etype; +} + +/*** END value-tail ***/ + +/*** BEGIN file-tail ***/ + /**/ +/*** END file-tail ***/ diff --git a/lib/packagekit-glib2/pk-enum-types.h.template b/lib/packagekit-glib2/pk-enum-types.h.template new file mode 100644 index 0000000..c42c9e5 --- /dev/null +++ b/lib/packagekit-glib2/pk-enum-types.h.template @@ -0,0 +1,28 @@ +/*** BEGIN file-header ***/ +#if !defined (__PACKAGEKIT_H_INSIDE__) && !defined (PK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __PK_ENUM_TYPES_H__ +#define __PK_ENUM_TYPES_H__ + +#include + +G_BEGIN_DECLS +/*** END file-header ***/ + +/*** BEGIN file-production ***/ + +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; +#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __PK_ENUM_TYPES_H__ */ +/*** END file-tail ***/ -- 1.7.9.3