[nautilus] Use templates for glib-mkenums
- From: Ernestas Kulik <ernestask src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] Use templates for glib-mkenums
- Date: Thu, 1 Sep 2016 15:03:23 +0000 (UTC)
commit 437f573cf5441587457996863c8eb2a33a682b28
Author: Ernestas Kulik <ernestask src gnome org>
Date: Sun Aug 28 13:34:58 2016 +0300
Use templates for glib-mkenums
Currently, enum types are generated by passing command line
arguments to glib-mkenums. A better alternative to that is passing a
template file, which also declutters build files.
https://bugzilla.gnome.org/show_bug.cgi?id=770507
src/Makefile.am | 44 ++++++++---------------------------
src/nautilus-enum-types.c.template | 37 ++++++++++++++++++++++++++++++
src/nautilus-enum-types.h.template | 25 ++++++++++++++++++++
3 files changed, 72 insertions(+), 34 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index e0b7b66..d514569 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -99,44 +99,19 @@ nautilus-resources.c: resources/nautilus.gresource.xml $(resource_files)
nautilus-resources.h: resources/nautilus.gresource.xml $(resource_files)
glib-compile-resources --manual-register --target=$@ --sourcedir=$(srcdir)/resources
--generate-header --c-name nautilus $(srcdir)/resources/nautilus.gresource.xml
-nautilus-enum-types.h: stamp-nautilus-enum-types.h
- $(AM_V_GEN)true
-
-stamp-nautilus-enum-types.h: $(headers) Makefile
+nautilus-enum-types.h: nautilus-enum-types.h.template $(headers)
$(AM_V_GEN)(cd $(srcdir) \
&& glib-mkenums \
- --fhead "#ifndef __NAUTILUS_ENUM_TYPES_H__\n" \
- --fhead "#define __NAUTILUS_ENUM_TYPES_H__ 1\n\n" \
- --fhead "#include <glib-object.h>\n\n" \
- --fhead "G_BEGIN_DECLS\n\n" \
- --ftail "G_END_DECLS\n\n" \
- --ftail "#endif /* __NAUTILUS_ENUM_TYPES_H__ */\n" \
- --fprod "#include \"@filename@\"\n" \
- --eprod "#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \
- --eprod "GType @enum_name@_get_type (void);\n" \
- $(headers) ) > xgen-gth \
- && (cmp -s xgen-gth nautilus-enum-types.h || cp xgen-gth nautilus-enum-types.h) \
- && rm -f xgen-gth \
- && echo timestamp > $(@F)
+ --template nautilus-enum-types.h.template \
+ $(headers)) \
+ > $@
-nautilus-enum-types.c: $(headers) Makefile
+nautilus-enum-types.c: nautilus-enum-types.c.template $(headers)
$(AM_V_GEN)(cd $(srcdir) \
&& glib-mkenums \
- --fhead "#include <config.h>\n" \
- --fhead "#include <glib-object.h>\n" \
- --fhead "#include \"nautilus-enum-types.h\"\n\n" \
- --fprod "\n/* enumerations from \"@filename@\" */" \
- --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
- --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
- --vtail " { 0, NULL, NULL }\n};\n\n" \
- --vtail "GType\n@enum_name@_get_type (void)\n{\n" \
- --vtail " static GType type = 0;\n\n" \
- --vtail " if (!type)\n" \
- --vtail " type = g_@type@_register_static (\"@EnumName@\",
_@enum_name@_values);\n\n" \
- --vtail " return type;\n}\n\n" \
- $(headers) ) > xgen-gtc \
- && cp xgen-gtc $(@F) \
- && rm -f xgen-gtc
+ --template nautilus-enum-types.c.template \
+ $(headers)) \
+ > $@
if ENABLE_TRACKER
nautilus_tracker_engine_sources = \
@@ -392,7 +367,6 @@ TESTS=check-nautilus
CLEANFILES = \
$(BUILT_SOURCES) \
$(server_DATA) \
- stamp-nautilus-enum-types.h \
$(NULL)
EXTRA_DIST = \
@@ -400,6 +374,8 @@ EXTRA_DIST = \
$(server_in_files) \
resources/nautilus.gresource.xml \
check-nautilus \
+ nautilus-enum-types.h.template \
+ nautilus-enum-types.c.template \
$(NULL)
dist-hook:
diff --git a/src/nautilus-enum-types.c.template b/src/nautilus-enum-types.c.template
new file mode 100644
index 0000000..00155ca
--- /dev/null
+++ b/src/nautilus-enum-types.c.template
@@ -0,0 +1,37 @@
+/*** BEGIN file-header ***/
+#include "nautilus-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 volatile GType type_once = 0;
+
+ if (g_once_init_enter (&type_once))
+ {
+ static const G@Type@Value values[] = {
+/*** END value-header ***/
+/*** BEGIN value-production ***/
+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+/*** BEGIN value-tail ***/
+ { 0, NULL, NULL }
+ };
+
+ GType type = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+
+ g_once_init_leave (&type_once, type);
+ }
+
+ return type_once;
+}
+
+/*** END value-tail ***/
diff --git a/src/nautilus-enum-types.h.template b/src/nautilus-enum-types.h.template
new file mode 100644
index 0000000..399bbca
--- /dev/null
+++ b/src/nautilus-enum-types.h.template
@@ -0,0 +1,25 @@
+/*** BEGIN file-header ***/
+#ifndef NAUTILUS_ENUM_TYPES_H
+#define NAUTILUS_ENUM_TYPES_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from "@filename@" */
+
+/*** END file-production ***/
+
+/*** BEGIN enumeration-production ***/
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
+GType @enum_name@_get_type (void);
+
+/*** END enumeration-production ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* NAUTILUS_ENUM_TYPES_H */
+/*** END file-tail ***/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]