aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-11-22 10:54:20 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:18 +0100
commit0e9ed6e5fed70c873c597b91a9b844df44f9ffc0 (patch)
tree6be98925ae1fce8ba5f93cda33f8b846602fc446
parentade484826ccd5c93937d18563b478b75641c4ee7 (diff)
libmm-common: include Enums and Flags type information
The code to handle the Enums and Flags type information is automatically built with `glib-mkenums' and the new templates kept under `build-aux'. Note: We currently skip the type information of `MMModemBand'. GFlagsValue can hold only 32-bit types, and we're working with a 64-bit flag here. See: https://bugzilla.gnome.org/show_bug.cgi?id=663054
-rw-r--r--build-aux/Makefile.am4
-rw-r--r--build-aux/mm-enums-types.c.template40
-rw-r--r--build-aux/mm-enums-types.h.template24
-rw-r--r--libmm-common/Makefile.am13
4 files changed, 80 insertions, 1 deletions
diff --git a/build-aux/Makefile.am b/build-aux/Makefile.am
index 86c7f890..652e9325 100644
--- a/build-aux/Makefile.am
+++ b/build-aux/Makefile.am
@@ -1,4 +1,6 @@
EXTRA_DIST = \
header-generator.xsl \
- header-generator-new.xsl
+ header-generator-new.xsl \
+ mm-enums-types.h.template \
+ mm-enums-types.c.template
diff --git a/build-aux/mm-enums-types.c.template b/build-aux/mm-enums-types.c.template
new file mode 100644
index 00000000..680a3264
--- /dev/null
+++ b/build-aux/mm-enums-types.c.template
@@ -0,0 +1,40 @@
+/*** BEGIN file-header ***/
+#include "ModemManager-enums.h"
+#include "mm-enums-types.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_define_type_id__volatile = 0;
+
+ if (g_once_init_enter (&g_define_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_define_type_id =
+ g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+ }
+
+ return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/build-aux/mm-enums-types.h.template b/build-aux/mm-enums-types.h.template
new file mode 100644
index 00000000..0f016630
--- /dev/null
+++ b/build-aux/mm-enums-types.h.template
@@ -0,0 +1,24 @@
+/*** BEGIN file-header ***/
+#ifndef __MM_ENUMS_TYPES_H__
+#define __MM_ENUMS_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+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 /* __MM_ENUMS_TYPES_H__ */
+/*** END file-tail ***/
diff --git a/libmm-common/Makefile.am b/libmm-common/Makefile.am
index 17d8026e..52e4fc35 100644
--- a/libmm-common/Makefile.am
+++ b/libmm-common/Makefile.am
@@ -2,6 +2,7 @@
noinst_LTLIBRARIES = libmm-common.la
GENERATED_H = \
+ mm-enums-types.h \
mm-gdbus-manager.h \
mm-gdbus-sim.h \
mm-gdbus-sms.h \
@@ -9,6 +10,7 @@ GENERATED_H = \
mm-gdbus-modem.h
GENERATED_C = \
+ mm-enums-types.c \
mm-gdbus-manager.c \
mm-gdbus-sim.c \
mm-gdbus-sms.c \
@@ -30,6 +32,17 @@ GENERATED_DOC = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.3gpp.Ussd.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Simple.xml
+# Enum types
+mm-enums-types.h: $(top_srcdir)/include/ModemManager-enums.h $(top_srcdir)/build-aux/mm-enums-types.h.template
+ $(AM_V_GEN) glib-mkenums \
+ --template $(top_srcdir)/build-aux/mm-enums-types.h.template \
+ $(top_srcdir)/include/ModemManager-enums.h > $@
+
+mm-enums-types.c: $(top_srcdir)/include/ModemManager-enums.h $(top_srcdir)/build-aux/mm-enums-types.c.template mm-enums-types.h
+ $(AM_V_GEN) glib-mkenums \
+ --template $(top_srcdir)/build-aux/mm-enums-types.c.template \
+ $(top_srcdir)/include/ModemManager-enums.h > $@
+
# Manager interface
mm_gdbus_manager_generated = \
mm-gdbus-manager.h \