diff options
-rw-r--r-- | src/bin/eolian/types_generator.c | 55 |
1 files changed, 15 insertions, 40 deletions
diff --git a/src/bin/eolian/types_generator.c b/src/bin/eolian/types_generator.c index 96811b7eaa..d18a0df6d6 100644 --- a/src/bin/eolian/types_generator.c +++ b/src/bin/eolian/types_generator.c @@ -159,55 +159,30 @@ _type_generate(const Eolian_Type *tp, Eina_Bool full) Eina_Bool types_header_generate(const char *eo_filename, Eina_Strbuf *buf, Eina_Bool full) { - const Eolian_Type *tp; + const Eolian_Declaration *decl; - /* Generation of typedefs */ - Eina_Iterator *itr = eolian_type_aliases_get_by_file(eo_filename); - EINA_ITERATOR_FOREACH(itr, tp) + Eina_Iterator *itr = eolian_declarations_get_by_file(eo_filename); + EINA_ITERATOR_FOREACH(itr, decl) { - if (eolian_type_is_extern(tp)) + Eolian_Declaration_Type dt = eolian_declaration_type_get(decl); + if (dt != EOLIAN_DECL_ALIAS && + dt != EOLIAN_DECL_STRUCT && + dt != EOLIAN_DECL_ENUM) continue; - Eina_Strbuf *type_buf = _type_generate(tp, full); - if (type_buf) - { - eina_strbuf_append(buf, eina_strbuf_string_get(type_buf)); - eina_strbuf_append(buf, ";\n\n"); - eina_strbuf_free(type_buf); - } - } - eina_iterator_free(itr); - /* Generation of structs */ - itr = eolian_type_structs_get_by_file(eo_filename); - EINA_ITERATOR_FOREACH(itr, tp) - { - if (eolian_type_is_extern(tp)) + if (dt == EOLIAN_DECL_ENUM && !full) continue; - Eina_Strbuf *type_buf = _type_generate(tp, full); - if (type_buf) - { - eina_strbuf_append(buf, eina_strbuf_string_get(type_buf)); - eina_strbuf_append(buf, ";\n\n"); - eina_strbuf_free(type_buf); - } - } - eina_iterator_free(itr); - if (!full) - return EINA_TRUE; - - /* Generation of enums */ - itr = eolian_type_enums_get_by_file(eo_filename); - EINA_ITERATOR_FOREACH(itr, tp) - { - if (eolian_type_is_extern(tp)) + const Eolian_Type *tp = eolian_declaration_data_type_get(decl); + if (!tp || eolian_type_is_extern(tp)) continue; - Eina_Strbuf *type_buf = _type_generate(tp, EINA_TRUE); - if (type_buf) + + Eina_Strbuf *tbuf = _type_generate(tp, full); + if (tbuf) { - eina_strbuf_append(buf, eina_strbuf_string_get(type_buf)); + eina_strbuf_append(buf, eina_strbuf_string_get(tbuf)); eina_strbuf_append(buf, ";\n\n"); - eina_strbuf_free(type_buf); + eina_strbuf_free(tbuf); } } eina_iterator_free(itr); |