From 452497eac5f020de3b5986ecde9f6efb21e8e9f3 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Mon, 18 Aug 2014 17:15:50 +0100 Subject: [PATCH] eolian: remove a bunch of pointless stringshare refs + fix in lua --- src/bin/eolian_cxx/convert_comments.cc | 2 +- src/bin/eolian_cxx/eolian_wrappers.hh | 2 +- src/bindings/luajit/eolian.lua | 23 ++++++++++++++++++----- src/lib/eolian/database_function_parameter_api.c | 1 - src/lib/eolian/database_type_api.c | 8 ++++---- src/lib/eolian/database_var_api.c | 8 ++++---- src/tests/eolian/eolian_parsing.c | 20 -------------------- 7 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/bin/eolian_cxx/convert_comments.cc b/src/bin/eolian_cxx/convert_comments.cc index c520eb8..43aadcd 100644 --- a/src/bin/eolian_cxx/convert_comments.cc +++ b/src/bin/eolian_cxx/convert_comments.cc @@ -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); diff --git a/src/bin/eolian_cxx/eolian_wrappers.hh b/src/bin/eolian_cxx/eolian_wrappers.hh index c3a093a..5912c3e 100644 --- a/src/bin/eolian_cxx/eolian_wrappers.hh +++ b/src/bin/eolian_cxx/eolian_wrappers.hh @@ -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(¶meter)) + "_"; + return safe_str(::eolian_parameter_name_get(¶meter)) + "_"; } inline bool diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index 5ef86fc..205fc15 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -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 } }) diff --git a/src/lib/eolian/database_function_parameter_api.c b/src/lib/eolian/database_function_parameter_api.c index 73048b4..712c82e 100644 --- a/src/lib/eolian/database_function_parameter_api.c +++ b/src/lib/eolian/database_function_parameter_api.c @@ -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; } diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index 9bc9da1..0acd204 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -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 * diff --git a/src/lib/eolian/database_var_api.c b/src/lib/eolian/database_var_api.c index 19affd2..1cd37ab 100644 --- a/src/lib/eolian/database_var_api.c +++ b/src/lib/eolian/database_var_api.c @@ -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 * diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index 36f7c26..ea827d0 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -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**)¶m))); @@ -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); -- 2.7.4