From 74f562afcb8f264e6b9529b90372ac49ee04b2d0 Mon Sep 17 00:00:00 2001 From: Daniel Zaoui Date: Wed, 6 May 2015 20:41:59 +0300 Subject: Eolian/Generator: fix enums generation Typedef word was not generated for enums. @fix --- src/bin/eolian/types_generator.c | 12 +++++------- src/tests/eolian/data/typedef.eo | 17 +++++++++++++++++ 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*); /* 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() -- cgit v1.2.1