aboutsummaryrefslogtreecommitdiffstats
path: root/libemail-engine
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-07-17 22:52:43 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-07-18 01:49:09 +0800
commitf22e38ffad3d6360920e278ac35c3a00102738ff (patch)
tree6e66ce1159f3d2b41ee46dc273d85d0639f5edfa /libemail-engine
parentcc29868877436d404610039b719c5d781925d97e (diff)
downloadgsoc2013-evolution-f22e38ffad3d6360920e278ac35c3a00102738ff.tar.gz
gsoc2013-evolution-f22e38ffad3d6360920e278ac35c3a00102738ff.tar.zst
gsoc2013-evolution-f22e38ffad3d6360920e278ac35c3a00102738ff.zip
Use template files to generate GEnumClass types.
Diffstat (limited to 'libemail-engine')
-rw-r--r--libemail-engine/Makefile.am17
-rw-r--r--libemail-engine/e-mail-enumtypes.c.template38
-rw-r--r--libemail-engine/e-mail-enumtypes.h.template27
3 files changed, 77 insertions, 5 deletions
diff --git a/libemail-engine/Makefile.am b/libemail-engine/Makefile.am
index 103a9d530f..5589fe4e73 100644
--- a/libemail-engine/Makefile.am
+++ b/libemail-engine/Makefile.am
@@ -2,11 +2,13 @@ NULL =
privsolib_LTLIBRARIES = libemail-engine.la
-include $(top_srcdir)/glib-gen.mak
-glib_enum_headers=e-mail-enums.h
-glib_enum_output=e-mail-enumtypes
-glib_enum_define=E_MAIL
-glib_enum_prefix=e_mail
+ENUM_TYPES = e-mail-enums.h
+
+e-mail-enumtypes.h: e-mail-enumtypes.h.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-mail-enumtypes.h.template $(ENUM_TYPES)) > $@
+
+e-mail-enumtypes.c: e-mail-enumtypes.c.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-mail-enumtypes.c.template $(ENUM_TYPES)) > $@
ENUM_GENERATED = e-mail-enumtypes.h e-mail-enumtypes.c
@@ -74,6 +76,11 @@ BUILT_SOURCES = $(ENUM_GENERATED)
CLEANFILES = $(BUILT_SOURCES)
DISTCLEANFILES = $(pkgconfig_DATA)
+EXTRA_DIST = \
+ e-mail-enumtypes.h.template \
+ e-mail-enumtypes.c.template \
+ $(NULL)
+
dist-hook:
cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/libemail-engine/e-mail-enumtypes.c.template b/libemail-engine/e-mail-enumtypes.c.template
new file mode 100644
index 0000000000..db4f2a4503
--- /dev/null
+++ b/libemail-engine/e-mail-enumtypes.c.template
@@ -0,0 +1,38 @@
+/*** BEGIN file-header ***/
+#include "e-mail-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/libemail-engine/e-mail-enumtypes.h.template b/libemail-engine/e-mail-enumtypes.h.template
new file mode 100644
index 0000000000..d983a72d5c
--- /dev/null
+++ b/libemail-engine/e-mail-enumtypes.h.template
@@ -0,0 +1,27 @@
+/*** BEGIN file-header ***/
+#ifndef E_MAIL_ENUMTYPES_H
+#define E_MAIL_ENUMTYPES_H
+
+#include <glib-object.h>
+
+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_MAIL_ENUMTYPES_H */
+/*** END file-tail ***/
+