diff options
author | Daniel Zaoui <daniel.zaoui@samsung.com> | 2015-05-06 20:41:59 +0300 |
---|---|---|
committer | Daniel Zaoui <daniel.zaoui@samsung.com> | 2015-05-06 21:09:34 +0300 |
commit | 74f562afcb8f264e6b9529b90372ac49ee04b2d0 (patch) | |
tree | 6a7af583604151e3ee4901f6104b347b9afb6477 | |
parent | 400436cd1af6aef8892ac899eb0844892fc5e54c (diff) | |
download | efl-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.c | 12 | ||||
-rw-r--r-- | src/tests/eolian/data/typedef.eo | 17 | ||||
-rw-r--r-- | src/tests/eolian/data/typedef_ref.c | 16 |
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() |