diff --git a/src/lib/eolian/database_class.c b/src/lib/eolian/database_class.c index 01833ac6f1..b7d2a0aa57 100644 --- a/src/lib/eolian/database_class.c +++ b/src/lib/eolian/database_class.c @@ -37,31 +37,3 @@ database_class_del(Eolian_Class *cl) free(cl); } - -Eolian_Class * -database_class_add(const char *class_name, Eolian_Class_Type type) -{ - char *full_name = strdup(class_name); - char *name = full_name; - char *colon = full_name; - Eolian_Class *cl = calloc(1, sizeof(*cl)); - cl->full_name = eina_stringshare_add(class_name); - cl->type = type; - do - { - colon = strchr(colon, '.'); - if (colon) - { - *colon = '\0'; - cl->namespaces = eina_list_append(cl->namespaces, - eina_stringshare_add(name)); - colon += 1; - name = colon; - } - } - while(colon); - cl->name = eina_stringshare_add(name); - eina_hash_set(_classes, cl->full_name, cl); - free(full_name); - return cl; -} diff --git a/src/lib/eolian/database_fill.c b/src/lib/eolian/database_fill.c index 33c6781b20..6f27154293 100644 --- a/src/lib/eolian/database_fill.c +++ b/src/lib/eolian/database_fill.c @@ -254,12 +254,18 @@ _db_fill_events(Eolian_Class *cl, Eolian_Class *kls) static Eina_Bool _db_fill_class(Eolian_Class *kls) { - Eolian_Class *cl = database_class_add(kls->name, kls->type); + Eolian_Class *cl = calloc(1, sizeof(Eolian_Class)); const char *s; Eina_List *l; + eina_hash_set(_classes, kls->full_name, cl); eina_hash_set(_classesf, kls->base.file, cl); + cl->namespaces = kls->namespaces; kls->namespaces = NULL; + cl->full_name = kls->full_name; kls->full_name = NULL; + cl->name = kls->name; kls->name = NULL; + cl->type = kls->type; + if (kls->description) cl->description = eina_stringshare_ref(kls->description); diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 303299df37..2e567f1bf5 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -1905,7 +1905,8 @@ parse_class(Eo_Lexer *ls, Eolian_Class_Type type) eo_lexer_syntax_error(ls, "class and file names differ"); } eo_lexer_context_pop(ls); - ls->tmp.kls->name = eina_stringshare_add(eina_strbuf_string_get(buf)); + _fill_class_name(ls->tmp.kls, eina_stringshare_add(eina_strbuf_string_get + (buf))); pop_strbuf(ls); if (ls->t.token != '{') { diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index ab656cc91d..844c716007 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -272,8 +272,6 @@ void database_var_del(Eolian_Variable *var); Eina_Bool database_var_add(Eolian_Variable *var); /* classes */ - -Eolian_Class *database_class_add(const char *class_name, Eolian_Class_Type type); void database_class_del(Eolian_Class *cl); /* functions */ @@ -283,11 +281,9 @@ void database_function_del(Eolian_Function *fid); void database_parameter_del(Eolian_Function_Parameter *pdesc); /* implements */ - void database_implement_del(Eolian_Implement *impl); /* constructors */ - void database_constructor_del(Eolian_Constructor *ctor); /* events */