From f22e38ffad3d6360920e278ac35c3a00102738ff Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 17 Jul 2012 10:52:43 -0400 Subject: Use template files to generate GEnumClass types. --- shell/Makefile.am | 14 +++++++++----- shell/e-shell-enumtypes.c.template | 38 ++++++++++++++++++++++++++++++++++++++ shell/e-shell-enumtypes.h.template | 27 +++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 shell/e-shell-enumtypes.c.template create mode 100644 shell/e-shell-enumtypes.h.template (limited to 'shell') diff --git a/shell/Makefile.am b/shell/Makefile.am index 0398379c41..b460d08d43 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -10,11 +10,13 @@ privsolib_LTLIBRARIES = libeshell.la eshellincludedir = $(privincludedir)/shell -include $(top_srcdir)/glib-gen.mak -glib_enum_headers=e-shell.h -glib_enum_output=e-shell-enumtypes -glib_enum_define=E_SHELL -glib_enum_prefix=e_shell +ENUM_TYPES = e-shell.h + +e-shell-enumtypes.h: e-shell-enumtypes.h.template $(ENUM_TYPES) + $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-shell-enumtypes.h.template $(ENUM_TYPES)) > $@ + +e-shell-enumtypes.c: e-shell-enumtypes.c.template $(ENUM_TYPES) + $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-shell-enumtypes.c.template $(ENUM_TYPES)) > $@ ENUM_GENERATED = e-shell-enumtypes.h e-shell-enumtypes.c @@ -190,6 +192,8 @@ errordir = $(privdatadir)/errors EXTRA_DIST = \ evo-version.h.in \ + e-shell-enumtypes.h.template \ + e-shell-enumtypes.c.template \ shell.error.xml \ evolution-icon.rc \ evolution.ico \ diff --git a/shell/e-shell-enumtypes.c.template b/shell/e-shell-enumtypes.c.template new file mode 100644 index 0000000000..4d30900611 --- /dev/null +++ b/shell/e-shell-enumtypes.c.template @@ -0,0 +1,38 @@ +/*** BEGIN file-header ***/ +#include "e-shell-enumtypes.h" + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +#include "@filename@" + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType the_type = 0; + + if (the_type == 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 } + }; + the_type = g_@type@_register_static ( + g_intern_static_string ("@EnumName@"), + values); + } + return the_type; +} + +/*** END value-tail ***/ diff --git a/shell/e-shell-enumtypes.h.template b/shell/e-shell-enumtypes.h.template new file mode 100644 index 0000000000..76ff677384 --- /dev/null +++ b/shell/e-shell-enumtypes.h.template @@ -0,0 +1,27 @@ +/*** BEGIN file-header ***/ +#ifndef E_SHELL_ENUMTYPES_H +#define E_SHELL_ENUMTYPES_H + +#include + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* Enumerations from "@filename@" */ + +/*** END file-production ***/ + +/*** BEGIN enumeration-production ***/ +#define E_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) +GType @enum_name@_get_type (void) G_GNUC_CONST; + +/*** END enumeration-production ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* E_SHELL_ENUMTYPES_H */ +/*** END file-tail ***/ + -- cgit v1.2.3