Use GEnumTypes.

This commit is contained in:
Daiki Ueno
2011-03-23 17:25:29 +09:00
parent 638d41e0b6
commit 048fccd6e0
5 changed files with 99 additions and 20 deletions

View File

@ -88,10 +88,12 @@ libeek_marshalers_sources = \
BUILT_SOURCES = \ BUILT_SOURCES = \
$(libeek_keysym_sources) \ $(libeek_keysym_sources) \
$(libeek_enumtypes_sources) \
$(libeek_marshalers_sources) $(libeek_marshalers_sources)
libeek_la_SOURCES = \ libeek_la_SOURCES = \
$(libeek_sources) \ $(libeek_sources) \
$(srcdir)/eek-enumtypes.c \
$(srcdir)/eek-marshalers.c $(srcdir)/eek-marshalers.c
libeek_la_CFLAGS = $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) $(LIBCROCO_CFLAGS) libeek_la_CFLAGS = $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) $(LIBCROCO_CFLAGS)
@ -175,6 +177,16 @@ eek-unicode-keysym-entries.h: unicode-keysym-entries.txt
eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt
$(PYTHON) ./gen-keysym-entries.py xkeysym_keysym_entries < $< > $@ $(PYTHON) ./gen-keysym-entries.py xkeysym_keysym_entries < $< > $@
eek-enumtypes.h: $(libeek_public_headers) eek-enumtypes.h.template
$(AM_V_GEN) $(GLIB_MKENUMS) --template eek-enumtypes.h.template \
$(libeek_public_headers) > eek-enumtypes.h.tmp && \
mv eek-enumtypes.h.tmp eek-enumtypes.h
eek-enumtypes.c: $(libeek_public_headers) eek-enumtypes.c.template
$(AM_V_GEN) $(GLIB_MKENUMS) --template eek-enumtypes.c.template \
$(libeek_public_headers) > eek-enumtypes.c.tmp && \
mv eek-enumtypes.c.tmp eek-enumtypes.c
# gen marshal # gen marshal
eek-marshalers.h: eek-marshalers.list eek-marshalers.h: eek-marshalers.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --header --internal > $@.tmp && \ $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --header --internal > $@.tmp && \
@ -207,6 +219,8 @@ EXTRA_DIST = \
special-keysym-entries.txt \ special-keysym-entries.txt \
unicode-keysym-entries.txt \ unicode-keysym-entries.txt \
xkeysym-keysym-entries.txt \ xkeysym-keysym-entries.txt \
eek-enumtypes.h.template \
eek-enumtypes.c.template \
eek-marshalers.list eek-marshalers.list
-include $(INTROSPECTION_MAKEFILE) -include $(INTROSPECTION_MAKEFILE)

View File

@ -0,0 +1,36 @@
/*** BEGIN file-header ***/
#include "eek.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 ***/

View File

@ -0,0 +1,24 @@
/*** BEGIN file-header ***/
#ifndef __EEK_ENUMTYPES_H__
#define __EEK_ENUMTYPES_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 /* __EEK_ENUMTYPES_H__ */
/*** END file-tail ***/

View File

