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**)&param));
> >     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é
> >
> >
> ------------------------------------------------------------------------------
> 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

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

Reply via email to