eolian: remove a bunch of pointless stringshare refs + fix in lua
authorDaniel Kolesa <d.kolesa@samsung.com>
Mon, 18 Aug 2014 16:15:50 +0000 (17:15 +0100)
committerDaniel Kolesa <d.kolesa@samsung.com>
Thu, 21 Aug 2014 08:26:05 +0000 (09:26 +0100)
src/bin/eolian_cxx/convert_comments.cc
src/bin/eolian_cxx/eolian_wrappers.hh
src/bindings/luajit/eolian.lua
src/lib/eolian/database_function_parameter_api.c
src/lib/eolian/database_type_api.c
src/lib/eolian/database_var_api.c
src/tests/eolian/eolian_parsing.c

index c520eb8..43aadcd 100644 (file)
@@ -16,7 +16,7 @@ _comment_parameter(Eolian_Function_Parameter *param)
    else if (direction == EOLIAN_INOUT_PARAM) doc += "[inout] ";
    else assert(false);
 
-   doc += safe_strshare(::eolian_parameter_name_get(param));
+   doc += safe_str(::eolian_parameter_name_get(param));
    doc += " ";
    doc += safe_str(description);
 
index c3a093a..5912c3e 100644 (file)
@@ -270,7 +270,7 @@ property_is_setter(Eolian_Function const& func)
 inline std::string
 parameter_name(Eolian_Function_Parameter const& parameter)
 {
-   return safe_strshare(::eolian_parameter_name_get(&parameter)) + "_";
+   return safe_str(::eolian_parameter_name_get(&parameter)) + "_";
 }
 
 inline bool
index 5ef86fc..205fc15 100644 (file)
@@ -5,6 +5,10 @@ local ffi = require("ffi")
 local bit = require("bit")
 
 ffi.cdef [[
+    void eina_stringshare_del(const char *str);
+]]
+
+ffi.cdef [[
     typedef unsigned char Eina_Bool;
     typedef struct _Eina_Iterator Eina_Iterator;
 
@@ -251,15 +255,24 @@ local Ptr_Iterator = iterator.Ptr_Iterator
 local M = {}
 
 local eolian
+local eina
 
 local init = function()
     eolian = util.lib_load("eolian")
+    eina = util.lib_load("eina")
     eolian.eolian_init()
 end
 
 local shutdown = function()
     eolian.eolian_shutdown()
     util.lib_unload("eolian")
+    util.lib_unload("eina")
+end
+
+local ffi_stringshare = function(s)
+    local r = ffi.string(s)
+    eina.eina_stringshare_del(s)
+    return r
 end
 
 cutil.init_module(init, shutdown)
@@ -442,13 +455,13 @@ M.Type = ffi.metatype("Eolian_Type", {
         c_type_named_get = function(self, name)
             local v = eolian.eolian_type_c_type_named_get(self, name)
             if v == nil then return v end
-            return ffi.string(v)
+            return ffi_stringshare(v)
         end,
 
         c_type_get = function(self)
             local v = eolian.eolian_type_c_type_get(self)
             if v == nil then return v end
-            return ffi.string(v)
+            return ffi_stringshare(v)
         end,
 
         name_get = function(self)
@@ -498,7 +511,7 @@ M.Function = ffi.metatype("Eolian_Function", {
         full_c_name_get = function(self, prefix)
             local v = eolian.eolian_function_full_c_name_get(self, prefix)
             if v == nil then return nil end
-            return ffi.string(v)
+            return ffi_stringshare(v)
         end,
 
         legacy_get = function(self, ftype)
@@ -892,7 +905,7 @@ M.Value = ffi.metatype("Eolian_Value", {
         to_literal = function(self)
             local v = eolian.eolian_expression_value_to_literal(self)
             if v == nil then return nil end
-            return ffi.string(v)
+            return ffi_stringshare(v)
         end
     }
 })
@@ -915,7 +928,7 @@ M.Expression = ffi.metatype("Eolian_Expression", {
         serialize = function(self)
             local v = eolian.eolian_expression_serialize(self)
             if v == nil then return nil end
-            return ffi.string(v)
+            return ffi_stringshare(v)
         end
     }
 })
index 73048b4..712c82e 100644 (file)
@@ -19,7 +19,6 @@ EAPI Eina_Stringshare *
 eolian_parameter_name_get(const Eolian_Function_Parameter *param)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(param, NULL);
-   eina_stringshare_ref(param->name);
    return param->name;
 }
 
index 9bc9da1..0acd204 100644 (file)
@@ -189,7 +189,7 @@ eolian_type_description_get(const Eolian_Type *tp)
    EINA_SAFETY_ON_FALSE_RETURN_VAL(tpp != EOLIAN_TYPE_POINTER
                                 && tpp != EOLIAN_TYPE_FUNCTION
                                 && tpp != EOLIAN_TYPE_VOID, NULL);
-   return eina_stringshare_ref(tp->comment);
+   return tp->comment;
 }
 
 EAPI Eina_Stringshare *
@@ -201,7 +201,7 @@ eolian_type_file_get(const Eolian_Type *tp)
    EINA_SAFETY_ON_FALSE_RETURN_VAL(tpp != EOLIAN_TYPE_POINTER
                                 && tpp != EOLIAN_TYPE_FUNCTION
                                 && tpp != EOLIAN_TYPE_VOID, NULL);
-   return eina_stringshare_ref(tp->base.file);
+   return tp->base.file;
 }
 
 EAPI const Eolian_Type *
@@ -279,7 +279,7 @@ eolian_type_name_get(const Eolian_Type *tp)
    EINA_SAFETY_ON_FALSE_RETURN_VAL(tpp != EOLIAN_TYPE_POINTER
                                 && tpp != EOLIAN_TYPE_FUNCTION
                                 && tpp != EOLIAN_TYPE_VOID, NULL);
-   return eina_stringshare_ref(tp->name);
+   return tp->name;
 }
 
 EAPI Eina_Stringshare *
