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