summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2017-09-13 23:55:06 +0200
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2017-09-13 23:58:47 +0200
commite55ab81835d8aa6130c80e2ce63643e1215dc455 (patch)
tree86467d81d7dee2692b2f1b87c941ea6a26bb3318
parent2a9be1f5bed19ec109044f4bba40e96c33a6a5a7 (diff)
downloadefl-e55ab81835d8aa6130c80e2ce63643e1215dc455.tar.gz
eolian: always implicitly validate database and remove its API
-rw-r--r--src/bin/eolian/main.c6
-rw-r--r--src/bin/eolian_cxx/eolian_cxx.cc6
-rw-r--r--src/bindings/luajit/eolian.lua5
-rw-r--r--src/lib/eolian/Eolian.h13
-rw-r--r--src/lib/eolian/eolian_database.c15
-rw-r--r--src/scripts/elua/modules/lualian.lua3
6 files changed, 9 insertions, 39 deletions
diff --git a/src/bin/eolian/main.c b/src/bin/eolian/main.c
index 7084ff38bc..20c53bc401 100644
--- a/src/bin/eolian/main.c
+++ b/src/bin/eolian/main.c
@@ -495,12 +495,6 @@ main(int argc, char **argv)
goto end;
}
- if (!eolian_database_validate())
- {
- fprintf(stderr, "eolian: failed validating database\n");
- goto end;
- }
-
_fill_all_outs(outs, input);
const char *eobn = _get_filename(input);
diff --git a/src/bin/eolian_cxx/eolian_cxx.cc b/src/bin/eolian_cxx/eolian_cxx.cc
index ee1b39909c..c98412aedd 100644
--- a/src/bin/eolian_cxx/eolian_cxx.cc
+++ b/src/bin/eolian_cxx/eolian_cxx.cc
@@ -313,12 +313,6 @@ database_load(options_type const& opts)
<< "Failed parsing: " << opts.in_files[0] << ".";
assert(false && "Error parsing input file");
}
- if (!::eolian_database_validate())
- {
- EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain)
- << "Eolian failed validating database.";
- assert(false && "Error validating database");
- }
}
} // namespace eolian_cxx {
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index d86e8e8396..34bcb4382c 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -237,7 +237,6 @@ ffi.cdef [[
Eina_Bool eolian_system_directory_scan();
Eina_Bool eolian_all_eo_files_parse();
Eina_Bool eolian_all_eot_files_parse();
- Eina_Bool eolian_database_validate();
const Eolian_Class *eolian_class_get_by_name(const Eolian_Unit *unit, const char *class_name);
const Eolian_Class *eolian_class_get_by_file(const Eolian_Unit *unit, const char *file_name);
const char *eolian_class_file_get(const Eolian_Class *klass);
@@ -492,10 +491,6 @@ M.all_eot_files_get = function()
return iterator.String_Iterator(eolian.eolian_all_eot_files_get())
end
-M.database_validate = function()
- return eolian.eolian_database_validate() ~= 0
-end
-
M.declaration_type = {
UNKNOWN = 0,
CLASS = 0,
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 2bface281f..554f84c71d 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -513,17 +513,6 @@ EAPI Eina_Bool eolian_all_eo_files_parse(void);
EAPI Eina_Bool eolian_all_eot_files_parse(void);
/*
- * @brief Validates the database, printing errors and warnings.
- *
- * @return EINA_TRUE on success, EINA_FALSE otherwise.
- *
- * Useful to catch type errors etc. early on.
- *
- * @ingroup Eolian
- */
-EAPI Eina_Bool eolian_database_validate();
-
-/*
* @brief Gets a class by its name
*
* @param[in] unit the unit to look in
@@ -2444,7 +2433,7 @@ EAPI char *eolian_doc_token_text_get(const Eolian_Doc_Token *tok);
* @brief Get the thing that a reference token references.
*
* Returns EOLIAN_DOC_REF_INVALID on failure (when not ref token or
- * invalid ref, but invalid refs don't happen when database is validated).
+ * invalid ref, but invalid refs don't happen when database is valid).
*
* When the reference is a class, alias, struct, enum or var, the first data arg
* is filled. When it's a func, the first data is class and second data is
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index f71691176d..4ba4b69f7d 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -723,6 +723,8 @@ eolian_file_parse(const char *filepath)
return NULL;
if (!_parse_deferred())
return NULL;
+ if (!database_validate())
+ return NULL;
return &unit_tmp;
}
@@ -743,6 +745,10 @@ eolian_all_eot_files_parse()
return EINA_FALSE;
eina_hash_foreach(_tfilenames, _tfile_parse, &ret);
+
+ if (ret && !database_validate())
+ return EINA_FALSE;
+
return ret;
}
@@ -763,16 +769,11 @@ eolian_all_eo_files_parse()
return EINA_FALSE;
eina_hash_foreach(_filenames, _file_parse, &ret);
- return ret;
-}
-EAPI Eina_Bool
-eolian_database_validate()
-{
- if (_database_init_count <= 0)
+ if (ret && !database_validate())
return EINA_FALSE;
- return database_validate();
+ return ret;
}
EAPI Eina_Iterator *
diff --git a/src/scripts/elua/modules/lualian.lua b/src/scripts/elua/modules/lualian.lua
index a88e3d0d9a..1253252069 100644
--- a/src/scripts/elua/modules/lualian.lua
+++ b/src/scripts/elua/modules/lualian.lua
@@ -703,9 +703,6 @@ M.generate = function(fname, fstream)
error("Failed parsing file: " .. fname)
end
gen_unit = unit
- if not eolian.database_validate() then
- error("Failed validating database.")
- end
local sfn = fname:match(".*[\\/](.+)$") or fname
local klass = eolian.class_get_by_file(unit, sfn)
File(fname, klass, { gen_class(klass) }):generate(fstream or io.stdout)