I believe this broke elm_check when clouseau is enabled. See the bt at the end of the file.
On Wed, Dec 6, 2017 at 7:30 PM, Daniel Kolesa <dan...@octaforge.org> wrote: > On Wed, Dec 6, 2017, at 10:22, Jean-Philippe André wrote: > > This breaks the C# bindings as some Eolian APIs are changed :( > > Then the C# binding people should fix that themselves. Eolian is > unstable API right now and if you add in new code relying on it then > you're responsible for it. I'm not going to deal with any new bindings > code introduced into our repository at this point, not JS, not C#, > sorry. > > D5 > > > > > On Wed, Dec 6, 2017 at 12:42 AM, Daniel Kolesa <dan...@octaforge.org> > > wrote: > > > > > q66 pushed a commit to branch master. > > > > > > http://git.enlightenment.org/core/efl.git/commit/?id= > > > 8a1f93f698315b43de28b755bce5fc9a4d85d59a > > > > > > commit 8a1f93f698315b43de28b755bce5fc9a4d85d59a > > > Author: Daniel Kolesa <d.kol...@osg.samsung.com> > > > Date: Tue Dec 5 16:40:04 2017 +0100 > > > > > > eolian: pass state where necessary > > > > > > This modifies the API so that global state removal is made > > > possible. It's still used internally for now but externally > > > the state is contained. > > > --- > > > src/bin/eolian/main.c | 9 ++- > > > src/bin/eolian_cxx/eolian_cxx.cc | 23 +++++-- > > > src/bindings/luajit/eolian.lua | 96 > ++++++++++++++++------------ > > > src/lib/eolian/Eolian.h | 116 > +++++++++++++++++++----------- > > > ---- > > > src/lib/eolian/eolian_database.c | 20 +++--- > > > src/scripts/elua/modules/lualian.lua | 16 +++-- > > > src/tests/eolian/eolian_parsing.c | 119 > ++++++++++++++++++++++++++---- > > > ----- > > > 7 files changed, 258 insertions(+), 141 deletions(-) > > > > > > diff --git a/src/bin/eolian/main.c b/src/bin/eolian/main.c > > > index fdb5ca2568..92643c6f7e 100644 > > > --- a/src/bin/eolian/main.c > > > +++ b/src/bin/eolian/main.c > > > @@ -430,6 +430,8 @@ main(int argc, char **argv) > > > eina_init(); > > > eolian_init(); > > > > > > + Eolian *eos = eolian_new(); > > > + > > > const char *dom = "eolian_gen"; > > > _eolian_gen_log_dom = eina_log_domain_register(dom, > EINA_COLOR_GREEN); > > > if (_eolian_gen_log_dom < 0) > > > @@ -530,7 +532,7 @@ main(int argc, char **argv) > > > > > > if (scan_system) > > > { > > > - if (!eolian_system_directory_scan()) > > > + if (!eolian_system_directory_scan(eos)) > > > { > > > fprintf(stderr, "eolian: could not scan system > directory\n"); > > > goto end; > > > @@ -540,14 +542,14 @@ main(int argc, char **argv) > > > const char *inc; > > > EINA_LIST_FREE(includes, inc) > > > { > > > - if (!eolian_directory_scan(inc)) > > > + if (!eolian_directory_scan(eos, inc)) > > > { > > > fprintf(stderr, "eolian: could not scan '%s'\n", inc); > > > goto end; > > > } > > > } > > > > > > - const Eolian_Unit *src = eolian_file_parse(input); > > > + const Eolian_Unit *src = eolian_file_parse(eos, input); > > > if (!src) > > > { > > > fprintf(stderr, "eolian: could not parse file '%s'\n", input); > > > @@ -589,6 +591,7 @@ end: > > > free(outs[i]); > > > free(basen); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > eina_shutdown(); > > > > > > diff --git a/src/bin/eolian_cxx/eolian_cxx.cc > b/src/bin/eolian_cxx/eolian_ > > > cxx.cc > > > index 134700ae6c..fac96da5e2 100644 > > > --- a/src/bin/eolian_cxx/eolian_cxx.cc > > > +++ b/src/bin/eolian_cxx/eolian_cxx.cc > > > @@ -34,6 +34,7 @@ struct options_type > > > { > > > std::vector<std::string> include_dirs; > > > std::vector<std::string> in_files; > > > + mutable Eolian* state; > > > mutable Eolian_Unit const* unit; > > > std::string out_file; > > > bool main_header; > > > @@ -298,7 +299,7 @@ run(options_type const& opts) > > > > > > for(auto&& name : opts.in_files) > > > { > > > - Eolian_Unit const* unit = ::eolian_file_parse(name.c_ > str()); > > > + Eolian_Unit const* unit = ::eolian_file_parse(opts.state, > > > name.c_str()); > > > if(!unit) > > > { > > > EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain) > > > @@ -346,17 +347,30 @@ run(options_type const& opts) > > > } > > > > > > static void > > > +state_init(options_type const& opts) > > > +{ > > > + Eolian *eos = ::eolian_new(); > > > + if (!eos) > > > + { > > > + EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain) > > > + << "Eolian failed creating state"; > > > + assert(false && "Error creating Eolian state"); > > > + } > > > + opts.state = eos; > > > +} > > > + > > > +static void > > > database_load(options_type const& opts) > > > { > > > for (auto src : opts.include_dirs) > > > { > > > - if (!::eolian_directory_scan(src.c_str())) > > > + if (!::eolian_directory_scan(opts.state, src.c_str())) > > > { > > > EINA_CXX_DOM_LOG_WARN(eolian_cxx::domain) > > > << "Couldn't load eolian from '" << src << "'."; > > > } > > > } > > > - if (!::eolian_all_eot_files_parse()) > > > + if (!::eolian_all_eot_files_parse(opts.state)) > > > { > > > EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain) > > > << "Eolian failed parsing eot files"; > > > @@ -368,7 +382,7 @@ database_load(options_type const& opts) > > > << "No input file."; > > > assert(false && "Error parsing input file"); > > > } > > > - if (!opts.main_header && !::eolian_file_parse(opts.in_ > > > files[0].c_str())) > > > + if (!opts.main_header && !::eolian_file_parse(opts.state, > > > opts.in_files[0].c_str())) > > > { > > > EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain) > > > << "Failed parsing: " << opts.in_files[0] << "."; > > > @@ -480,6 +494,7 @@ int main(int argc, char **argv) > > > efl::eina::eina_init eina_init; > > > efl::eolian::eolian_init eolian_init; > > > eolian_cxx::options_type opts = opts_get(argc, argv); > > > + eolian_cxx::state_init(opts); > > > eolian_cxx::database_load(opts); > > > eolian_cxx::run(opts); > > > } > > > diff --git a/src/bindings/luajit/eolian.lua > b/src/bindings/luajit/eolian. > > > lua > > > index b0c0f7c67e..b7d4d6ec0d 100644 > > > --- a/src/bindings/luajit/eolian.lua > > > +++ b/src/bindings/luajit/eolian.lua > > > @@ -13,6 +13,7 @@ ffi.cdef [[ > > > typedef unsigned char Eina_Bool; > > > typedef struct _Eina_Iterator Eina_Iterator; > > > > > > + typedef struct _Eolian Eolian; > > > typedef struct _Eolian_Class Eolian_Class; > > > typedef struct _Eolian_Function Eolian_Function; > > > typedef struct _Eolian_Type Eolian_Type; > > > @@ -284,17 +285,19 @@ ffi.cdef [[ > > > const char *text, *text_end; > > > } Eolian_Doc_Token; > > > > > > - const Eolian_Unit *eolian_file_parse(const char *filepath); > > > - Eina_Iterator *eolian_all_eo_file_paths_get(void); > > > - Eina_Iterator *eolian_all_eot_file_paths_get(void); > > > - Eina_Iterator *eolian_all_eo_files_get(void); > > > - Eina_Iterator *eolian_all_eot_files_get(void); > > > int eolian_init(void); > > > int eolian_shutdown(void); > > > - Eina_Bool eolian_directory_scan(const char *dir); > > > - Eina_Bool eolian_system_directory_scan(); > > > - Eina_Bool eolian_all_eo_files_parse(); > > > - Eina_Bool eolian_all_eot_files_parse(); > > > + Eolian *eolian_new(void); > > > + void eolian_free(Eolian *state); > > > + const Eolian_Unit *eolian_file_parse(Eolian *state, const char > > > *filepath); > > > + Eina_Iterator *eolian_all_eo_file_paths_get(Eolian *state); > > > + Eina_Iterator *eolian_all_eot_file_paths_get(Eolian *state); > > > + Eina_Iterator *eolian_all_eo_files_get(Eolian *state); > > > + Eina_Iterator *eolian_all_eot_files_get(Eolian *state); > > > + Eina_Bool eolian_directory_scan(Eolian *state, const char *dir); > > > + Eina_Bool eolian_system_directory_scan(Eolian *state); > > > + Eina_Bool eolian_all_eo_files_parse(Eolian *state); > > > + Eina_Bool eolian_all_eot_files_parse(Eolian *state); > > > 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); > > > @@ -509,44 +512,59 @@ M.object_scope = { > > > PROTECTED = 3 > > > } > > > > > > -M.directory_scan = function(dir) > > > - return eolian.eolian_directory_scan(dir) ~= 0 > > > -end > > > +ffi.metatype("Eolian", { > > > + __index = { > > > + directory_scan = function(self, dir) > > > + return eolian.eolian_directory_scan(self, dir) ~= 0 > > > + end, > > > > > > -M.system_directory_scan = function() > > > - return eolian.eolian_system_directory_scan() ~= 0 > > > -end > > > + system_directory_scan = function(self) > > > + return eolian.eolian_system_directory_scan(self) ~= 0 > > > + end, > > > > > > -M.file_parse = function(fpath) > > > - local v = eolian.eolian_file_parse(fpath) > > > - if v == nil then > > > - return nil > > > - end > > > - return v > > > -end > > > + file_parse = function(self, fpath) > > > + local v = eolian.eolian_file_parse(self, fpath) > > > + if v == nil then > > > + return nil > > > + end > > > + return v > > > + end, > > > > > > -M.all_eo_files_parse = function() > > > - return eolian.eolian_all_eo_files_parse() ~= 0 > > > -end > > > + all_eo_files_parse = function(self) > > > + return eolian.eolian_all_eo_files_parse(self) ~= 0 > > > + end, > > > > > > -M.all_eot_files_parse = function() > > > - return eolian.eolian_all_eot_files_parse() ~= 0 > > > -end > > > + all_eot_files_parse = function(self) > > > + return eolian.eolian_all_eot_files_parse(self) ~= 0 > > > + end, > > > > > > -M.all_eo_file_paths_get = function() > > > - return iterator.String_Iterator(eolian.eolian_all_eo_file_ > > > paths_get()) > > > -end > > > + all_eo_file_paths_get = function(self) > > > + return iterator.String_Iterator( > eolian.eolian_all_eo_file_ > > > paths_get(self)) > > > + end, > > > > > > -M.all_eot_file_paths_get = function() > > > - return iterator.String_Iterator(eolian.eolian_all_eot_file_ > > > paths_get()) > > > -end > > > + all_eot_file_paths_get = function(self) > > > + return iterator.String_Iterator( > eolian.eolian_all_eot_file_ > > > paths_get(self)) > > > + end, > > > > > > -M.all_eo_files_get = function() > > > - return iterator.String_Iterator(eolian.eolian_all_eo_files_get()) > > > -end > > > + all_eo_files_get = function(self) > > > + return iterator.String_Iterator( > eolian.eolian_all_eo_files_ > > > get(self)) > > > + end, > > > + > > > + all_eot_files_get = function(self) > > > + return iterator.String_Iterator( > eolian.eolian_all_eot_files_ > > > get(self)) > > > + end, > > > + > > > + unit_get = function(self) > > > + return ffi.cast("Eolian_Unit *", self) > > > + end > > > + }, > > > + __gc = function(self) > > > + eolian.eolian_free(self) > > > + end > > > +}) > > > > > > -M.all_eot_files_get = function() > > > - return iterator.String_Iterator(eolian.eolian_all_eot_files_ > get()) > > > +M.new = function() > > > + return eolian.eolian_new() > > > end > > > > > > M.declaration_type = { > > > diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h > > > index 0e8b9d59c7..bfb8c5387a 100644 > > > --- a/src/lib/eolian/Eolian.h > > > +++ b/src/lib/eolian/Eolian.h > > > @@ -456,11 +456,53 @@ typedef struct _Eolian_Doc_Token > > > } Eolian_Doc_Token; > > > > > > /* > > > + * @brief Init Eolian. > > > + * > > > + * @ingroup Eolian > > > + */ > > > +EAPI int eolian_init(void); > > > + > > > +/* > > > + * @brief Shutdown Eolian. > > > + * > > > + * @ingroup Eolian > > > + */ > > > +EAPI int eolian_shutdown(void); > > > + > > > +/* > > > + * @brief Create a new Eolian state. > > > + * > > > + * This creates a new Eolian state that consists of a "master unit" > with > > > + * the same address (therefore, you can cast it to Eolian_Unit) plus > extra > > > + * state information. > > > + * > > > + * You need to free this with eolian_free once you're done. > > > + * > > > + * @return A new state (or NULL on failure). > > > + * > > > + * @ingroup Eolian > > > + */ > > > +EAPI Eolian *eolian_new(void); > > > + > > > +/* > > > + * @brief Free an Eolian state. > > > + * > > > + * You can use this to free an Eolian state. > > > + * > > > + * If the input is NULL, this function has no effect. > > > + * > > > + * @param[in] state the state to free > > > + * > > > + */ > > > +EAPI void eolian_free(Eolian *state); > > > + > > > +/* > > > * @brief Parse the given .eo or .eot file and fill the database. > > > * > > > * The input can be either a full path to the file or only a filename. > > > * If it's a filename, it must be scanned for first. > > > * > > > + * @param[in] state The Eolian state. > > > * @param[in] filepath Path to the file to parse. > > > * @return The unit corresponding to the parsed file or NULL. > > > * > > > @@ -468,92 +510,59 @@ typedef struct _Eolian_Doc_Token > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI const Eolian_Unit *eolian_file_parse(const char *filepath); > > > +EAPI const Eolian_Unit *eolian_file_parse(Eolian *state, const char > > > *filepath); > > > > > > /* > > > * @brief Get an iterator to all .eo file names with paths. > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @see eolian_all_eo_files_get > > > * @see eolian_all_eot_file_paths_get > > > * @see eolian_all_eot_files_get > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Iterator *eolian_all_eo_file_paths_get(void); > > > +EAPI Eina_Iterator *eolian_all_eo_file_paths_get(Eolian *state); > > > > > > /* > > > * @brief Get an iterator to all .eot file names with paths. > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @see eolian_all_eo_files_get > > > * @see eolian_all_eo_file_paths_get > > > * @see eolian_all_eot_files_get > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Iterator *eolian_all_eot_file_paths_get(void); > > > +EAPI Eina_Iterator *eolian_all_eot_file_paths_get(Eolian *state); > > > > > > /* > > > * @brief Get an iterator to all .eo file names (without paths). > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @see eolian_all_eo_file_paths_get > > > * @see eolian_all_eot_file_paths_get > > > * @see eolian_all_eot_files_get > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Iterator *eolian_all_eo_files_get(void); > > > +EAPI Eina_Iterator *eolian_all_eo_files_get(Eolian *state); > > > > > > /* > > > * @brief Get an iterator to all .eot file names (without paths). > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @see eolian_all_eo_file_paths_get > > > * @see eolian_all_eot_file_paths_get > > > * @see eolian_all_eo_files_get > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Iterator *eolian_all_eot_files_get(void); > > > - > > > -/* > > > - * @brief Init Eolian. > > > - * > > > - * @ingroup Eolian > > > - */ > > > -EAPI int eolian_init(void); > > > - > > > -/* > > > - * @brief Shutdown Eolian. > > > - * > > > - * @ingroup Eolian > > > - */ > > > -EAPI int eolian_shutdown(void); > > > - > > > -/* > > > - * @brief Create a new Eolian state. > > > - * > > > - * This creates a new Eolian state that consists of a "master unit" > with > > > - * the same address (therefore, you can cast it to Eolian_Unit) plus > extra > > > - * state information. > > > - * > > > - * You need to free this with eolian_free once you're done. > > > - * > > > - * @return A new state (or NULL on failure). > > > - * > > > - * @ingroup Eolian > > > - */ > > > -EAPI Eolian *eolian_new(void); > > > - > > > -/* > > > - * @brief Free an Eolian state. > > > - * > > > - * You can use this to free an Eolian state. > > > - * > > > - * If the input is NULL, this function has no effect. > > > - * > > > - * @param[in] unit the state to free > > > - * > > > - */ > > > -EAPI void eolian_free(Eolian *state); > > > +EAPI Eina_Iterator *eolian_all_eot_files_get(Eolian *state); > > > > > > /* > > > * @brief Scan the given directory (recursively) and search for .eo > and > > > @@ -561,6 +570,7 @@ EAPI void eolian_free(Eolian *state); > > > * > > > * The found files are just open to extract the class name. > > > * > > > + * @param[in] state The Eolian state. > > > * @param[in] dir the directory to scan > > > * @return EINA_TRUE on success, EINA_FALSE otherwise. > > > * > > > @@ -568,24 +578,28 @@ EAPI void eolian_free(Eolian *state); > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Bool eolian_directory_scan(const char *dir); > > > +EAPI Eina_Bool eolian_directory_scan(Eolian *state, const char *dir); > > > > > > /* > > > * @brief Scan the system directory (recursively) and search for .eo > and > > > * .eot files. > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @return EINA_TRUE on success, EINA_FALSE otherwise. > > > * > > > * @see eolian_directory_scan > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Bool eolian_system_directory_scan(void); > > > +EAPI Eina_Bool eolian_system_directory_scan(Eolian *state); > > > > > > /* > > > * @brief Force parsing of all the .eo files located in the > directories > > > * given in eolian_directory_scan.. > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @return EINA_TRUE on success, EINA_FALSE otherwise. > > > * > > > * @see eolian_directory_scan > > > @@ -593,12 +607,14 @@ EAPI Eina_Bool eolian_system_directory_scan( > void); > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Bool eolian_all_eo_files_parse(void); > > > +EAPI Eina_Bool eolian_all_eo_files_parse(Eolian *state); > > > > > > /* > > > * @brief Force parsing of all the .eot files located in the > directories > > > * given in eolian_directory_scan.. > > > * > > > + * @param[in] state The Eolian state. > > > + * > > > * @return EINA_TRUE on success, EINA_FALSE otherwise. > > > * > > > * @see eolian_directory_scan > > > @@ -606,7 +622,7 @@ EAPI Eina_Bool eolian_all_eo_files_parse(void); > > > * > > > * @ingroup Eolian > > > */ > > > -EAPI Eina_Bool eolian_all_eot_files_parse(void); > > > +EAPI Eina_Bool eolian_all_eot_files_parse(Eolian *state); > > > > > > /* > > > * @brief Gets a class by its name > > > diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_ > > > database.c > > > index e68e9d3b0a..0a6601b539 100644 > > > --- a/src/lib/eolian/eolian_database.c > > > +++ b/src/lib/eolian/eolian_database.c > > > @@ -685,7 +685,7 @@ _scan_cb(const char *name, const char *path, void > > > *data EINA_UNUSED) > > > } > > > > > > EAPI Eina_Bool > > > -eolian_directory_scan(const char *dir) > > > +eolian_directory_scan(Eolian *state EINA_UNUSED, const char *dir) > > > { > > > if (!dir) return EINA_FALSE; > > > eina_file_dir_list(dir, EINA_TRUE, _scan_cb, NULL); > > > @@ -693,13 +693,13 @@ eolian_directory_scan(const char *dir) > > > } > > > > > > EAPI Eina_Bool > > > -eolian_system_directory_scan() > > > +eolian_system_directory_scan(Eolian *state) > > > { > > > Eina_Bool ret; > > > Eina_Strbuf *buf = eina_strbuf_new(); > > > eina_strbuf_append(buf, eina_prefix_data_get(_eolian_prefix)); > > > eina_strbuf_append(buf, "/include"); > > > - ret = eolian_directory_scan(eina_strbuf_string_get(buf)); > > > + ret = eolian_directory_scan(state, eina_strbuf_string_get(buf)); > > > eina_strbuf_free(buf); > > > return ret; > > > } > > > @@ -773,7 +773,7 @@ _parse_deferred() > > > static Eolian_Unit unit_tmp; > > > > > > EAPI const Eolian_Unit * > > > -eolian_file_parse(const char *filepath) > > > +eolian_file_parse(Eolian *state EINA_UNUSED, const char *filepath) > > > { > > > if (!_eolian_file_parse_nodep(filepath)) > > > return NULL; > > > @@ -794,7 +794,7 @@ static Eina_Bool _tfile_parse(const Eina_Hash *hash > > > EINA_UNUSED, const void *key > > > } > > > > > > EAPI Eina_Bool > > > -eolian_all_eot_files_parse() > > > +eolian_all_eot_files_parse(Eolian *state EINA_UNUSED) > > > { > > > Eina_Bool ret = EINA_TRUE; > > > > > > @@ -819,7 +819,7 @@ static Eina_Bool _file_parse(const Eina_Hash *hash > > > EINA_UNUSED, const void *key > > > } > > > > > > EAPI Eina_Bool > > > -eolian_all_eo_files_parse() > > > +eolian_all_eo_files_parse(Eolian *state EINA_UNUSED) > > > { > > > Eina_Bool ret = EINA_TRUE; > > > > > > @@ -836,28 +836,28 @@ eolian_all_eo_files_parse() > > > } > > > > > > EAPI Eina_Iterator * > > > -eolian_all_eot_files_get(void) > > > +eolian_all_eot_files_get(Eolian *state EINA_UNUSED) > > > { > > > if (!_tfilenames) return NULL; > > > return eina_hash_iterator_key_new(_tfilenames); > > > } > > > > > > EAPI Eina_Iterator * > > > -eolian_all_eo_files_get(void) > > > +eolian_all_eo_files_get(Eolian *state EINA_UNUSED) > > > { > > > if (!_filenames) return NULL; > > > return eina_hash_iterator_key_new(_filenames); > > > } > > > > > > EAPI Eina_Iterator * > > > -eolian_all_eot_file_paths_get(void) > > > +eolian_all_eot_file_paths_get(Eolian *state EINA_UNUSED) > > > { > > > if (!_tfilenames) return NULL; > > > return eina_hash_iterator_data_new(_tfilenames); > > > } > > > > > > EAPI Eina_Iterator * > > > -eolian_all_eo_file_paths_get(void) > > > +eolian_all_eo_file_paths_get(Eolian *state EINA_UNUSED) > > > { > > > if (!_filenames) return NULL; > > > return eina_hash_iterator_data_new(_filenames); > > > diff --git a/src/scripts/elua/modules/lualian.lua > > > b/src/scripts/elua/modules/lualian.lua > > > index 035c24db96..3864bd1d02 100644 > > > --- a/src/scripts/elua/modules/lualian.lua > > > +++ b/src/scripts/elua/modules/lualian.lua > > > @@ -16,6 +16,14 @@ local obj_scope = eolian.object_scope > > > local param_dir = eolian.parameter_dir > > > > > > local gen_unit > > > +local gen_state > > > + > > > +local get_state = function() > > > + if not gen_state then > > > + gen_state = eolian.new() > > > + end > > > + return assert(gen_state, "could not create eolian state") > > > +end > > > > > > cutil.init_module(function() > > > dom = log.Domain("lualian") > > > @@ -683,21 +691,21 @@ local gen_class = function(klass) > > > end > > > > > > M.include_dir = function(dir) > > > - if not eolian.directory_scan(dir) then > > > + if not get_state():directory_scan(dir) then > > > error("Failed including directory: " .. dir) > > > end > > > end > > > > > > M.load_eot_files = function() > > > - return eolian.all_eot_files_parse() > > > + return get_state():all_eot_files_parse() > > > end > > > > > > M.system_directory_scan = function() > > > - return eolian.system_directory_scan() > > > + return get_state():system_directory_scan() > > > end > > > > > > M.generate = function(fname, fstream) > > > - local unit = eolian.file_parse(fname) > > > + local unit = get_state():file_parse(fname) > > > if unit == nil then > > > error("Failed parsing file: " .. fname) > > > end > > > diff --git a/src/tests/eolian/eolian_parsing.c > b/src/tests/eolian/eolian_ > > > parsing.c > > > index ce18e4e137..788ca774c3 100644 > > > --- a/src/tests/eolian/eolian_parsing.c > > > +++ b/src/tests/eolian/eolian_parsing.c > > > @@ -23,9 +23,10 @@ START_TEST(eolian_namespaces) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/nmsp1_class1.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/nmsp1_ > > > class1.eo"))); > > > > > > /* Classes existence */ > > > fail_if(!(class11 = eolian_class_get_by_name(unit, > "nmsp1.class1"))); > > > @@ -89,6 +90,7 @@ START_TEST(eolian_namespaces) > > > fail_if(eina_iterator_next(iter, &dummy)); > > > eina_iterator_free(iter); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -104,8 +106,10 @@ START_TEST(eolian_events) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/events.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/events. > > > eo"))); > > > > > > /* Class */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Events"))); > > > @@ -162,6 +166,7 @@ START_TEST(eolian_events) > > > fail_if(!eolian_class_event_get_by_name(class, "clicked,double")); > > > fail_if(eolian_class_event_get_by_name(class, "clicked,triple")); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -176,9 +181,10 @@ START_TEST(eolian_override) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/override.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, PACKAGE_DATA_DIR"/data/ > > > override.eo"))); > > > > > > /* Class */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Override"))); > > > @@ -220,6 +226,7 @@ START_TEST(eolian_override) > > > > > > eina_iterator_free(iter); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -231,14 +238,17 @@ START_TEST(eolian_consts) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/consts.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/consts. > > > eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Consts"))); > > > > > > /* Method */ > > > fail_if(!(fid = eolian_class_function_get_by_name(class, "foo", > > > EOLIAN_METHOD))); > > > fail_if(EINA_FALSE == eolian_function_object_is_const(fid)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -255,9 +265,10 @@ START_TEST(eolian_ctor_dtor) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/ctor_dtor.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/ctor_ > > > dtor.eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Ctor_Dtor"))); > > > fail_if(!(base = eolian_class_get_by_name(unit, "Base"))); > > > > > > @@ -307,6 +318,7 @@ START_TEST(eolian_ctor_dtor) > > > fail_if(eina_iterator_next(iter, &dummy)); > > > eina_iterator_free(iter); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -322,8 +334,10 @@ START_TEST(eolian_typedef) > > > const char *file; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/typedef.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, PACKAGE_DATA_DIR"/data/ > > > typedef.eo"))); > > > > > > /* Check that the class Dummy is still readable */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Typedef"))); > > > @@ -388,6 +402,7 @@ START_TEST(eolian_typedef) > > > fail_if(!eina_iterator_next(iter, (void**)&tdl)); > > > fail_if(eina_iterator_next(iter, (void**)&tdl)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -404,8 +419,10 @@ START_TEST(eolian_complex_type) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/complex_type.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, PACKAGE_DATA_DIR"/data/ > > > complex_type.eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Complex_Type"))); > > > > > > /* Properties return type */ > > > @@ -474,6 +491,7 @@ START_TEST(eolian_complex_type) > > > fail_if(strcmp(type_name, "char *")); > > > eina_stringshare_del(type_name); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -485,8 +503,10 @@ START_TEST(eolian_scope) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/scope.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/scope. > > > eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Scope"))); > > > > > > /* Property scope */ > > > @@ -507,6 +527,7 @@ START_TEST(eolian_scope) > > > fail_if(!(fid = eolian_class_function_get_by_name(class, "foobar", > > > EOLIAN_METHOD))); > > > fail_if(eolian_function_scope_get(fid, EOLIAN_METHOD) != > > > EOLIAN_SCOPE_PUBLIC); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -525,8 +546,10 @@ START_TEST(eolian_simple_parsing) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/class_simple.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/class_ > > > simple.eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Class_Simple"))); > > > fail_if(eolian_class_get_by_file(unit, "class_simple.eo") != > class); > > > fail_if(strcmp(eolian_class_file_get(class), "class_simple.eo")); > > > @@ -643,6 +666,7 @@ START_TEST(eolian_simple_parsing) > > > fail_if(eolian_function_is_beta(fid)); > > > fail_if(!eolian_type_is_ptr(eolian_function_return_type_get(fid, > > > EOLIAN_METHOD))); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -659,9 +683,11 @@ START_TEST(eolian_struct) > > > const char *file; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/struct.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/struct. > > > eo"))); > > > > > > /* Check that the class Dummy is still readable */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Struct"))); > > > @@ -713,6 +739,7 @@ START_TEST(eolian_struct) > > > fail_if(!(tdl = eolian_type_typedecl_get(type))); > > > fail_if(eolian_typedecl_type_get(tdl) != EOLIAN_TYPEDECL_STRUCT); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -724,9 +751,11 @@ START_TEST(eolian_extern) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/extern.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/extern. > > > eo"))); > > > > > > /* Check that the class Dummy is still readable */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Extern"))); > > > @@ -748,6 +777,7 @@ START_TEST(eolian_extern) > > > fail_if(!(tdl = eolian_typedecl_struct_get_by_name(unit, "Y"))); > > > fail_if(!eolian_typedecl_is_extern(tdl)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -763,9 +793,11 @@ START_TEST(eolian_var) > > > const char *name; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > DATA_DIR"/data/var.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/var.eo" > > > ))); > > > > > > /* Check that the class Dummy is still readable */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Var"))); > > > @@ -813,6 +845,7 @@ START_TEST(eolian_var) > > > fail_if(strcmp(name, "double")); > > > fail_if(eolian_variable_value_get(var)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -831,9 +864,11 @@ START_TEST(eolian_enum) > > > Eolian_Value v; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > DATA_DIR"/data/enum.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/enum. > > > eo"))); > > > > > > /* Check that the class Dummy is still readable */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Enum"))); > > > @@ -914,6 +949,7 @@ START_TEST(eolian_enum) > > > fail_if(v.type != EOLIAN_EXPR_INT); > > > fail_if(v.value.i != 5); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -925,8 +961,10 @@ START_TEST(eolian_class_funcs) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/class_funcs.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/class_ > > > funcs.eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Class_Funcs"))); > > > > > > /* Class properties */ > > > @@ -950,6 +988,7 @@ START_TEST(eolian_class_funcs) > > > fail_if(eolian_function_is_class(fid)); > > > fail_if(eolian_function_scope_get(fid, EOLIAN_METHOD) != > > > EOLIAN_SCOPE_PROTECTED); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -962,9 +1001,11 @@ START_TEST(eolian_free_func) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/free_func.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/free_ > > > func.eo"))); > > > > > > /* Check that the class Dummy is still readable */ > > > fail_if(!(class = eolian_class_get_by_name(unit, "Free_Func"))); > > > @@ -996,6 +1037,7 @@ START_TEST(eolian_free_func) > > > fail_if(!(type = eolian_typedecl_base_type_get(tdl))); > > > fail_if(strcmp(eolian_type_free_func_get(type), "ptr_free")); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1009,9 +1051,11 @@ START_TEST(eolian_null) > > > Eina_Iterator *iter; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > DATA_DIR"/data/null.eo"))); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/null. > > > eo"))); > > > > > > fail_if(!(class = eolian_class_get_by_name(unit, "Null"))); > > > fail_if(!(func = eolian_class_function_get_by_name(class, "foo", > > > EOLIAN_METHOD))); > > > @@ -1045,6 +1089,7 @@ START_TEST(eolian_null) > > > fail_if(eina_iterator_next(iter, (void**)¶m)); > > > eina_iterator_free(iter); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1056,10 +1101,11 @@ START_TEST(eolian_import) > > > const Eolian_Unit *unit; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/import.eo"))); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/import. > > > eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Import"))); > > > > > > fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, > "Imported"))); > > > @@ -1068,6 +1114,7 @@ START_TEST(eolian_import) > > > fail_if(!(tdl = eolian_typedecl_struct_get_by_name(unit, > > > "Imported_Struct"))); > > > fail_if(strcmp(eolian_typedecl_file_get(tdl), > "import_types.eot")); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1082,10 +1129,11 @@ START_TEST(eolian_decl) > > > Eina_Iterator *itr; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > DATA_DIR"/data/decl.eo"))); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/decl. > > > eo"))); > > > fail_if(!(class = eolian_class_get_by_name(unit, "Decl"))); > > > > > > fail_if(!(itr = eolian_declarations_get_by_file("decl.eo"))); > > > @@ -1130,6 +1178,7 @@ START_TEST(eolian_decl) > > > fail_if(!(decl = eolian_declaration_get_by_name("A"))); > > > fail_if(eolian_declaration_type_get(decl) != EOLIAN_DECL_STRUCT); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1149,10 +1198,11 @@ START_TEST(eolian_docs) > > > Eina_Iterator *itr; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > DATA_DIR"/data/docs.eo"))); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/docs. > > > eo"))); > > > > > > fail_if(!(tdl = eolian_typedecl_struct_get_by_name(unit, "Foo"))); > > > fail_if(!(doc = eolian_typedecl_documentation_get(tdl))); > > > @@ -1374,6 +1424,7 @@ START_TEST(eolian_docs) > > > "Event docs.")); > > > fail_if(eolian_documentation_description_get(doc)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1391,11 +1442,12 @@ START_TEST(eolian_function_types) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > > > > /* Parsing */ > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/function_types.eot"))); > > > + fail_if(!(unit = eolian_file_parse(eos, PACKAGE_DATA_DIR"/data/ > > > function_types.eot"))); > > > > > > /* void func(void); */ > > > fail_if(!(decl = eolian_typedecl_alias_get_by_name(unit, > > > "VoidFunc"))); > > > @@ -1500,6 +1552,7 @@ START_TEST(eolian_function_types) > > > > > > fail_if(eina_iterator_next(iter, &dummy)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1517,10 +1570,11 @@ START_TEST(eolian_function_as_arguments) > > > void *dummy; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > DATA_DIR"/data/function_as_ > > > argument.eo"))); > > > + fail_if(!(unit = eolian_file_parse(eos, PACKAGE_DATA_DIR"/data/ > > > function_as_argument.eo"))); > > > > > > fail_if(!(cls = eolian_class_get_by_name(unit, > > > "Function_As_Argument"))); > > > > > > @@ -1540,6 +1594,7 @@ START_TEST(eolian_function_as_arguments) > > > > > > fail_if(eina_iterator_next(iter, &dummy)); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > @@ -1557,10 +1612,11 @@ START_TEST(eolian_parts) > > > }; > > > > > > eolian_init(); > > > + Eolian *eos = eolian_new(); > > > > > > - fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data")); > > > + fail_if(!eolian_directory_scan(eos, PACKAGE_DATA_DIR"/data")); > > > > > > - fail_if(!(unit = eolian_file_parse(PACKAGE_ > > > DATA_DIR"/data/parts.eo"))); > > > + fail_if(!(unit = eolian_file_parse(eos, > PACKAGE_DATA_DIR"/data/parts. > > > eo"))); > > > > > > fail_if(!(cls = eolian_class_get_by_name(unit, "Parts"))); > > > > > > @@ -1585,6 +1641,7 @@ START_TEST(eolian_parts) > > > } > > > eina_iterator_free(iter); > > > > > > + eolian_free(eos); > > > eolian_shutdown(); > > > } > > > END_TEST > > > > > > -- > > > > > > -- > > > Jean-Philippe André > > > > > > > > ------------------------------------------------------------ > ------------------ > > BACKTRACE #0 0x00007ffff670ad47 in eina_hash_add (hash=0x1b, key=0x555555a04a7c, data=0x5555559c7750) at /home/jpeg/e/core/efl/src/lib/eina/eina_hash.c:939 #1 0x00007fffdf3919d5 in _scan_cb (name=0x55555587e557 "evas_canvas3d_camera.eo", path=0x55555587c494 "/opt/e/share/eolian/include/evas-1", data=0x5555559c7690) at /home/jpeg/e/core/efl/src/lib/eolian/eolian_database.c:662 #2 0x00007ffff6770afb in eina_file_dir_list (dir=0x55555587c494 "/opt/e/share/eolian/include/evas-1", recursive=1 '\001', cb=0x7fffdf391920 <_scan_cb>, data=0x5555559c7690) at /home/jpeg/e/core/efl/src/lib/eina/eina_file.c:576 #3 0x00007ffff6770b42 in eina_file_dir_list (dir=0x5555559c9490 "/opt/e/share/eolian/include", recursive=1 '\001', cb=0x7fffdf391920 <_scan_cb>, data=0x5555559c7690) at /home/jpeg/e/core/efl/src/lib/eina/eina_file.c:580 #4 0x00007fffdf39190b in eolian_directory_scan (state=0x5555559c7690, dir=0x5555559c9490 "/opt/e/share/eolian/include") at /home/jpeg/e/core/efl/src/lib/eolian/eolian_database.c:670 #5 0x00007fffdf391a4e in eolian_system_directory_scan (state=0x5555559c7690) at /home/jpeg/e/core/efl/src/lib/eolian/eolian_database.c:681 #6 0x00007fffdf5b1ab1 in clouseau_debug_init () at /home/jpeg/e/tools/clouseau/src/lib/clouseau_debug.c:900 #7 0x00007ffff62c2b28 in _elm_clouseau_reload () at /home/jpeg/e/core/efl/src/lib/elementary/elm_main.c:366 #8 0x00007ffff6193d05 in elm_config_clouseau_enabled_set (enable=1 '\001') at /home/jpeg/e/core/efl/src/lib/elementary/elm_config.c:3868 #9 0x00007ffff61a6e62 in _efl_config_global_efl_config_config_set (obj=0x400000008eeb, _pd=0x555555849b20, name=0x55555559b4ea "clouseau_enabled", val=0x555555a06b70) at /home/jpeg/e/core/efl/src/lib/elementary/elm_config.c:4929 #10 0x00007ffff11ffdea in efl_config_set (obj=0x400000008eeb, name=0x55555559b4ea "clouseau_enabled", value=0x555555a06b70) at ../src/lib/efl/interfaces/efl_config.eo.c:1 #11 0x0000555555577c0b in efl_config_bool_set (obj=0x400000008eeb, name=0x55555559b4ea "clouseau_enabled", val=1 '\001') at /home/jpeg/e/core/efl/src/lib/elementary/elm_config.h:2215 #12 0x0000555555576592 in elm_config_eoapi (_i=0) at /home/jpeg/e/core/efl/src/tests/elementary/elm_test_config.c:104 #13 0x00007ffff7bd36a7 in () at /usr/lib/libcheck.so.0 #14 0x00007ffff7bd3bdb in srunner_run_tagged () at /usr/lib/libcheck.so.0 #15 0x0000555555560de8 in _efl_suite_build_and_run (argc=0, argv=0x7fffffffdcd0, suite_name=0x555555592b18 "Elementary", etc=0x5555557a3580 <etc>) -- Jean-Philippe André ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel