q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a39d2e8fe5dc1da9903b2a6e7b9d079dd6621aa0

commit a39d2e8fe5dc1da9903b2a6e7b9d079dd6621aa0
Author: Daniel Kolesa <[email protected]>
Date:   Wed Dec 6 14:24:16 2017 +0100

    eolian: move filenames hashes to state
---
 src/lib/eolian/eo_lexer.c        |  2 +-
 src/lib/eolian/eo_parser.c       | 10 +++++-----
 src/lib/eolian/eolian_database.c | 33 +++++++++++++++------------------
 src/lib/eolian/eolian_database.h |  6 +++---
 4 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
index e7ed6b1b20..71942504dd 100644
--- a/src/lib/eolian/eo_lexer.c
+++ b/src/lib/eolian/eo_lexer.c
@@ -275,7 +275,7 @@ doc_ref_class(const char *cname)
           *p = tolower(*p);
      }
    memcpy(buf + clen, ".eo", sizeof(".eo"));
-   const char *eop = eina_hash_find(_filenames, buf);
+   const char *eop = eina_hash_find(_state->filenames_eo, buf);
    if (!eop)
      return;
    eina_hash_set(_defereos, buf, eop);
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 8d24dd3c67..daf64cbcdb 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -822,7 +822,7 @@ parse_type_void(Eo_Lexer *ls)
              fnm = database_class_to_filename(nm);
              if (!compare_class_file(bnm, fnm))
                {
-                  const char *fname = eina_hash_find(_filenames, fnm);
+                  const char *fname = eina_hash_find(_state->filenames_eo, 
fnm);
                   eina_stringshare_del(bnm);
                   free(fnm);
                   if (fname)
@@ -1530,7 +1530,7 @@ parse_part(Eo_Lexer *ls)
    if (!compare_class_file(bnm, fnm))
      {
         Eolian_Class *dep = NULL;
-        const char *fname = eina_hash_find(_filenames, fnm);
+        const char *fname = eina_hash_find(_state->filenames_eo, fnm);
         eina_stringshare_del(bnm);
         free(fnm);
         if (fname)
@@ -2038,7 +2038,7 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf, Eina_Bool 
check_inherit,
         eo_lexer_syntax_error(ls, ebuf);
         return; /* unreachable (longjmp above), make static analysis shut up */
      }
-   fname = eina_hash_find(_filenames, fnm);
+   fname = eina_hash_find(_state->filenames_eo, fnm);
    free(fnm);
    if (!fname)
      {
@@ -2177,11 +2177,11 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot)
            check(ls, TOK_VALUE);
            eina_strbuf_append(buf, ls->t.value.s);
            eina_strbuf_append(buf, ".eot");
-           if (!(found = eina_hash_find(_tfilenames, 
eina_strbuf_string_get(buf))))
+           if (!(found = eina_hash_find(_state->filenames_eot, 
eina_strbuf_string_get(buf))))
              {
                 size_t buflen = eina_strbuf_length_get(buf);
                 eina_strbuf_remove(buf, buflen - 1, buflen);
-                if (!(found = eina_hash_find(_filenames, 
eina_strbuf_string_get(buf))))
+                if (!(found = eina_hash_find(_state->filenames_eo, 
eina_strbuf_string_get(buf))))
                   {
                      pop_strbuf(ls);
                      snprintf(errbuf, sizeof(errbuf),
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index 3ed3d6777a..6db5c0553c 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -8,8 +8,6 @@
 #include "eolian_database.h"
 #include "eolian_priv.h"
 
-Eina_Hash *_filenames  = NULL;
-Eina_Hash *_tfilenames = NULL;
 Eina_Hash *_decls      = NULL;
 Eina_Hash *_declsf     = NULL;
 Eina_Hash *_units      = NULL;
@@ -36,8 +34,6 @@ database_init()
 {
    if (_database_init_count > 0) return ++_database_init_count;
    eina_init();
-   _filenames  = eina_hash_string_small_new(free);
-   _tfilenames = eina_hash_string_small_new(free);
    _decls      = eina_hash_stringshared_new(free);
    _declsf     = eina_hash_stringshared_new(_hashlist_free);
    _parsedeos  = eina_hash_string_small_new(NULL);
@@ -61,8 +57,6 @@ database_shutdown()
    if (_database_init_count == 0)
      {
         eolian_free(_state); _state = NULL;
-        eina_hash_free(_filenames ); _filenames  = NULL;
-        eina_hash_free(_tfilenames); _tfilenames = NULL;
         eina_hash_free(_decls     ); _decls      = NULL;
         eina_hash_free(_declsf    ); _declsf     = NULL;
         eina_hash_free(_parsedeos ); _parsedeos  = NULL;
@@ -613,6 +607,9 @@ eolian_new(void)
 
    database_unit_init(&state->unit, NULL);
 
+   state->filenames_eo  = eina_hash_string_small_new(free);
+   state->filenames_eot = eina_hash_string_small_new(free);
+
    state->classes_f   = eina_hash_stringshared_new(NULL);
    state->aliases_f   = eina_hash_stringshared_new(_hashlist_free);
    state->structs_f   = eina_hash_stringshared_new(_hashlist_free);
@@ -656,7 +653,7 @@ _scan_cb(const char *name, const char *path, void *data 
EINA_UNUSED)
 {
    Eina_Bool is_eo = eina_str_has_suffix(name, EO_SUFFIX);
    if (!is_eo && !eina_str_has_suffix(name, EOT_SUFFIX)) return;
-   eina_hash_add(is_eo ? _filenames : _tfilenames,
+   eina_hash_add(is_eo ? _state->filenames_eo : _state->filenames_eot,
                  eina_stringshare_add(name), join_path(path, name));
 }
 
@@ -710,7 +707,7 @@ _eolian_file_parse_nodep(const char *filepath)
         _eolian_log("file '%s' doesn't have a correct extension", filepath);
         return EINA_FALSE;
      }
-   if (!(eopath = eina_hash_find(is_eo ? _filenames : _tfilenames, filepath)))
+   if (!(eopath = eina_hash_find(is_eo ? _state->filenames_eo : 
_state->filenames_eot, filepath)))
      {
         char *vpath = eina_file_path_sanitize(filepath);
         Eina_Bool ret = eo_parser_database_fill(vpath, !is_eo, NULL);
@@ -777,7 +774,7 @@ eolian_all_eot_files_parse(Eolian *state EINA_UNUSED)
    if (_database_init_count <= 0)
      return EINA_FALSE;
 
-   eina_hash_foreach(_tfilenames, _tfile_parse, &ret);
+   eina_hash_foreach(_state->filenames_eot, _tfile_parse, &ret);
 
    /* FIXME: pass unit properly */
    if (ret && !database_validate(NULL))
@@ -802,7 +799,7 @@ eolian_all_eo_files_parse(Eolian *state EINA_UNUSED)
    if (_database_init_count <= 0)
      return EINA_FALSE;
 
-   eina_hash_foreach(_filenames, _file_parse, &ret);
+   eina_hash_foreach(_state->filenames_eo, _file_parse, &ret);
 
    /* FIXME: pass unit properly */
    if (ret && !database_validate(NULL))
@@ -814,27 +811,27 @@ eolian_all_eo_files_parse(Eolian *state EINA_UNUSED)
 EAPI Eina_Iterator *
 eolian_all_eot_files_get(Eolian *state EINA_UNUSED)
 {
-   if (!_tfilenames) return NULL;
-   return eina_hash_iterator_key_new(_tfilenames);
+   if (!_state) return NULL;
+   return eina_hash_iterator_key_new(_state->filenames_eot);
 }
 
 EAPI Eina_Iterator *
 eolian_all_eo_files_get(Eolian *state EINA_UNUSED)
 {
-   if (!_filenames) return NULL;
-   return eina_hash_iterator_key_new(_filenames);
+   if (!_state) return NULL;
+   return eina_hash_iterator_key_new(_state->filenames_eo);
 }
 
 EAPI Eina_Iterator *
 eolian_all_eot_file_paths_get(Eolian *state EINA_UNUSED)
 {
-   if (!_tfilenames) return NULL;
-   return eina_hash_iterator_data_new(_tfilenames);
+   if (!_state) return NULL;
+   return eina_hash_iterator_data_new(_state->filenames_eot);
 }
 
 EAPI Eina_Iterator *
 eolian_all_eo_file_paths_get(Eolian *state EINA_UNUSED)
 {
-   if (!_filenames) return NULL;
-   return eina_hash_iterator_data_new(_filenames);
+   if (!_state) return NULL;
+   return eina_hash_iterator_data_new(_state->filenames_eo);
 }
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 3bc701c0fc..529681de3f 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -31,9 +31,6 @@ extern Eina_Prefix *_eolian_prefix;
 #endif
 #define DBG(...) EINA_LOG_DOM_DBG(_eolian_log_dom, __VA_ARGS__)
 
-extern Eina_Hash *_filenames; /* Hash: filename without extension -> full path 
*/
-extern Eina_Hash *_tfilenames;
-
 /* a hash holding all declarations, for redef checking etc */
 extern Eina_Hash *_decls;
 extern Eina_Hash *_declsf;
@@ -66,6 +63,9 @@ struct _Eolian
 {
    Eolian_Unit unit;
 
+   Eina_Hash *filenames_eo; /* filename to full path mapping */
+   Eina_Hash *filenames_eot;
+
    Eina_Hash *classes_f;
    Eina_Hash *aliases_f;
    Eina_Hash *structs_f;

-- 


Reply via email to