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

Reply via email to