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);
 

-- 


Reply via email to