@ -36,6 +36,7 @@
#include "eek-key.h" #include "eek-key.h"
#include "eek-symbol.h" #include "eek-symbol.h"
#include "eek-serializable.h" #include "eek-serializable.h"
#include "eek-enumtypes.h"
enum { enum {
PROP_0, PROP_0,
@ -274,7 +275,7 @@ eek_keyboard_set_property (GObject *object,
break; break;
case PROP_MODIFIER_BEHAVIOR: case PROP_MODIFIER_BEHAVIOR:
eek_keyboard_set_modifier_behavior (EEK_KEYBOARD(object), eek_keyboard_set_modifier_behavior (EEK_KEYBOARD(object),
g_value_get_int (value)); g_value_get_enum (value));
break; break;
default: default:
g_object_set_property (object, g_object_set_property (object,
@ -297,7 +298,7 @@ eek_keyboard_get_property (GObject *object,
g_value_set_object (value, priv->layout); g_value_set_object (value, priv->layout);
break; break;
case PROP_MODIFIER_BEHAVIOR: case PROP_MODIFIER_BEHAVIOR:
g_value_set_int (value, g_value_set_enum (value,
eek_keyboard_get_modifier_behavior (EEK_KEYBOARD(object))); eek_keyboard_get_modifier_behavior (EEK_KEYBOARD(object)));
break; break;
default: default:
@ -465,10 +466,11 @@ eek_keyboard_class_init (EekKeyboardClass *klass)
* *
* The modifier handling mode of #EekKeyboard. * The modifier handling mode of #EekKeyboard.
*/ */
pspec = g_param_spec_int ("modifier-behavior", pspec = g_param_spec_enum ("modifier-behavior",
"Modifier behavior", "Modifier behavior",
"Modifier handling mode of the keyboard", "Modifier handling mode of the keyboard",
0, G_MAXINT, EEK_MODIFIER_BEHAVIOR_NONE, EEK_TYPE_MODIFIER_BEHAVIOR,
EEK_MODIFIER_BEHAVIOR_NONE,
G_PARAM_READWRITE); G_PARAM_READWRITE);
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
PROP_MODIFIER_BEHAVIOR, PROP_MODIFIER_BEHAVIOR,

View File

@ -31,6 +31,7 @@
#include "eek-symbol.h" #include "eek-symbol.h"
#include "eek-serializable.h" #include "eek-serializable.h"
#include "eek-enumtypes.h"
enum { enum {
PROP_0, PROP_0,
@ -110,11 +111,11 @@ eek_symbol_set_property (GObject *object,
eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value)); eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value));
break; break;
case PROP_CATEGORY: case PROP_CATEGORY:
eek_symbol_set_category (EEK_SYMBOL(object), g_value_get_uint (value)); eek_symbol_set_category (EEK_SYMBOL(object), g_value_get_enum (value));
break; break;
case PROP_MODIFIER_MASK: case PROP_MODIFIER_MASK:
eek_symbol_set_modifier_mask (EEK_SYMBOL(object), eek_symbol_set_modifier_mask (EEK_SYMBOL(object),
g_value_get_uint (value)); g_value_get_flags (value));
break; break;
case PROP_ICON_NAME: case PROP_ICON_NAME:
eek_symbol_set_icon_name (EEK_SYMBOL(object), eek_symbol_set_icon_name (EEK_SYMBOL(object),
@ -142,10 +143,10 @@ eek_symbol_get_property (GObject *object,
g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object))); g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object)));
break; break;
case PROP_CATEGORY: case PROP_CATEGORY:
g_value_set_uint (value, eek_symbol_get_category (EEK_SYMBOL(object))); g_value_set_enum (value, eek_symbol_get_category (EEK_SYMBOL(object)));
break; break;
case PROP_MODIFIER_MASK: case PROP_MODIFIER_MASK:
g_value_set_uint (value, g_value_set_flags (value,
eek_symbol_get_modifier_mask (EEK_SYMBOL(object))); eek_symbol_get_modifier_mask (EEK_SYMBOL(object)));
break; break;
case PROP_ICON_NAME: case PROP_ICON_NAME:
@ -197,17 +198,19 @@ eek_symbol_class_init (EekSymbolClass *klass)
G_PARAM_CONSTRUCT | G_PARAM_READWRITE); G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_LABEL, pspec); g_object_class_install_property (gobject_class, PROP_LABEL, pspec);
pspec = g_param_spec_uint ("category", pspec = g_param_spec_enum ("category",
"Category", "Category",
"Category of the symbol", "Category of the symbol",
0, G_MAXUINT, 0, EEK_TYPE_SYMBOL_CATEGORY,
EEK_SYMBOL_CATEGORY_UNKNOWN,
G_PARAM_CONSTRUCT | G_PARAM_READWRITE); G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_CATEGORY, pspec); g_object_class_install_property (gobject_class, PROP_CATEGORY, pspec);
pspec = g_param_spec_uint ("modifier-mask", pspec = g_param_spec_flags ("modifier-mask",
"Modifier mask", "Modifier mask",
"Modifier mask of the symbol", "Modifier mask of the symbol",
0, G_MAXUINT, 0, EEK_TYPE_MODIFIER_TYPE,
0,
G_PARAM_CONSTRUCT | G_PARAM_READWRITE); G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_MODIFIER_MASK, pspec); g_object_class_install_property (gobject_class, PROP_MODIFIER_MASK, pspec);