eolian: always implicitly validate database and remove its API

This commit is contained in:
Daniel Kolesa 2017-09-13 23:55:06 +02:00
parent 2a9be1f5be
commit e55ab81835
6 changed files with 9 additions and 39 deletions

View File

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

View File

@ -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 {

View File

@ -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,

View File

@ -512,17 +512,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
*
@ -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

View File

@ -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 *

View File

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