summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Zaoui <daniel.zaoui@samsung.com>2015-05-06 20:41:59 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2015-05-06 21:09:34 +0300
commit74f562afcb8f264e6b9529b90372ac49ee04b2d0 (patch)
tree6a7af583604151e3ee4901f6104b347b9afb6477
parent400436cd1af6aef8892ac899eb0844892fc5e54c (diff)
downloadefl-devs/jackdanielz/eolian_enums.tar.gz
Eolian/Generator: fix enums generationdevs/jackdanielz/eolian_enums
Typedef word was not generated for enums. @fix
-rw-r--r--src/bin/eolian/types_generator.c12
-rw-r--r--src/tests/eolian/data/typedef.eo17
-rw-r--r--src/tests/eolian/data/typedef_ref.c16
3 files changed, 38 insertions, 7 deletions
diff --git a/src/bin/eolian/types_generator.c b/src/bin/eolian/types_generator.c
index 6f11be5edc..eda3ae1515 100644
--- a/src/bin/eolian/types_generator.c
+++ b/src/bin/eolian/types_generator.c
@@ -118,14 +118,11 @@ _type_generate(const Eolian_Type *tp, Eina_Bool in_typedef, Eina_Bool full)
break;
}
char *pre = NULL;
- eina_strbuf_append_printf(buf, "enum %s {\n", name);
+ eina_strbuf_append_printf(buf, "typedef enum\n{\n");
if (eolian_type_enum_legacy_prefix_get(tp))
- {
- pre = strdup(eolian_type_enum_legacy_prefix_get(tp));
- free(name);
- }
+ pre = strdup(eolian_type_enum_legacy_prefix_get(tp));
else
- pre = name;
+ pre = strdup(name);
eina_str_toupper(&pre);
Eina_Iterator *members = eolian_type_enum_fields_get(tp);
Eina_Bool next = eina_iterator_next(members, (void**)&member);
@@ -162,10 +159,11 @@ _type_generate(const Eolian_Type *tp, Eina_Bool in_typedef, Eina_Bool full)
if (desc) eina_strbuf_append_printf(buf, " /** %s */", desc);
eina_strbuf_append(buf, "\n");
}
+ eina_strbuf_append_printf(buf, "} %s", name);
eina_strbuf_free(membuf);
+ free(name);
free(pre);
eina_iterator_free(members);
- eina_strbuf_append(buf, "}");
break;
}
default:
diff --git a/src/tests/eolian/data/typedef.eo b/src/tests/eolian/data/typedef.eo
index 4044740c34..ed6e100044 100644
--- a/src/tests/eolian/data/typedef.eo
+++ b/src/tests/eolian/data/typedef.eo
@@ -1,6 +1,23 @@
type Evas.Coord: int; /* Simple type definition */
type List_Objects: own(list<Eo *>*); /* A little more complex */
+enum Enum.Bar
+{
+ legacy: bar;
+ first_item = 0,
+ second_item,
+ last_item
+}
+
+enum Elm.Object.Select_Mode
+{
+ default = 0,
+ always,
+ none,
+ display_only,
+ max
+}
+
class Typedef {
methods {
foo {
diff --git a/src/tests/eolian/data/typedef_ref.c b/src/tests/eolian/data/typedef_ref.c
index a47b9c1143..791d221cba 100644
--- a/src/tests/eolian/data/typedef_ref.c
+++ b/src/tests/eolian/data/typedef_ref.c
@@ -15,6 +15,22 @@ typedef int Evas_Coord;
typedef Eina_List *List_Objects;
+typedef enum
+{
+ BAR_FIRST_ITEM = 0,
+ BAR_SECOND_ITEM,
+ BAR_LAST_ITEM
+} Enum_Bar;
+
+typedef enum
+{
+ ELM_OBJECT_SELECT_MODE_DEFAULT = 0,
+ ELM_OBJECT_SELECT_MODE_ALWAYS,
+ ELM_OBJECT_SELECT_MODE_NONE,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY,
+ ELM_OBJECT_SELECT_MODE_MAX
+} Elm_Object_Select_Mode;
+
#endif
#define TYPEDEF_CLASS typedef_class_get()