q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7a4669b1b776652c76a1c629446819890962ac1b
commit 7a4669b1b776652c76a1c629446819890962ac1b Author: Daniel Kolesa <[email protected]> Date: Thu Mar 8 23:59:40 2018 +0100 eolian: remove old declaration APIs --- src/lib/eolian/Eolian.h | 110 +--------------------------- src/lib/eolian/database_type.c | 13 ++-- src/lib/eolian/database_var.c | 5 +- src/lib/eolian/eo_parser.c | 79 ++++++++++++++------ src/lib/eolian/eolian_database.c | 151 ++++++++------------------------------- src/lib/eolian/eolian_database.h | 13 +--- 6 files changed, 98 insertions(+), 273 deletions(-) diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index d5ba7e0ff6..4c460fad2d 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -179,12 +179,6 @@ typedef struct _Eolian_Struct_Type_Field Eolian_Struct_Type_Field; */ typedef struct _Eolian_Enum_Type_Field Eolian_Enum_Type_Field; -/* Declaration information - * - * @ingroup Eolian - */ -typedef struct _Eolian_Declaration Eolian_Declaration; - /* Documentation information * * @ingroup Eolian @@ -213,8 +207,7 @@ typedef enum EOLIAN_OBJECT_PART, EOLIAN_OBJECT_IMPLEMENT, EOLIAN_OBJECT_CONSTRUCTOR, - EOLIAN_OBJECT_DOCUMENTATION, - EOLIAN_OBJECT_DECLARATION + EOLIAN_OBJECT_DOCUMENTATION } Eolian_Object_Type; typedef enum @@ -446,16 +439,6 @@ typedef enum typedef enum { - EOLIAN_DECL_UNKNOWN = 0, - EOLIAN_DECL_CLASS, - EOLIAN_DECL_ALIAS, - EOLIAN_DECL_STRUCT, - EOLIAN_DECL_ENUM, - EOLIAN_DECL_VAR -} Eolian_Declaration_Type; - -typedef enum -{ EOLIAN_DOC_TOKEN_UNKNOWN = 0, EOLIAN_DOC_TOKEN_TEXT, EOLIAN_DOC_TOKEN_REF, @@ -2690,97 +2673,6 @@ EAPI Eina_Iterator *eolian_variable_namespaces_get(const Eolian_Variable *var); EAPI Eina_Bool eolian_variable_is_extern(const Eolian_Variable *var); /* - * @brief Get a declaration by name. - * - * @param[in] unit the unit to look in - * @param[in] name the declaration name. - * @return the declaration. - * - * @ingroup Eolian - */ -EAPI const Eolian_Declaration *eolian_declaration_get_by_name(const Eolian_Unit *unit, const char *name); - -/* - * @brief Get a list of declarations in a file. - * - * This function gets an iterator to a list of declarations in a particular - * file. Declarations are either a class, a type alias, a struct, an enum - * or a variable. This way you can get them all in the original order they - * were declared in, which is useful during generation. - * - * @param[in] state the state to look in - * @param[in] fname the filename. - * @return the iterator or NULL. - * - * @ingroup Eolian - */ -EAPI Eina_Iterator *eolian_declarations_get_by_file(const Eolian_State *state, const char *fname); - -/* - * @brief Get an iterator to all declarations in the Eolian database. - * - * @param[in] unit the unit to look in - * @return the iterator or NULL. - * - * Thanks to internal caching this is an O(1) operation. - * - * @ingroup Eolian - */ -EAPI Eina_Iterator *eolian_all_declarations_get(const Eolian_Unit *unit); - -/* - * @brief Get the type of a declaration - * - * @param[in] decl the declaration - * @return the declaration type - * - * @ingroup Eolian - */ -EAPI Eolian_Declaration_Type eolian_declaration_type_get(const Eolian_Declaration *decl); - -/* - * @brief Get the name of a declaration - * - * This matches the full namespaced name of the data it's holding. - * - * @param[in] decl the declaration - * @return the declaration name - * - * @ingroup Eolian - */ -EAPI Eina_Stringshare *eolian_declaration_name_get(const Eolian_Declaration *decl); - -/* - * @brief Get the class of a class declaration. - * - * @param[in] decl the declaration - * @return the class - * - * @ingroup Eolian - */ -EAPI const Eolian_Class *eolian_declaration_class_get(const Eolian_Declaration *decl); - -/* - * @brief Get the type of a type (alias, struct, enum) declaration. - * - * @param[in] decl the declaration - * @return the type - * - * @ingroup Eolian - */ -EAPI const Eolian_Typedecl *eolian_declaration_data_type_get(const Eolian_Declaration *decl); - -/* - * @brief Get the variable of a variable (constant, global) declaration. - * - * @param[in] decl the declaration - * @return the class - * - * @ingroup Eolian - */ -EAPI const Eolian_Variable *eolian_declaration_variable_get(const Eolian_Declaration *decl); - -/* * @brief Get the summary of the documentation. * * This should never return NULL unless the input is invalid. diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index b89cb0d054..bdceda7c82 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -47,7 +47,7 @@ database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp) eina_hash_set(unit->state->aliases_f, tp->base.file, eina_list_append ((Eina_List*)eina_hash_find(unit->state->aliases_f, tp->base.file), tp)); - database_decl_add(unit, tp->base.name, EOLIAN_DECL_ALIAS, tp->base.file, tp); + database_object_add(unit, &tp->base); } void @@ -56,7 +56,7 @@ database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp) EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, structs); eina_hash_set(unit->state->structs_f, tp->base.file, eina_list_append ((Eina_List*)eina_hash_find(unit->state->structs_f, tp->base.file), tp)); - database_decl_add(unit, tp->base.name, EOLIAN_DECL_STRUCT, tp->base.file, tp); + database_object_add(unit, &tp->base); } void @@ -65,7 +65,7 @@ database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp) EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, enums); eina_hash_set(unit->state->enums_f, tp->base.file, eina_list_append ((Eina_List*)eina_hash_find(unit->state->enums_f, tp->base.file), tp)); - database_decl_add(unit, tp->base.name, EOLIAN_DECL_ENUM, tp->base.file, tp); + database_object_add(unit, &tp->base); } Eina_Bool @@ -278,10 +278,9 @@ Eolian_Typedecl *database_type_decl_find(const Eolian_Unit *unit, const Eolian_T int kw = eo_lexer_keyword_str_to_id(tp->base.name); if (!kw || kw < KW_byte || kw >= KW_true) { - Eolian_Declaration *decl = eina_hash_find(unit->decls, tp->base.name); - if (decl && decl->type != EOLIAN_DECL_CLASS - && decl->type != EOLIAN_DECL_VAR) - return decl->data; + Eolian_Object *decl = eina_hash_find(unit->objects, tp->base.name); + if (decl && decl->type == EOLIAN_OBJECT_TYPEDECL) + return (Eolian_Typedecl *)decl; } return NULL; } diff --git a/src/lib/eolian/database_var.c b/src/lib/eolian/database_var.c index 36d22b3394..796a5ece2b 100644 --- a/src/lib/eolian/database_var.c +++ b/src/lib/eolian/database_var.c @@ -28,16 +28,14 @@ database_var_global_add(Eolian_Unit *unit, Eolian_Variable *var) EOLIAN_OBJECT_ADD(unit, var->base.name, var, globals); eina_hash_set(unit->state->globals_f, var->base.file, eina_list_append ((Eina_List*)eina_hash_find(unit->state->globals_f, var->base.file), var)); - database_decl_add(unit, var->base.name, EOLIAN_DECL_VAR, var->base.file, var); } static void database_var_constant_add(Eolian_Unit *unit, Eolian_Variable *var) { - EOLIAN_OBJECT_ADD(unit, var->base.name, var, constants); + EOLIAN_OBJECT_ADD(unit, var->base.name, var, constants); eina_hash_set(unit->state->constants_f, var->base.file, eina_list_append ((Eina_List*)eina_hash_find(unit->state->constants_f, var->base.file), var)); - database_decl_add(unit, var->base.name, EOLIAN_DECL_VAR, var->base.file, var); } void @@ -47,4 +45,5 @@ database_var_add(Eolian_Unit *unit, Eolian_Variable *var) database_var_global_add(unit, var); else database_var_constant_add(unit, var); + database_object_add(unit, &var->base); } diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 89a5ccd79f..ad592fa8f9 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -161,26 +161,63 @@ compare_class_file(const char *fn1, const char *fn2) return !strcmp(fn1, fn2); } -static const char *declnames[] = { - "class", "type alias", "struct", "enum", "variable" -}; + +static Eolian_Object * +_eolian_decl_get(Eo_Lexer *ls, const char *name) +{ + Eolian_Object *obj = eina_hash_find(ls->state->unit.objects, name); + if (obj && ((obj->type == EOLIAN_OBJECT_CLASS) || + (obj->type == EOLIAN_OBJECT_TYPEDECL) || + (obj->type == EOLIAN_OBJECT_VARIABLE))) + return obj; + + return NULL; +} + +static const char * +_eolian_decl_name_get(Eolian_Object *obj) +{ + switch (obj->type) + { + case EOLIAN_OBJECT_CLASS: + return "class"; + case EOLIAN_OBJECT_TYPEDECL: + switch (((Eolian_Typedecl *)obj)->type) + { + case EOLIAN_TYPEDECL_ALIAS: + return "type alias"; + case EOLIAN_TYPEDECL_STRUCT: + case EOLIAN_TYPEDECL_STRUCT_OPAQUE: + return "struct"; + case EOLIAN_TYPEDECL_ENUM: + return "enum"; + default: + break; + } + case EOLIAN_OBJECT_VARIABLE: + return "variable"; + default: + break; + } + return "unknown"; +} static void -redef_error(Eo_Lexer *ls, Eolian_Declaration *decl, Eolian_Declaration_Type newt) +redef_error(Eo_Lexer *ls, Eolian_Object *obj, Eolian_Object *nobj) { - Eolian_Object *obj = (Eolian_Object *)decl->data; char buf[256], fbuf[256] = { '\0' }; if (ls->filename != obj->file) snprintf(fbuf, sizeof(fbuf), "%s:%d:%d", obj->file, obj->line, obj->column); else snprintf(fbuf, sizeof(fbuf), "%d:%d", obj->line, obj->column); - if (newt != decl->type) + if (nobj->type != obj->type) snprintf(buf, sizeof(buf), "%s '%s' redefined as %s (originally at %s)", - declnames[decl->type], decl->base.name, declnames[newt], fbuf); + _eolian_decl_name_get(obj), obj->name, + _eolian_decl_name_get(nobj), fbuf); else snprintf(buf, sizeof(buf), "%s '%s' redefined (originally at %s)", - declnames[decl->type], decl->base.name, fbuf); + _eolian_decl_name_get(obj), obj->name, fbuf); eo_lexer_syntax_error(ls, buf); } @@ -832,7 +869,6 @@ parse_type_void(Eo_Lexer *ls) static Eolian_Typedecl * parse_typedef(Eo_Lexer *ls) { - Eolian_Declaration *decl; Eolian_Typedecl *def = push_typedecl(ls); Eina_Bool has_extern; const char *freefunc; @@ -849,11 +885,11 @@ parse_typedef(Eo_Lexer *ls) parse_name(ls, buf); _fill_name(eina_stringshare_add(eina_strbuf_string_get(buf)), &def->base.name, &def->name, &def->namespaces); - decl = (Eolian_Declaration *)eina_hash_find(ls->state->unit.decls, def->base.name); + Eolian_Object *decl = _eolian_decl_get(ls, def->base.name); if (decl) { eo_lexer_context_restore(ls); - redef_error(ls, decl, EOLIAN_DECL_ALIAS); + redef_error(ls, decl, &def->base); } eo_lexer_context_pop(ls); check_next(ls, ':'); @@ -868,7 +904,6 @@ parse_typedef(Eo_Lexer *ls) static Eolian_Variable * parse_variable(Eo_Lexer *ls, Eina_Bool global) { - Eolian_Declaration *decl; Eolian_Variable *def = calloc(1, sizeof(Eolian_Variable)); Eina_Strbuf *buf; ls->tmp.var = def; @@ -885,11 +920,11 @@ parse_variable(Eo_Lexer *ls, Eina_Bool global) parse_name(ls, buf); _fill_name(eina_stringshare_add(eina_strbuf_string_get(buf)), &def->base.name, &def->name, &def->namespaces); - decl = (Eolian_Declaration *)eina_hash_find(ls->state->unit.decls, def->base.name); + Eolian_Object *decl = _eolian_decl_get(ls, def->base.name); if (decl) { eo_lexer_context_restore(ls); - redef_error(ls, decl, EOLIAN_DECL_VAR); + redef_error(ls, decl, &def->base); } eo_lexer_context_pop(ls); check_next(ls, ':'); @@ -2048,7 +2083,6 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf) static void parse_class(Eo_Lexer *ls, Eolian_Class_Type type) { - Eolian_Declaration *decl; const char *bnm; char *fnm; Eina_Bool same; @@ -2073,11 +2107,11 @@ parse_class(Eo_Lexer *ls, Eolian_Class_Type type) _fill_name(eina_stringshare_add(eina_strbuf_string_get(buf)), &ls->tmp.kls->base.name, &ls->tmp.kls->name, &ls->tmp.kls->namespaces); - decl = (Eolian_Declaration *)eina_hash_find(ls->state->unit.decls, ls->tmp.kls->base.name); + Eolian_Object *decl = _eolian_decl_get(ls, ls->tmp.kls->base.name); if (decl) { eo_lexer_context_restore(ls); - redef_error(ls, decl, EOLIAN_DECL_CLASS); + redef_error(ls, decl, &ls->tmp.kls->base); } eo_lexer_context_pop(ls); pop_strbuf(ls); @@ -2177,7 +2211,6 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) Eina_Bool is_enum = (ls->t.kw == KW_enum); const char *name; int line, col; - Eolian_Declaration *decl; Eina_Bool has_extern; const char *freefunc; Eina_Strbuf *buf; @@ -2189,12 +2222,15 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) col = ls->column; parse_name(ls, buf); name = eina_stringshare_add(eina_strbuf_string_get(buf)); - decl = (Eolian_Declaration *)eina_hash_find(ls->state->unit.decls, name); + Eolian_Object *decl = _eolian_decl_get(ls, name); if (decl) { eina_stringshare_del(name); eo_lexer_context_restore(ls); - redef_error(ls, decl, is_enum ? EOLIAN_DECL_ENUM : EOLIAN_DECL_STRUCT); + Eolian_Typedecl tdecl; + tdecl.base.type = EOLIAN_OBJECT_TYPEDECL; + tdecl.type = is_enum ? EOLIAN_TYPEDECL_ENUM : EOLIAN_TYPEDECL_STRUCT; + redef_error(ls, decl, &tdecl.base); } eo_lexer_context_pop(ls); pop_strbuf(ls); @@ -2227,8 +2263,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) } return EINA_FALSE; found_class: - database_decl_add(ls->unit, ls->tmp.kls->base.name, EOLIAN_DECL_CLASS, - ls->tmp.kls->base.file, ls->tmp.kls); + database_object_add(ls->unit, &ls->tmp.kls->base); return EINA_TRUE; } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index 4c3b4ff797..412f2957a5 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -9,102 +9,13 @@ #include "eolian_priv.h" void -database_decl_add(Eolian_Unit *unit, Eina_Stringshare *name, - Eolian_Declaration_Type type, - Eina_Stringshare *file, void *ptr) -{ - Eolian_Declaration *decl = calloc(1, sizeof(Eolian_Declaration)); - decl->base = *((Eolian_Object *)ptr); - decl->base.file = eina_stringshare_ref(decl->base.file); - decl->base.name = eina_stringshare_ref(decl->base.name); - decl->base.refcount = 0; - decl->type = type; - decl->data = ptr; - EOLIAN_OBJECT_ADD(unit, name, decl, decls); - eina_hash_set(unit->state->decls_f, file, eina_list_append - ((Eina_List *)eina_hash_find(unit->state->decls_f, file), decl)); - /* object storage */ - eina_hash_add(unit->objects, name, ptr); - eina_hash_add(unit->state->unit.objects, name, ptr); - eina_hash_set(unit->state->objects_f, file, eina_list_append - ((Eina_List *)eina_hash_find(unit->state->objects_f, file), ptr)); -} - -static void -database_decl_del(Eolian_Declaration *decl) -{ - if (!decl || eolian_object_unref(&decl->base)) return; - eina_stringshare_del(decl->base.file); - eina_stringshare_del(decl->base.name); - free(decl); -} - -EAPI const Eolian_Declaration * -eolian_declaration_get_by_name(const Eolian_Unit *unit, const char *name) -{ - if (!unit) return NULL; - Eina_Stringshare *shr = eina_stringshare_add(name); - const Eolian_Declaration *decl = eina_hash_find(unit->decls, shr); - eina_stringshare_del(shr); - return decl; -} - -EAPI Eina_Iterator * -eolian_declarations_get_by_file(const Eolian_State *state, const char *fname) -{ - if (!state) return NULL; - Eina_Stringshare *shr = eina_stringshare_add(fname); - Eina_List *l = eina_hash_find(state->decls_f, shr); - eina_stringshare_del(shr); - if (!l) return NULL; - return eina_list_iterator_new(l); -} - -EAPI Eina_Iterator * -eolian_all_declarations_get(const Eolian_Unit *unit) +database_object_add(Eolian_Unit *unit, const Eolian_Object *obj) { - return (unit ? eina_hash_iterator_data_new(unit->decls) : NULL); -} - -EAPI Eolian_Declaration_Type -eolian_declaration_type_get(const Eolian_Declaration *decl) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(decl, EOLIAN_DECL_UNKNOWN); - return decl->type; -} - -EAPI Eina_Stringshare * -eolian_declaration_name_get(const Eolian_Declaration *decl) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(decl, NULL); - return decl->base.name; -} - -EAPI const Eolian_Class * -eolian_declaration_class_get(const Eolian_Declaration *decl) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(decl, NULL); - EINA_SAFETY_ON_FALSE_RETURN_VAL(decl->type == EOLIAN_DECL_CLASS, NULL); - return (const Eolian_Class *)decl->data; -} - -EAPI const Eolian_Typedecl * -eolian_declaration_data_type_get(const Eolian_Declaration *decl) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(decl, NULL); - EINA_SAFETY_ON_FALSE_RETURN_VAL(decl->type == EOLIAN_DECL_ALIAS || - decl->type == EOLIAN_DECL_STRUCT || - decl->type == EOLIAN_DECL_ENUM, NULL); - return (const Eolian_Typedecl *)decl->data; -} - - -EAPI const Eolian_Variable * -eolian_declaration_variable_get(const Eolian_Declaration *decl) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(decl, NULL); - EINA_SAFETY_ON_FALSE_RETURN_VAL(decl->type == EOLIAN_DECL_VAR, NULL); - return (const Eolian_Variable *)decl->data; + /* object storage */ + eina_hash_add(unit->objects, obj->name, obj); + eina_hash_add(unit->state->unit.objects, obj->name, obj); + eina_hash_set(unit->state->objects_f, obj->file, eina_list_append + ((Eina_List *)eina_hash_find(unit->state->objects_f, obj->file), obj)); } void database_doc_del(Eolian_Documentation *doc) @@ -428,27 +339,32 @@ eolian_doc_token_ref_get(const Eolian_Unit *unit, const Eolian_Doc_Token *tok, memcpy(name, tok->text, nlen); name[nlen] = '\0'; - const Eolian_Declaration *decl = eolian_declaration_get_by_name(unit, name); - if (decl) switch (eolian_declaration_type_get(decl)) + const Eolian_Object *decl = eolian_unit_object_by_name_get(unit, name); + if (decl) { - case EOLIAN_DECL_CLASS: - if (data) *data = eolian_declaration_class_get(decl); - return EOLIAN_DOC_REF_CLASS; - case EOLIAN_DECL_ALIAS: - if (data) *data = eolian_declaration_data_type_get(decl); - return EOLIAN_DOC_REF_ALIAS; - case EOLIAN_DECL_STRUCT: - if (data) *data = eolian_declaration_data_type_get(decl); - return EOLIAN_DOC_REF_STRUCT; - case EOLIAN_DECL_ENUM: - if (data) *data = eolian_declaration_data_type_get(decl); - return EOLIAN_DOC_REF_ENUM; - case EOLIAN_DECL_VAR: - if (data) *data = eolian_declaration_variable_get(decl); - return EOLIAN_DOC_REF_VAR; - default: - /* this will not happen but silence static analyzers */ - return EOLIAN_DOC_REF_INVALID; + if (data) *data = decl; + switch (eolian_object_type_get(decl)) + { + case EOLIAN_OBJECT_CLASS: + return EOLIAN_DOC_REF_CLASS; + case EOLIAN_OBJECT_TYPEDECL: + switch (eolian_typedecl_type_get((Eolian_Typedecl *)decl)) + { + case EOLIAN_TYPEDECL_ALIAS: + return EOLIAN_DOC_REF_ALIAS; + case EOLIAN_TYPEDECL_STRUCT: + case EOLIAN_TYPEDECL_STRUCT_OPAQUE: + return EOLIAN_DOC_REF_STRUCT; + case EOLIAN_TYPEDECL_ENUM: + return EOLIAN_DOC_REF_ENUM; + default: + return EOLIAN_DOC_REF_INVALID; + } + case EOLIAN_OBJECT_VARIABLE: + return EOLIAN_DOC_REF_VAR; + default: + return EOLIAN_DOC_REF_INVALID; + } } /* from here it can only be a function, a struct field or an enum field */ @@ -533,7 +449,6 @@ database_unit_init(Eolian_State *state, Eolian_Unit *unit, const char *file) 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->objects = eina_hash_stringshared_new(NULL); - unit->decls = eina_hash_stringshared_new(EINA_FREE_CB(database_decl_del)); } void @@ -550,7 +465,6 @@ database_unit_del(Eolian_Unit *unit) eina_hash_free(unit->structs); eina_hash_free(unit->enums); eina_hash_free(unit->objects); - eina_hash_free(unit->decls); } static void @@ -581,7 +495,6 @@ eolian_state_new(void) state->globals_f = eina_hash_stringshared_new(_hashlist_free); state->constants_f = eina_hash_stringshared_new(_hashlist_free); state->objects_f = eina_hash_stringshared_new(_hashlist_free); - state->decls_f = eina_hash_stringshared_new(_hashlist_free); return state; } @@ -607,7 +520,6 @@ eolian_state_free(Eolian_State *state) eina_hash_free(state->globals_f); eina_hash_free(state->constants_f); eina_hash_free(state->objects_f); - eina_hash_free(state->decls_f); free(state); } @@ -793,7 +705,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->decls, _merge_unit_cb, dest->decls); } typedef struct _Merge_Data diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index 526fba070a..bca488b4bc 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -43,7 +43,6 @@ struct _Eolian_Unit Eina_Hash *structs; Eina_Hash *enums; Eina_Hash *objects; - Eina_Hash *decls; }; struct _Eolian_State @@ -63,7 +62,6 @@ struct _Eolian_State Eina_Hash *globals_f; Eina_Hash *constants_f; Eina_Hash *objects_f; - Eina_Hash *decls_f; }; struct _Eolian_Object @@ -110,13 +108,6 @@ struct _Eolian_Documentation Eina_Stringshare *since; }; -struct _Eolian_Declaration -{ - Eolian_Object base; - Eolian_Declaration_Type type; - void *data; -}; - struct _Eolian_Class { Eolian_Object base; @@ -332,9 +323,7 @@ struct _Eolian_Variable char *database_class_to_filename(const char *cname); Eina_Bool database_validate(Eolian_State *state, const Eolian_Unit *src); -void database_decl_add(Eolian_Unit *unit, Eina_Stringshare *name, - Eolian_Declaration_Type type, - Eina_Stringshare *file, void *ptr); +void database_object_add(Eolian_Unit *unit, const Eolian_Object *obj); void database_doc_del(Eolian_Documentation *doc); --
