aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@samsung.com>2019-02-28 20:25:51 +0100
committerDaniel Kolesa <d.kolesa@samsung.com>2019-02-28 20:28:24 +0100
commit4b1622b5fc7c6aaafb4d70f187ec5ea797275a26 (patch)
tree85c9efcc04cbc54d2ecee1cc59750087e986e021
parentefl.access.object: iconified -> minimized (diff)
downloadefl-4b1622b5fc7c6aaafb4d70f187ec5ea797275a26.tar.gz
eolian: remove support for inlist/inarray
This feature was kind of ill-conceived and never worked properly. Since there isn't enough time to make it work right at this point and there are no users of it in the API, remove it for now. It might get added in the next release cycle, in a proper form. @feature
-rw-r--r--src/bin/eolian/sources.c23
-rw-r--r--src/bindings/luajit/eolian.lua20
-rw-r--r--src/lib/eolian/Eolian.h64
-rw-r--r--src/lib/eolian/database_check.c1
-rw-r--r--src/lib/eolian/database_type.c17
-rw-r--r--src/lib/eolian/database_type_api.c4
-rw-r--r--src/lib/eolian/database_validate.c25
-rw-r--r--src/lib/eolian/eo_lexer.c2
-rw-r--r--src/lib/eolian/eo_lexer.h2
-rw-r--r--src/lib/eolian/eo_parser.c23
-rw-r--r--src/lib/eolian/eolian_database.c36
-rw-r--r--src/lib/eolian/eolian_database.h4
-rw-r--r--src/scripts/pyolian/eolian.py24
13 files changed, 39 insertions, 206 deletions
diff --git a/src/bin/eolian/sources.c b/src/bin/eolian/sources.c
index fe0413de99..a973dd35f5 100644
--- a/src/bin/eolian/sources.c
+++ b/src/bin/eolian/sources.c
@@ -194,11 +194,6 @@ _generate_iterative_free(Eina_Strbuf **buf, const Eolian_Type *type, const Eolia
//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");
@@ -212,24 +207,6 @@ _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(");
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index d65c61b946..0e72db3c05 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -153,8 +153,6 @@ ffi.cdef [[
EOLIAN_TYPE_BUILTIN_ITERATOR,
EOLIAN_TYPE_BUILTIN_HASH,
EOLIAN_TYPE_BUILTIN_LIST,
- EOLIAN_TYPE_BUILTIN_INARRAY,
- EOLIAN_TYPE_BUILTIN_INLIST,
EOLIAN_TYPE_BUILTIN_ANY_VALUE,
EOLIAN_TYPE_BUILTIN_ANY_VALUE_PTR,
@@ -838,19 +836,17 @@ M.type_builtin_type = {
ITERATOR = 37,
HASH = 38,
LIST = 39,
- INARRAY = 40,
- INLIST = 41,
- ANY_VALUE = 42,
- ANY_VALUE_PTR = 43,
+ ANY_VALUE = 40,
+ ANY_VALUE_PTR = 41,
- MSTRING = 44,
- STRING = 45,
- STRINGSHARE = 46,
- STRBUF = 47,
+ MSTRING = 42,
+ STRING = 43,
+ STRINGSHARE = 44,
+ STRBUF = 45,
- VOID_PTR = 48,
- FREE_CB = 49
+ VOID_PTR = 46,
+ FREE_CB = 47
}
M.typedecl_type = {
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 321a1ff5af..aebe165f57 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -264,8 +264,7 @@ typedef enum
EOLIAN_TYPEDECL_STRUCT_OPAQUE,
EOLIAN_TYPEDECL_ENUM,
EOLIAN_TYPEDECL_ALIAS,
- EOLIAN_TYPEDECL_FUNCTION_POINTER,
- EOLIAN_TYPEDECL_STRUCT_INLIST
+ EOLIAN_TYPEDECL_FUNCTION_POINTER
} Eolian_Typedecl_Type;
typedef enum
@@ -328,8 +327,6 @@ typedef enum
EOLIAN_TYPE_BUILTIN_ITERATOR,
EOLIAN_TYPE_BUILTIN_HASH,
EOLIAN_TYPE_BUILTIN_LIST,
- EOLIAN_TYPE_BUILTIN_INARRAY,
- EOLIAN_TYPE_BUILTIN_INLIST,
EOLIAN_TYPE_BUILTIN_ANY_VALUE,
EOLIAN_TYPE_BUILTIN_ANY_VALUE_PTR,
@@ -1052,16 +1049,6 @@ EAPI const Eolian_Typedecl *eolian_unit_struct_by_name_get(const Eolian_Unit *un
EAPI const Eolian_Typedecl *eolian_unit_enum_by_name_get(const Eolian_Unit *unit, const char *name);
/*
- * @brief Get an inlist struct declaration within a unit by name.
- *
- * @param[in] unit The unit.
- * @param[in] name The name of the alias.
- *
- * @ingroup Eolian
- */
-EAPI const Eolian_Typedecl *eolian_unit_inlist_struct_by_name_get(const Eolian_Unit *unit, const char *name);
-
-/*
* @brief Get an iterator to all aliases in the Eolian database.
*
* @param[in] unit The unit.
@@ -1095,17 +1082,6 @@ EAPI Eina_Iterator *eolian_unit_structs_get(const Eolian_Unit *unit);
EAPI Eina_Iterator *eolian_unit_enums_get(const Eolian_Unit *unit);
/*
- * @brief Get an iterator to all inlist structs in the Eolian database.
- *
- * @param[in] unit The unit.
- *
- * Thanks to internal caching, this is an O(1) operation.
- *
- * @ingroup Eolian
- */
-EAPI Eina_Iterator *eolian_unit_inlist_structs_get(const Eolian_Unit *unit);
-
-/*
* @brief A helper function to get an object in a state by name.
*
* @see eolian_unit_object_by_name_get
@@ -1298,19 +1274,6 @@ eolian_state_enum_by_name_get(const Eolian_State *state, const char *name)
}
/*
- * @brief A helper function to get an inlist struct in a state by name.
- *
- * @see eolian_unit_inlist_struct_by_name_get
- *
- * @ingroup Eolian
- */
-static inline const Eolian_Typedecl *
-eolian_state_inlist_struct_by_name_get(const Eolian_State *state, const char *name)
-{
- return eolian_unit_inlist_struct_by_name_get(EOLIAN_UNIT(state), name);
-}
-
-/*
* @brief Get an iterator to all aliases contained in a file.
*
* @param[in] state The state.
@@ -1347,18 +1310,6 @@ EAPI Eina_Iterator *eolian_state_structs_by_file_get(const Eolian_State *state,
EAPI Eina_Iterator *eolian_state_enums_by_file_get(const Eolian_State *state, const char *file_name);
/*
- * @brief Get an iterator to all inlist structs contained in a file.
- *
- * @param[in] state The state.
- * @param[in] file_name The file name.
- *
- * Thanks to internal caching, this is an O(1) operation.
- *
- * @ingroup Eolian
- */
-EAPI Eina_Iterator *eolian_state_inlist_structs_by_file_get(const Eolian_State *state, const char *file_name);
-
-/*
* @brief A helper function to get all aliases in a state.
*
* @see eolian_unit_aliases_get
@@ -1398,19 +1349,6 @@ eolian_state_enums_get(const Eolian_State *state)
}
/*
- * @brief A helper function to get all inlist structs in a state.
- *
- * @see eolian_unit_inlist_structs_get
- *
- * @ingroup Eolian
- */
-static inline Eina_Iterator *
-eolian_state_inlist_structs_get(const Eolian_State *state)
-{
- return eolian_unit_inlist_structs_get(EOLIAN_UNIT(state));
-}
-
-/*
* @brief A helper function to get the full name of a class.
*
* @see eolian_object_name_get
diff --git a/src/lib/eolian/database_check.c b/src/lib/eolian/database_check.c
index cc5a697d31..61afa6e281 100644
--- a/src/lib/eolian/database_check.c
+++ b/src/lib/eolian/database_check.c
@@ -172,7 +172,6 @@ _check_typedecl(const Eolian_Typedecl *tp, Eina_Hash *depset, Eina_Hash *chash)
switch (tp->type)
{
case EOLIAN_TYPEDECL_STRUCT:
- case EOLIAN_TYPEDECL_STRUCT_INLIST:
_check_type(((const Eolian_Struct_Type_Field *)data)->type,
depset, chash);
break;
diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index 7db0fe2fa1..79343a39d4 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -43,18 +43,10 @@ database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
}
void
-database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp, Eina_Bool is_inlist)
+database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
{
- if (is_inlist)
- {
- EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, inlists);
- }
- else
- {
- EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, structs);
- }
- Eina_Hash *sh = is_inlist ? unit->state->staging.inlists_f
- : unit->state->staging.structs_f;
+ EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, structs);
+ Eina_Hash *sh = unit->state->staging.structs_f;
eina_hash_set(sh, tp->base.file, eina_list_append
((Eina_List*)eina_hash_find(sh, tp->base.file), tp));
database_object_add(unit, &tp->base);
@@ -169,8 +161,6 @@ _stype_to_str(const Eolian_Typedecl *tp, Eina_Strbuf *buf)
if (tp->type == EOLIAN_TYPEDECL_STRUCT_OPAQUE)
return;
eina_strbuf_append(buf, " { ");
- if (tp->type == EOLIAN_TYPEDECL_STRUCT_INLIST)
- eina_strbuf_append(buf, "EINA_INLIST; ");
Eina_List *l;
Eolian_Struct_Type_Field *sf;
EINA_LIST_FOREACH(tp->field_list, l, sf)
@@ -245,7 +235,6 @@ database_typedecl_to_str(const Eolian_Typedecl *tp, Eina_Strbuf *buf)
break;
case EOLIAN_TYPEDECL_STRUCT:
case EOLIAN_TYPEDECL_STRUCT_OPAQUE:
- case EOLIAN_TYPEDECL_STRUCT_INLIST:
_stype_to_str(tp, buf);
break;
default:
diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c
index a0887943f1..7d471c7ee4 100644
--- a/src/lib/eolian/database_type_api.c
+++ b/src/lib/eolian/database_type_api.c
@@ -31,7 +31,7 @@ EAPI Eina_Iterator *
eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
- if (tp->type != EOLIAN_TYPEDECL_STRUCT && tp->type != EOLIAN_TYPEDECL_STRUCT_INLIST)
+ if (tp->type != EOLIAN_TYPEDECL_STRUCT)
return NULL;
return eina_list_iterator_new(tp->field_list);
}
@@ -42,7 +42,7 @@ eolian_typedecl_struct_field_get(const Eolian_Typedecl *tp, const char *field)
Eolian_Struct_Type_Field *sf = NULL;
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(field, NULL);
- if (tp->type != EOLIAN_TYPEDECL_STRUCT && tp->type != EOLIAN_TYPEDECL_STRUCT_INLIST)
+ if (tp->type != EOLIAN_TYPEDECL_STRUCT)
return NULL;
sf = eina_hash_find(tp->fields, field);
if (!sf) return NULL;
diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c
index 09ca6e5de3..cdc31b0ebb 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -171,25 +171,6 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp)
if (!tp->freefunc && tp->base_type->freefunc)
tp->freefunc = eina_stringshare_ref(tp->base_type->freefunc);
return _validate(&tp->base);
- case EOLIAN_TYPEDECL_STRUCT_INLIST:
- if (eina_hash_population(tp->fields) == 1)
- {
- Eina_Iterator *itr = eina_hash_iterator_data_new(tp->fields);
- const Eolian_Struct_Type_Field *sf;
- if (!eina_iterator_next(itr, (void **)&sf))
- {
- _eo_parser_log(&tp->base, "internal error: failed fetching field");
- eina_iterator_free(itr);
- return EINA_FALSE;
- }
- eina_iterator_free(itr);
- if (database_type_is_ownable(tp->base.unit, sf->type, EINA_FALSE))
- {
- _eo_parser_log(&sf->base, "single-field inlist struct must contain a value type");
- return EINA_FALSE;
- }
- }
- /* fallthrough */
case EOLIAN_TYPEDECL_STRUCT:
{
Cb_Ret rt = { vals, EINA_TRUE };
@@ -222,7 +203,7 @@ static const char * const eo_complex_frees[] =
{
"eina_accessor_free", "eina_array_free", "(void)", /* future */
"eina_iterator_free", "eina_hash_free",
- "eina_list_free", "eina_inarray_free", "(void)"
+ "eina_list_free"
};
static const char *eo_obj_free = "efl_del";
@@ -1407,10 +1388,6 @@ database_validate(const Eolian_Unit *src)
if (!rt.succ)
return EINA_FALSE;
- eina_hash_foreach(src->inlists, (Eina_Hash_Foreach)_typedecl_map_cb, &rt);
- if (!rt.succ)
- return EINA_FALSE;
-
eina_hash_foreach(src->globals, (Eina_Hash_Foreach)_var_map_cb, &rt);
if (!rt.succ)
return EINA_FALSE;
diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
index d548cbe157..6b2747a130 100644
--- a/src/lib/eolian/eo_lexer.c
+++ b/src/lib/eolian/eo_lexer.c
@@ -75,7 +75,7 @@ static const char * const ctypes[] =
"void",
"Eina_Accessor *", "Eina_Array *", "Eina_Future *", "Eina_Iterator *",
- "Eina_Hash *", "Eina_List *", "Eina_Inarray *", "Eina_Inlist *",
+ "Eina_Hash *", "Eina_List *",
"Eina_Value", "Eina_Value *",
"char *", "const char *", "Eina_Stringshare *", "Eina_Strbuf *",
diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 5fca6d8644..dc8d171b02 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -55,7 +55,7 @@ enum Tokens
KW(void), \
\
KW(accessor), KW(array), KW(future), KW(iterator), KW(hash), KW(list), \
- KW(inarray), KW(inlist), KW(any_value), KW(any_value_ptr), \
+ KW(any_value), KW(any_value_ptr), \
KW(mstring), KW(string), KW(stringshare), KW(strbuf), \
\
KW(void_ptr), \
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 661ca9e75d..626e75b2ab 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -133,7 +133,6 @@ _eolian_decl_name_get(Eolian_Object *obj)
return "type alias";
case EOLIAN_TYPEDECL_STRUCT:
case EOLIAN_TYPEDECL_STRUCT_OPAQUE:
- case EOLIAN_TYPEDECL_STRUCT_INLIST:
return "struct";
case EOLIAN_TYPEDECL_ENUM:
return "enum";
@@ -434,13 +433,13 @@ _struct_field_free(Eolian_Struct_Type_Field *def)
static Eolian_Typedecl *
parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool is_extern,
- int line, int column, const char *freefunc, Eina_Bool is_inlist)
+ int line, int column, const char *freefunc)
{
int bline = ls->line_number, bcolumn = ls->column;
Eolian_Typedecl *def = eo_lexer_typedecl_new(ls);
def->is_extern = is_extern;
def->base.name = name;
- def->type = is_inlist ? EOLIAN_TYPEDECL_STRUCT_INLIST : EOLIAN_TYPEDECL_STRUCT;
+ def->type = EOLIAN_TYPEDECL_STRUCT;
def->fields = eina_hash_string_small_new(EINA_FREE_CB(_struct_field_free));
if (freefunc)
{
@@ -476,7 +475,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool is_extern,
}
check_match(ls, '}', '{', bline, bcolumn);
FILL_BASE(def->base, ls, line, column, TYPEDECL);
- database_struct_add(ls->unit, eo_lexer_typedecl_release(ls, def), is_inlist);
+ database_struct_add(ls->unit, eo_lexer_typedecl_release(ls, def));
return def;
}
@@ -685,7 +684,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ptr)
def->btype = ls->t.kw - KW_byte + 1;
def->base.name = eina_stringshare_ref(ls->t.value.s);
eo_lexer_get(ls);
- if ((tpid >= KW_accessor && tpid <= KW_inlist) ||
+ if ((tpid >= KW_accessor && tpid <= KW_list) ||
(tpid >= KW_slice && tpid <= KW_rw_slice))
{
int bline = ls->line_number, bcol = ls->column;
@@ -2206,24 +2205,18 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot)
}
case KW_struct:
case KW_enum:
- case KW_inlist:
{
Eina_Bool is_enum = (ls->t.kw == KW_enum);
- Eina_Bool is_inlist = (ls->t.kw == KW_inlist);
const char *name;
int line, col;
const char *freefunc = NULL;
Eina_Strbuf *buf;
eo_lexer_get(ls);
- if (is_inlist)
- check_kw_next(ls, KW_struct);
Eina_Bool has_extern = EINA_FALSE, has_free = EINA_FALSE;
for (;;) switch (ls->t.kw)
{
case KW_at_extern:
CASE_LOCK(ls, extern, "@extern qualifier")
- if (is_inlist)
- eo_lexer_syntax_error(ls, "inlist structs cannot be @extern");
eo_lexer_get(ls);
break;
case KW_at_free:
@@ -2261,13 +2254,13 @@ postparams:
eo_lexer_context_restore(ls);
Eolian_Typedecl tdecl;
tdecl.base.type = EOLIAN_OBJECT_TYPEDECL;
- tdecl.type = is_inlist ? EOLIAN_TYPEDECL_STRUCT_INLIST :
+ tdecl.type =
(is_enum ? EOLIAN_TYPEDECL_ENUM : EOLIAN_TYPEDECL_STRUCT);
redef_error(ls, decl, &tdecl.base);
}
eo_lexer_context_pop(ls);
eo_lexer_dtor_pop(ls);
- if (!is_enum && !is_inlist && ls->t.token == ';')
+ if (!is_enum && ls->t.token == ';')
{
Eolian_Typedecl *def = eo_lexer_typedecl_new(ls);
def->is_extern = has_extern;
@@ -2281,13 +2274,13 @@ postparams:
eo_lexer_get(ls);
FILL_DOC(ls, def, doc);
FILL_BASE(def->base, ls, line, col, TYPEDECL);
- database_struct_add(ls->unit, eo_lexer_typedecl_release(ls, def), EINA_FALSE);
+ database_struct_add(ls->unit, eo_lexer_typedecl_release(ls, def));
break;
}
if (is_enum)
parse_enum(ls, name, has_extern, line, col);
else
- parse_struct(ls, name, has_extern, line, col, freefunc, is_inlist);
+ parse_struct(ls, name, has_extern, line, col, freefunc);
break;
}
def:
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index a97c53f526..eb6e896bab 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -557,7 +557,6 @@ database_unit_init(Eolian_State *state, Eolian_Unit *unit, const char *file)
unit->aliases = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
unit->structs = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
unit->enums = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
- unit->inlists = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del));
unit->objects = eina_hash_stringshared_new(NULL);
}
@@ -572,7 +571,6 @@ _unit_contents_del(Eolian_Unit *unit)
eina_hash_free(unit->aliases);
eina_hash_free(unit->structs);
eina_hash_free(unit->enums);
- eina_hash_free(unit->inlists);
eina_hash_free(unit->objects);
}
@@ -620,7 +618,6 @@ _state_area_init(Eolian_State *state, Eolian_State_Area *a)
a->aliases_f = eina_hash_stringshared_new(NULL);
a->structs_f = eina_hash_stringshared_new(NULL);
a->enums_f = eina_hash_stringshared_new(NULL);
- a->inlists_f = eina_hash_stringshared_new(NULL);
a->globals_f = eina_hash_stringshared_new(NULL);
a->constants_f = eina_hash_stringshared_new(NULL);
a->objects_f = eina_hash_stringshared_new(NULL);
@@ -647,7 +644,6 @@ _state_area_contents_del(Eolian_State_Area *a)
_hashlist_free(a->aliases_f);
_hashlist_free(a->structs_f);
_hashlist_free(a->enums_f);
- _hashlist_free(a->inlists_f);
_hashlist_free(a->globals_f);
_hashlist_free(a->constants_f);
_hashlist_free(a->objects_f);
@@ -852,7 +848,6 @@ _state_clean(Eolian_State *state)
eina_hash_free_buckets(stu->aliases);
eina_hash_free_buckets(stu->structs);
eina_hash_free_buckets(stu->enums);
- eina_hash_free_buckets(stu->inlists);
eina_hash_free_buckets(stu->objects);
eina_hash_foreach(st->units, _ulist_free_cb, NULL);
@@ -863,7 +858,6 @@ _state_clean(Eolian_State *state)
_hashlist_free_buckets(st->aliases_f);
_hashlist_free_buckets(st->structs_f);
_hashlist_free_buckets(st->enums_f);
- _hashlist_free_buckets(st->inlists_f);
_hashlist_free_buckets(st->globals_f);
_hashlist_free_buckets(st->constants_f);
_hashlist_free_buckets(st->objects_f);
@@ -958,7 +952,6 @@ _merge_unit(Eolian_Unit *dest, Eolian_Unit *src)
eina_hash_foreach(src->aliases, _merge_unit_cb, dest->aliases);
eina_hash_foreach(src->structs, _merge_unit_cb, dest->structs);
eina_hash_foreach(src->enums, _merge_unit_cb, dest->enums);
- eina_hash_foreach(src->inlists, _merge_unit_cb, dest->inlists);
eina_hash_foreach(src->objects, _merge_unit_cb_noref, dest->objects);
}
@@ -1017,7 +1010,6 @@ _merge_staging(Eolian_State *state)
EOLIAN_STAGING_MERGE_LIST(aliases);
EOLIAN_STAGING_MERGE_LIST(structs);
EOLIAN_STAGING_MERGE_LIST(enums);
- EOLIAN_STAGING_MERGE_LIST(inlists);
EOLIAN_STAGING_MERGE_LIST(globals);
EOLIAN_STAGING_MERGE_LIST(constants);
EOLIAN_STAGING_MERGE_LIST(objects);
@@ -1213,17 +1205,6 @@ eolian_state_enums_by_file_get(const Eolian_State *state, const char *file_name)
return eina_list_iterator_new(l);
}
-EAPI Eina_Iterator *
-eolian_state_inlist_structs_by_file_get(const Eolian_State *state, const char *file_name)
-{
- if (!state) return NULL;
- Eina_Stringshare *shr = eina_stringshare_add(file_name);
- Eina_List *l = eina_hash_find(state->main.inlists_f, shr);
- eina_stringshare_del(shr);
- if (!l) return NULL;
- return eina_list_iterator_new(l);
-}
-
EAPI const Eolian_State *
eolian_unit_state_get(const Eolian_Unit *unit)
{
@@ -1351,17 +1332,6 @@ eolian_unit_enum_by_name_get(const Eolian_Unit *unit, const char *name)
return tp;
}
-EAPI const Eolian_Typedecl *
-eolian_unit_inlist_struct_by_name_get(const Eolian_Unit *unit, const char *name)
-{
- if (!unit) return NULL;
- Eina_Stringshare *shr = eina_stringshare_add(name);
- Eolian_Typedecl *tp = eina_hash_find(unit->inlists, shr);
- eina_stringshare_del(shr);
- if (!tp) return NULL;
- return tp;
-}
-
EAPI Eina_Iterator *
eolian_unit_aliases_get(const Eolian_Unit *unit)
{
@@ -1380,12 +1350,6 @@ eolian_unit_enums_get(const Eolian_Unit *unit)
return (unit ? eina_hash_iterator_data_new(unit->enums) : NULL);
}
-EAPI Eina_Iterator *
-eolian_unit_inlist_structs_get(const Eolian_Unit *unit)
-{
- return (unit ? eina_hash_iterator_data_new(unit->inlists) : NULL);
-}
-
char *
database_class_to_filename(const char *cname)
{
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index fd15d6401a..b70f2b4f1e 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -44,7 +44,6 @@ struct _Eolian_Unit
Eina_Hash *aliases;
Eina_Hash *structs;
Eina_Hash *enums;
- Eina_Hash *inlists;
Eina_Hash *objects;
};
@@ -58,7 +57,6 @@ typedef struct _Eolian_State_Area
Eina_Hash *aliases_f;
Eina_Hash *structs_f;
Eina_Hash *enums_f;
- Eina_Hash *inlists_f;
Eina_Hash *globals_f;
Eina_Hash *constants_f;
Eina_Hash *objects_f;
@@ -409,7 +407,7 @@ Eolian_Object_Type database_doc_token_ref_resolve(const Eolian_Doc_Token *tok,
/* types */
void database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp);
-void database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp, Eina_Bool is_inlist);
+void database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp);
void database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp);
void database_type_del(Eolian_Type *tp);
void database_typedecl_del(Eolian_Typedecl *tp);
diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py
index 0df4bc8f10..0df6ee8884 100644
--- a/src/scripts/pyolian/eolian.py
+++ b/src/scripts/pyolian/eolian.py
@@ -116,17 +116,18 @@ class Eolian_Type_Builtin_Type(IntEnum):
DOUBLE = 29
BOOL = 30
- VOID = 31
- ACCESSOR = 32
- ARRAY = 33
- ITERATOR = 34
- HASH = 35
- LIST = 36
- INARRAY = 37
- INLIST = 38
+ SLICE = 31
+ RW_SLICE = 32
- FUTURE = 39
+ VOID = 33
+
+ ACCESSOR = 34
+ ARRAY = 35
+ FUTURE = 36
+ ITERATOR = 37
+ HASH = 38
+ LIST = 39
ANY_VALUE = 40
ANY_VALUE_PTR = 41
@@ -134,9 +135,10 @@ class Eolian_Type_Builtin_Type(IntEnum):
MSTRING = 42
STRING = 43
STRINGSHARE = 44
+ STRBUF = 45
- VOID_PTR = 45
- FREE_CB = 46
+ VOID_PTR = 46
+ FREE_CB = 47
class Eolian_C_Type_Type(IntEnum):
DEFAULT = 0