[gtk+/wip/ebassi/gsk: 10/11] gsk: Add enum types generation



commit 7c87a6efe4af55e7e50ada06c0a735705756bf0d
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Wed Mar 25 10:27:41 2015 +0000

    gsk: Add enum types generation

 gsk/Makefile.am             |   31 +++++++++++++++++++++++++++++--
 gsk/gsk.h                   |    2 ++
 gsk/gskenums.h              |   31 +++++++++++++++++++++++++++++++
 gsk/gskenumtypes.c.template |   37 +++++++++++++++++++++++++++++++++++++
 gsk/gskenumtypes.h.template |   29 +++++++++++++++++++++++++++++
 gsk/gsktypes.h              |    1 +
 6 files changed, 129 insertions(+), 2 deletions(-)
---
diff --git a/gsk/Makefile.am b/gsk/Makefile.am
index 7494d8e..47f6f0f 100644
--- a/gsk/Makefile.am
+++ b/gsk/Makefile.am
@@ -17,7 +17,7 @@ AM_CPPFLAGS = \
        -I$(top_builddir)                       \
        -I$(top_builddir)/gsk                   \
        -I$(top_srcdir)                         \
-       -I$(top_srcdir)/gdk                     \
+       -I$(top_srcdir)/gsk                     \
        $(GTK_DEBUG_FLAGS)                      \
        $(GSK_DEP_CFLAGS)
 
@@ -39,6 +39,7 @@ lib_LTLIBRARIES =
 
 gsk_public_source_h = \
        gskdebug.h \
+       gskenums.h \
        gsklayer.h \
        gsklayeriter.h \
        gsklayoutmanager.h \
@@ -51,6 +52,12 @@ gsk_private_source_h = \
 
 gsk_private_source_c =
 
+gsk_public_built_source_h = \
+       gskenumtypes.h
+
+gsk_built_source_c = \
+       gskenumtypes.c
+
 gsk_source_c = \
        gskdebug.c \
        gsklayer.c \
@@ -59,6 +66,8 @@ gsk_source_c = \
        gsklayoutmanager.c \
        gskrenderer.c
 
+BUILT_SOURCES += $(gsk_public_built_source_h) $(gsk_built_source_c)
+
 all_sources = $(gsk_private_source_c) $(gsk_source_c) $(gsk_public_source_h) $(gsk_private_source_h) 
$(BUILT_SOURCES)
 
 libgsk_3_la_SOURCES = $(all_sources)
@@ -69,8 +78,26 @@ libgsk_3_la_LDFLAGS = $(LDADD)
 
 lib_LTLIBRARIES += libgsk-3.la
 
+gskenumtypes.h: stamp-gskenumtypes.h
+       @true
+stamp-gskenumtypes.h: $(gsk_public_source_h) gskenumtypes.h.template
+       $(AM_V_GEN) $(GLIB_MKENUMS) \
+               --template gskenumtypes.h.template \
+               $(gsk_public_source_h) > xgen-geth \
+       && ( cmp -s xgen-geth gskenumtypes.h || cp xgen-geth gskenumtypes.h ) \
+       && rm -f xgen-geth \
+       && echo timestamp > $(@F)
+gskenumtypes.c: $(gsk_public_source_h) gskenumtypes.c.template
+       $(AM_V_GEN) $(GLIB_MKENUMS) \
+               --template gskenumtypes.c.template \
+               $(gsk_public_source_h) > xgen-getc \
+       && cp xgen-getc gskenumtypes.c \
+       && rm -f xgen-getc
+
+CLEANFILES += stamp-gskenumtypes.h
+
 gskincludedir = $(includedir)/gtk-3.0/gsk
-gskinclude_HEADERS = $(gsk_public_source_h) gsk.h
+gskinclude_HEADERS = $(gsk_public_source_h) $(gsk_public_built_source_h) gsk.h
 
 if HAVE_INTROSPECTION
 
diff --git a/gsk/gsk.h b/gsk/gsk.h
index 04078e9..1eef652 100644
--- a/gsk/gsk.h
+++ b/gsk/gsk.h
@@ -24,6 +24,8 @@
 #include <gsk/gskmacros.h>
 
 #include <gsk/gskdebug.h>
+#include <gsk/gskenums.h>
+#include <gsk/gskenumtypes.h>
 #include <gsk/gsklayer.h>
 #include <gsk/gsklayeriter.h>
 #include <gsk/gsklayoutmanager.h>
diff --git a/gsk/gskenums.h b/gsk/gskenums.h
new file mode 100644
index 0000000..f31e5b1
--- /dev/null
+++ b/gsk/gskenums.h
@@ -0,0 +1,31 @@
+/* GSK - The GTK scene graph toolkit
+ * Copyright 2015  Emmanuele Bassi 
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GSK_ENUMS_H__
+#define __GSK_ENUMS_H__
+
+#if !defined (__GSK_H_INSIDE__) && !defined (GSK_COMPILATION)
+#error "Only <gsk/gsk.h> can be included directly."
+#endif
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+G_END_DECLS
+
+#endif /* __GSK_ENUMS_H__ */
diff --git a/gsk/gskenumtypes.c.template b/gsk/gskenumtypes.c.template
new file mode 100644
index 0000000..1135e3c
--- /dev/null
+++ b/gsk/gskenumtypes.c.template
@@ -0,0 +1,37 @@
+/*** BEGIN file-header ***/
+#include "config.h"
+#include "gsk.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+
+GType
+ enum_name@_get_type (void)
+{
+  static volatile gsize g_ type@_type_id__volatile = 0;
+  if (g_once_init_enter (&g_ type@_type_id__volatile))
+    {
+      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 g_ type@_type_id =
+        g_ type@_register_static (g_intern_static_string ("@EnumName@"), values);
+
+      g_once_init_leave (&g_ type@_type_id__volatile, g_ type@_type_id);
+    }
+  return g_ type@_type_id__volatile;
+}
+/*** END value-tail ***/
diff --git a/gsk/gskenumtypes.h.template b/gsk/gskenumtypes.h.template
new file mode 100644
index 0000000..9f64b3f
--- /dev/null
+++ b/gsk/gskenumtypes.h.template
@@ -0,0 +1,29 @@
+/*** BEGIN file-header ***/
+#ifndef __GSK_ENUM_TYPES_H__
+#define __GSK_ENUM_TYPES_H__
+
+#if !defined (__GSK_H_INSIDE__) && !defined (GSK_COMPILATION)
+#error "Only <gsk/gsk.h> can be included directly."
+#endif
+
+#include <glib-object.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GDK_AVAILABLE_IN_ALL 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 /* __GSK_ENUM_TYPES_H__ */
+/*** END file-tail ***/
diff --git a/gsk/gsktypes.h b/gsk/gsktypes.h
index 0593a2d..f77b2ae 100644
--- a/gsk/gsktypes.h
+++ b/gsk/gsktypes.h
@@ -26,6 +26,7 @@
 #include <graphene.h>
 #include <gdk/gdk.h>
 #include <gsk/gskmacros.h>
+#include <gsk/gskenums.h>
 
 G_BEGIN_DECLS
 


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