2014-10-02 11:12 GMT+01:00 Daniel Zaoui <daniel.za...@samsung.com>:

> Hi D5,
>
> Didn't we speak about having automatic tests to be sure it works as
> expected? And don't tell me Lua checks it ;-)
>

I don't really think a test is necessary here, considering that whether it
works or not is immediately visible from whether the generator creates a
working output (for any eo file). If it didn't work, stuff wouldn't compile.


>
> D2
>
> On 10/02/14 13:02, Daniel Kolesa wrote:
> > q66 pushed a commit to branch master.
> >
> >
> http://git.enlightenment.org/core/efl.git/commit/?id=a2bde0bf96a2c7f61f12983df78e0d9d2c17f4a5
> >
> > commit a2bde0bf96a2c7f61f12983df78e0d9d2c17f4a5
> > Author: Daniel Kolesa <d.kol...@samsung.com>
> > Date:   Thu Oct 2 11:00:06 2014 +0100
> >
> >     eolian: new API: eolian_class_c_get_function_name_get
> >
> >     This allows bindings to easily retrieve name of the C function used
> to
> >     retrieve the Eo_Class. Also, update the Lua Eolian bindings and
> generator.
> > ---
> >  src/bin/elua/modules/lualian.lua    |  7 ++-----
> >  src/bindings/luajit/eolian.lua      |  7 +++++++
> >  src/lib/eolian/Eolian.h             | 12 ++++++++++++
> >  src/lib/eolian/database_class_api.c | 28 ++++++++++++++++++++++++++++
> >  4 files changed, 49 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/bin/elua/modules/lualian.lua
> b/src/bin/elua/modules/lualian.lua
> > index 745c228..d74cb02 100644
> > --- a/src/bin/elua/modules/lualian.lua
> > +++ b/src/bin/elua/modules/lualian.lua
> > @@ -364,7 +364,6 @@ end
> >  local Mixin = Node:clone {
> >      __ctor = function(self, klass, iface, ch, evs)
> >          self.klass    = klass
> > -        self.prefix   = klass:eo_prefix_get()
> >          self.children = ch
> >          self.events   = evs
> >          self.is_iface = iface
> > @@ -386,9 +385,8 @@ local Mixin = Node:clone {
> >      end,
> >
> >      gen_ffi = function(self, s)
> > -        local prefix = self.is_iface and "interface" or "mixin"
> > -        s:write("    const Eo_Class *", self.prefix, "_", prefix,
> > -            "_get(void);\n")
> > +        s:write("    const Eo_Class *",
> self.klass:c_get_function_name_get(),
> > +            "(void);\n")
> >          for i, v in ipairs(self.children) do
> >              v.parent_node = self
> >              v:gen_ffi(s)
> > @@ -415,7 +413,6 @@ local Class = Node:clone {
> >          self.parent     = parent
> >          self.interfaces = interfaces
> >          self.mixins     = mixins
> > -        self.prefix     = klass:eo_prefix_get()
> >          self.children   = ch
> >          self.events     = evs
> >      end,
> > diff --git a/src/bindings/luajit/eolian.lua
> b/src/bindings/luajit/eolian.lua
> > index 5931741..3e43750 100644
> > --- a/src/bindings/luajit/eolian.lua
> > +++ b/src/bindings/luajit/eolian.lua
> > @@ -249,6 +249,7 @@ ffi.cdef [[
> >      const char *eolian_event_c_name_get(const Eolian_Event *event);
> >      Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass);
> >      Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
> > +    const char *eolian_class_c_get_function_name_get(const Eolian_Class
> *klass);
> >      const Eolian_Type *eolian_type_alias_get_by_name(const char *name);
> >      const Eolian_Type *eolian_type_struct_get_by_name(const char *name);
> >      const Eolian_Type *eolian_type_enum_get_by_name(const char *name);
> > @@ -960,6 +961,12 @@ M.Class = ffi.metatype("Eolian_Class", {
> >
> >          dtor_enable_get = function(self)
> >              return eolian.eolian_class_dtor_enable_get(self) ~= 0
> > +        end,
> > +
> > +        c_get_function_name_get = function(self)
> > +            local v = eolian.eolian_class_c_get_function_name_get(self)
> > +            if v == nil then return nil end
> > +            return ffi_stringshare(v)
> >          end
> >      }
> >  })
> > diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
> > index 0fcecd8..4463862 100644
> > --- a/src/lib/eolian/Eolian.h
> > +++ b/src/lib/eolian/Eolian.h
> > @@ -1245,6 +1245,18 @@ EAPI Eina_Bool eolian_class_ctor_enable_get(const
> Eolian_Class *klass);
> >  EAPI Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
> >
> >  /*
> > + * @brief Returns the name of the C function used to get the Eo_Class
> pointer.
> > + *
> > + * @param[in] klass the class.
> > + * @return a stringshare containing the func name or NULL on error.
> > + *
> > + * You have to delete the stringshare manually.
> > + *
> > + * @ingroup Eolian
> > + */
> > +EAPI Eina_Stringshare *eolian_class_c_get_function_name_get(const
> Eolian_Class *klass);
> > +
> > +/*
> >   * @brief Get an alias type by name. Supports namespaces.
> >   *
> >   * @param[in] name the name of the alias
> > diff --git a/src/lib/eolian/database_class_api.c
> b/src/lib/eolian/database_class_api.c
> > index c6f9262..8de2fae 100644
> > --- a/src/lib/eolian/database_class_api.c
> > +++ b/src/lib/eolian/database_class_api.c
> > @@ -174,3 +174,31 @@ eolian_class_dtor_enable_get(const Eolian_Class *cl)
> >     EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EINA_FALSE);
> >     return cl->class_dtor_enable;
> >  }
> > +
> > +EAPI Eina_Stringshare *
> > +eolian_class_c_get_function_name_get(const Eolian_Class *cl)
> > +{
> > +   EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
> > +   Eina_Stringshare *ret;
> > +   Eina_Strbuf *buf = eina_strbuf_new();
> > +   char *bufp;
> > +   eina_strbuf_append(buf, cl->full_name);
> > +   switch (cl->type)
> > +     {
> > +      case EOLIAN_CLASS_INTERFACE:
> > +        eina_strbuf_append(buf, "_interface_get");
> > +        break;
> > +      case EOLIAN_CLASS_MIXIN:
> > +        eina_strbuf_append(buf, "_mixin_get");
> > +        break;
> > +      default:
> > +        eina_strbuf_append(buf, "_class_get");
> > +        break;
> > +     }
> > +   eina_strbuf_replace_all(buf, ".", "_");
> > +   bufp = eina_strbuf_string_steal(buf);
> > +   eina_str_tolower(&bufp);
> > +   ret = eina_stringshare_add(bufp);
> > +   free(bufp);
> > +   return ret;
> > +}
> >
>
>
>
> ------------------------------------------------------------------------------
> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
>
> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to