eolian: Add inarray and inlist to source generation

This commit is contained in:
Felipe Magno de Almeida 2017-12-04 20:32:06 -02:00
parent e7803cc429
commit 66eb8ddfeb
2 changed files with 28 additions and 4 deletions

View File

@ -189,14 +189,20 @@ _generate_iterative_free(Eina_Strbuf **buf, const Eolian_Type *type, const Eolia
iterator_header = eina_strbuf_new();
iter_param = eina_strbuf_new();
Eolian_Type_Builtin_Type t = eolian_type_builtin_type_get(type);
eina_strbuf_append_printf(iter_param, "%s_iter", eolian_parameter_name_get(parameter));
//generate the field definition
eina_strbuf_append_printf(*buf, " %s", eolian_type_c_type_get(inner_type, EOLIAN_C_TYPE_DEFAULT));
if(t == EOLIAN_TYPE_BUILTIN_INARRAY
|| t == EOLIAN_TYPE_BUILTIN_INLIST)
{
eina_strbuf_append(*buf, "*");
}
eina_strbuf_append_buffer(*buf, iter_param);
eina_strbuf_append(*buf, ";\n");
Eolian_Type_Builtin_Type t = eolian_type_builtin_type_get(type);
if (t == EOLIAN_TYPE_BUILTIN_LIST)
{
@ -207,6 +213,24 @@ _generate_iterative_free(Eina_Strbuf **buf, const Eolian_Type *type, const Eolia
eina_strbuf_append(*buf, ")\n");
_generate_loop_content(buf, inner_type, iter_param);
}
else if (t == EOLIAN_TYPE_BUILTIN_INARRAY)
{
eina_strbuf_append_printf(*buf, " EINA_INARRAY_FOREACH(");
eina_strbuf_append_buffer(*buf, param);
eina_strbuf_append_char(*buf, ',');
eina_strbuf_append_buffer(*buf, iter_param);
eina_strbuf_append(*buf, ")\n");
_generate_loop_content(buf, inner_type, iter_param);
}
else if (t == EOLIAN_TYPE_BUILTIN_INLIST)
{
eina_strbuf_append_printf(*buf, " EINA_INLIST_FREE(");
eina_strbuf_append_buffer(*buf, param);
eina_strbuf_append_char(*buf, ',');
eina_strbuf_append_buffer(*buf, iter_param);
eina_strbuf_append(*buf, ")\n");
_generate_loop_content(buf, inner_type, iter_param);
}
else if (t == EOLIAN_TYPE_BUILTIN_ITERATOR)
{
eina_strbuf_append_printf(*buf, " EINA_ITERATOR_FOREACH(");
@ -237,7 +261,7 @@ _generate_iterative_free(Eina_Strbuf **buf, const Eolian_Type *type, const Eolia
}
else
{
printf("Error, container unknown?!\n");
printf("Error, container unknown?! %d\n", (int)t);
}
eina_strbuf_free(iterator_header);

View File

@ -370,7 +370,7 @@ class Test.Testing (Efl.Object) {
/* Integer */
eina_inarray_int_in {
params {
@in arr: inarray<int>;
@in arr: inarray<ptr(int)>;
}
return: bool;
}
@ -387,7 +387,7 @@ class Test.Testing (Efl.Object) {
eina_inarray_int_out {
params {
@out arr: inarray<int>;
@out arr: inarray<ptr(int)>;
}
return: bool;
}