eolian: initial structure for units
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Thu, 11 May 2017 14:35:19 +0000 (16:35 +0200)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 30 May 2017 15:15:53 +0000 (17:15 +0200)
Units are Eolian files (eo/eot). Each unit contains information
about its class, dependencies, variables and types. This allows
for saner checking to be done.

src/lib/eolian/Eolian.h
src/lib/eolian/eolian_database.c
src/lib/eolian/eolian_database.h

index c7b6324..e882f2e 100644 (file)
@@ -171,6 +171,12 @@ typedef struct _Eolian_Declaration Eolian_Declaration;
  */
 typedef struct _Eolian_Documentation Eolian_Documentation;
 
+/* Unit information
+ *
+ * @ingroup Eolian
+ */
+typedef struct _Eolian_Unit Eolian_Unit;
+
 typedef enum
 {
    EOLIAN_UNRESOLVED = 0,
index d4551e7..b86b115 100644 (file)
@@ -23,6 +23,7 @@ Eina_Hash *_filenames  = NULL;
 Eina_Hash *_tfilenames = NULL;
 Eina_Hash *_decls      = NULL;
 Eina_Hash *_declsf     = NULL;
+Eina_Hash *_units      = NULL;
 
 Eina_Hash *_parsedeos  = NULL;
 Eina_Hash *_parsingeos = NULL;
@@ -61,6 +62,7 @@ database_init()
    _parsedeos  = eina_hash_string_small_new(NULL);
    _parsingeos = eina_hash_string_small_new(NULL);
    _defereos   = eina_hash_string_small_new(NULL);
+   _units      = eina_hash_stringshared_new(EINA_FREE_CB(database_unit_del));
    return ++_database_init_count;
 }
 
@@ -95,6 +97,7 @@ database_shutdown()
         eina_hash_free(_parsedeos ); _parsedeos  = NULL;
         eina_hash_free(_parsingeos); _parsingeos = NULL;
         eina_hash_free(_defereos  ); _defereos   = NULL;
+        eina_hash_free(_units     ); _units      = NULL;
         eina_shutdown();
      }
    return _database_init_count;
@@ -592,6 +595,11 @@ eolian_doc_token_ref_get(const Eolian_Doc_Token *tok, const void **data,
    return EOLIAN_DOC_REF_FUNC;
 }
 
+void
+database_unit_del(Eolian_Unit *unit)
+{
+}
+
 #define EO_SUFFIX ".eo"
 #define EOT_SUFFIX ".eot"
 
index 9c54615..0feaaf7 100644 (file)
@@ -279,6 +279,18 @@ struct _Eolian_Variable
    Eina_Bool is_extern :1;
 };
 
+struct _Eolian_Unit
+{
+   Eolian_Object  base;
+   Eolian_Class  *klass;
+   Eina_List     *dependencies;
+   Eina_List     *globals;
+   Eina_List     *constants;
+   Eina_List     *aliases;
+   Eina_List     *structs;
+   Eina_List     *enums;
+};
+
 int database_init(void);
 int database_shutdown(void);
 
@@ -290,6 +302,8 @@ void database_decl_add(Eina_Stringshare *name, Eolian_Declaration_Type type,
 
 void database_doc_del(Eolian_Documentation *doc);
 
+void database_unit_del(Eolian_Unit *unit);
+
 /* types */
 
 void database_type_add(Eolian_Typedecl *def);