[gnome-todo] project: add enum type template system



commit 770bb0c6b3f4bf62a9e4fd544ca4910ee3a3b569
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Mon Aug 10 18:55:02 2015 -0300

    project: add enum type template system

 configure.ac                  |    1 +
 src/Makefile.am               |   19 ++++++++++++++++++-
 src/gtd-enum-types.c.template |   39 +++++++++++++++++++++++++++++++++++++++
 src/gtd-enum-types.h.template |   26 ++++++++++++++++++++++++++
 4 files changed, 84 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 2c0f133..2ea7393 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,6 +54,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name])
 dnl ================================================================
 dnl Misc
 dnl ================================================================
+AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
 
 GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
 AC_SUBST([GLIB_COMPILE_RESOURCES])
diff --git a/src/Makefile.am b/src/Makefile.am
index af5cfe5..acf0e11 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,7 +11,12 @@ bin_PROGRAMS = gnome-todo
 
 BUILT_SOURCES = \
        gtd-resources.c \
-       gtd-resources.h
+       gtd-resources.h \
+       gtd-enum-types.c \
+       gtd-enum-types.h
+
+ENUM_TYPES = \
+       gtd-enums.h
 
 gnome_todo_SOURCES = \
        $(BUILT_SOURCES) \
@@ -68,12 +73,24 @@ gnome_todo_LDFLAGS = \
 gnome_todo_LDADD = \
        $(GNOME_TODO_LIBS)
 
+#
+# Resources
+#
 resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(top_srcdir)/data --generate-dependencies 
$(top_srcdir)/data/todo.gresource.xml)
 gtd-resources.c: $(top_srcdir)/data/todo.gresource.xml $(resource_files)
        $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(top_srcdir)/data --generate-source 
--c-name todo $(top_srcdir)/data/todo.gresource.xml
 gtd-resources.h: $(top_srcdir)/data/todo.gresource.xml $(resource_files)
        $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(top_srcdir)/data --generate-header 
--c-name todo $(top_srcdir)/data/todo.gresource.xml
 
+#
+# Enums
+#
+gtd-enum-types.c: gtd-enum-types.c.template $(ENUM_TYPES) $(GLIB_MKENUMS)
+       $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gtd-enum-types.c.template $(ENUM_TYPES)) > $@
+
+gtd-enum-types.h: gtd-enum-types.h.template $(ENUM_TYPES) $(GLIB_MKENUMS)
+       $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gtd-enum-types.h.template $(ENUM_TYPES)) > $@
+
 CLEANFILES = \
        $(BUILT_SOURCES)
 
diff --git a/src/gtd-enum-types.c.template b/src/gtd-enum-types.c.template
new file mode 100644
index 0000000..ed83a71
--- /dev/null
+++ b/src/gtd-enum-types.c.template
@@ -0,0 +1,39 @@
+/*** BEGIN file-header ***/
+#include "gtd-enum-types.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/src/gtd-enum-types.h.template b/src/gtd-enum-types.h.template
new file mode 100644
index 0000000..6bc4a63
--- /dev/null
+++ b/src/gtd-enum-types.h.template
@@ -0,0 +1,26 @@
+/*** BEGIN file-header ***/
+#ifndef __GTD_ENUMS_H__
+#define __GTD_ENUMS_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from "@filename@" */
+
+/*** END file-production ***/
+
+/*** BEGIN enumeration-production ***/
+#define GTD_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 /* __GTD_ENUMS_H__ */
+/*** END file-tail ***/


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]