@@ -291,7 +291,7 @@ eolian_type_full_name_get(const Eolian_Type *tp)
    EINA_SAFETY_ON_FALSE_RETURN_VAL(tpp != EOLIAN_TYPE_POINTER
                                 && tpp != EOLIAN_TYPE_FUNCTION
                                 && tpp != EOLIAN_TYPE_VOID, NULL);
-   return eina_stringshare_ref(tp->full_name);
+   return tp->full_name;
 }
 
 EAPI Eina_Iterator *
index 19affd2..1cd37ab 100644 (file)
@@ -55,14 +55,14 @@ EAPI Eina_Stringshare *
 eolian_variable_description_get(const Eolian_Variable *var)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
-   return eina_stringshare_ref(var->comment);
+   return var->comment;
 }
 
 EAPI Eina_Stringshare *
 eolian_variable_file_get(const Eolian_Variable *var)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
-   return eina_stringshare_ref(var->base.file);
+   return var->base.file;
 }
 
 EAPI const Eolian_Type *
@@ -83,14 +83,14 @@ EAPI Eina_Stringshare *
 eolian_variable_name_get(const Eolian_Variable *var)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
-   return eina_stringshare_ref(var->name);
+   return var->name;
 }
 
 EAPI Eina_Stringshare *
 eolian_variable_full_name_get(const Eolian_Variable *var)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
-   return eina_stringshare_ref(var->full_name);
+   return var->full_name;
 }
 
 EAPI Eina_Iterator *
index 36f7c26..ea827d0 100644 (file)
@@ -127,7 +127,6 @@ START_TEST(eolian_events)
    fail_if(strcmp(name, "clicked,double"));
    type_name = eolian_type_name_get(type);
    fail_if(strcmp(type_name, "Evas_Event_Clicked_Double_Info"));
-   eina_stringshare_del(type_name);
    fail_if(eina_iterator_next(iter, &dummy));
    eina_iterator_free(iter);
 
@@ -268,7 +267,6 @@ START_TEST(eolian_typedef)
    fail_if(eolian_type_type_get(atype) != EOLIAN_TYPE_ALIAS);
    fail_if(!(type_name = eolian_type_name_get(atype)));
    fail_if(strcmp(type_name, "Coord"));
-   eina_stringshare_del(type_name);
    fail_if(!(type_name = eolian_type_c_type_get(atype)));
    fail_if(strcmp(type_name, "typedef int Evas_Coord"));
    eina_stringshare_del(type_name);
@@ -278,18 +276,15 @@ START_TEST(eolian_typedef)
    fail_if(eolian_type_is_const(type));
    fail_if(eolian_type_base_type_get(type));
    fail_if(strcmp(type_name, "int"));
-   eina_stringshare_del(type_name);
 
    /* File */
    fail_if(!(file = eolian_type_file_get(atype)));
    fail_if(strcmp(file, "typedef.eo"));
-   eina_stringshare_del(file);
 
    /* Complex type */
    fail_if(!(atype = eolian_type_alias_get_by_name("List_Objects")));
    fail_if(!(type_name = eolian_type_name_get(atype)));
    fail_if(strcmp(type_name, "List_Objects"));
-   eina_stringshare_del(type_name);
    fail_if(!(type = eolian_type_base_type_get(atype)));
    fail_if(!(type_name = eolian_type_c_type_get(type)));
    fail_if(!eolian_type_is_own(type));
@@ -308,11 +303,9 @@ START_TEST(eolian_typedef)
    fail_if(!eina_iterator_next(iter, (void**)&atype));
    fail_if(!(type_name = eolian_type_name_get(atype)));
    fail_if(strcmp(type_name, "Coord"));
-   eina_stringshare_del(type_name);
    fail_if(!eina_iterator_next(iter, (void**)&atype));
    fail_if(!(type_name = eolian_type_name_get(atype)));
    fail_if(strcmp(type_name, "List_Objects"));
