Sorry, Lua is not a features checker. Not yet... Please add a test and I will add the support in the generator.
On 10/02/14 13:16, Daniel Kolesa wrote: > It kinda does. I use it in Lua and it'd bork everything if it didn't > work, so.... > > On 2.10.2014 11:12, Daniel Zaoui wrote: >> 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 ;-) >> >> 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