-   eina_stringshare_del(type_name);
    fail_if(eina_iterator_next(iter, (void**)&atype));
 
    eolian_shutdown();
@@ -535,7 +528,6 @@ START_TEST(eolian_simple_parsing)
    fail_if(eolian_parameter_direction_get(param) != EOLIAN_INOUT_PARAM);
    ptype = eolian_type_name_get(eolian_parameter_type_get(param));
    fail_if(strcmp(ptype, "char"));
-   eina_stringshare_del(ptype);
    fail_if(strcmp(eolian_parameter_name_get(param), "b"));
    fail_if(eolian_parameter_description_get(param));
    fail_if(!(eina_iterator_next(iter, (void**)&param)));
@@ -578,13 +570,10 @@ START_TEST(eolian_struct)
    fail_if(eolian_type_is_own(type));
    fail_if(eolian_type_is_const(type));
    fail_if(strcmp(type_name, "Named"));
-   eina_stringshare_del(type_name);
    fail_if(strcmp(file, "struct.eo"));
-   eina_stringshare_del(file);
    fail_if(!(field = eolian_type_struct_field_get(type, "field")));
    fail_if(!(type_name = eolian_type_name_get(field)));
    fail_if(strcmp(type_name, "int"));
-   eina_stringshare_del(type_name);
    fail_if(!(field = eolian_type_struct_field_get(type, "something")));
    fail_if(!(type_name = eolian_type_c_type_get(field)));
    fail_if(strcmp(type_name, "const char *"));
@@ -596,13 +585,10 @@ START_TEST(eolian_struct)
    fail_if(!(file = eolian_type_file_get(type)));
    fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_STRUCT);
    fail_if(strcmp(type_name, "Another"));
-   eina_stringshare_del(type_name);
    fail_if(strcmp(file, "struct.eo"));
-   eina_stringshare_del(file);
    fail_if(!(field = eolian_type_struct_field_get(type, "field")));
    fail_if(!(type_name = eolian_type_name_get(field)));
    fail_if(strcmp(type_name, "Named"));
-   eina_stringshare_del(type_name);
    fail_if(eolian_type_type_get(field) != EOLIAN_TYPE_REGULAR_STRUCT);
 
    /* typedef */
@@ -611,7 +597,6 @@ START_TEST(eolian_struct)
    fail_if(!(type_name = eolian_type_name_get(type)));
    fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_STRUCT);
    fail_if(strcmp(type_name, "_Foo"));
-   eina_stringshare_del(type_name);
 
    /* typedef - anon */
    fail_if(!(atype = eolian_type_alias_get_by_name("Bar")));
@@ -686,7 +671,6 @@ START_TEST(eolian_var)
    fail_if(!(type = eolian_variable_base_type_get(var)));
    fail_if(!(name = eolian_type_name_get(type)));
    fail_if(strcmp(name, "int"));
-   eina_stringshare_del(name);
    fail_if(!(exp = eolian_variable_value_get(var)));
    v = eolian_expression_eval_type(exp, type);
    fail_if(v.type != EOLIAN_EXPR_INT);
@@ -699,7 +683,6 @@ START_TEST(eolian_var)
    fail_if(!(type = eolian_variable_base_type_get(var)));
    fail_if(!(name = eolian_type_name_get(type)));
    fail_if(strcmp(name, "float"));
-   eina_stringshare_del(name);
    fail_if(!(exp = eolian_variable_value_get(var)));
    v = eolian_expression_eval_type(exp, type);
    fail_if(v.type != EOLIAN_EXPR_FLOAT);
@@ -712,7 +695,6 @@ START_TEST(eolian_var)
    fail_if(!(type = eolian_variable_base_type_get(var)));
    fail_if(!(name = eolian_type_name_get(type)));
    fail_if(strcmp(name, "long"));
-   eina_stringshare_del(name);
    fail_if(eolian_variable_value_get(var));
 
    /* extern global  */
@@ -722,7 +704,6 @@ START_TEST(eolian_var)
    fail_if(!(type = eolian_variable_base_type_get(var)));
    fail_if(!(name = eolian_type_name_get(type)));
    fail_if(strcmp(name, "double"));
-   eina_stringshare_del(name);
    fail_if(eolian_variable_value_get(var));
 
    eolian_shutdown();
@@ -799,7 +780,6 @@ START_TEST(eolian_enum)
    fail_if(!(type = eolian_variable_base_type_get(var)));
    fail_if(!(name = eolian_type_name_get(type)));
    fail_if(strcmp(name, "int"));
-   eina_stringshare_del(name);
    fail_if(!(exp = eolian_variable_value_get(var)));
    v = eolian_expression_eval(exp, EOLIAN_MASK_ALL);
    fail_if(v.type != EOLIAN_EXPR_INT);