From 890ce1f9cf902ccd0011a4041fd90d05f93f3c8a Mon Sep 17 00:00:00 2001 From: Felipe Magno de Almeida Date: Sun, 26 Oct 2014 19:42:55 -0200 Subject: [PATCH] eolian-cxx: Fixed C++ conversion for lists Signed-off-by: Vitor Sousa --- src/bin/eolian_cxx/type_lookup.hh | 1 + src/bin/eolian_cxx/type_lookup_table.cc | 33 +++++++++++++------------ src/lib/eolian_cxx/eo_types.hh | 8 ++++-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/bin/eolian_cxx/type_lookup.hh b/src/bin/eolian_cxx/type_lookup.hh index 006201c122..1b64bbb20b 100644 --- a/src/bin/eolian_cxx/type_lookup.hh +++ b/src/bin/eolian_cxx/type_lookup.hh @@ -35,6 +35,7 @@ type_from_eolian(Eolian_Type const& type) efl::eolian::eolian_type x; x.native = normalize_spaces(safe_str(::eolian_type_c_type_get(&type))); x.is_own = ::eolian_type_is_own(&type); + x.is_const = ::eolian_type_is_const(&type); return x; } diff --git a/src/bin/eolian_cxx/type_lookup_table.cc b/src/bin/eolian_cxx/type_lookup_table.cc index bb14d95f1f..d4e7c1e9d6 100644 --- a/src/bin/eolian_cxx/type_lookup_table.cc +++ b/src/bin/eolian_cxx/type_lookup_table.cc @@ -13,24 +13,25 @@ type_lookup_table {"Ecore_Task_Cb", eolian_type::callback_, {"Ecore.h"}}, {"Ecore_Timeline_Cb", eolian_type::callback_, {"Ecore.h"}}, {"Edje_Signal_Cb", eolian_type::callback_, {"Edje.h"}}, - {"Eina_Accessor *", eolian_type::complex_, false, "efl::eina::accessor", {"eina-cxx/eina_accessor.hh"}}, - {"Eina_Bool", eolian_type::simple_, false, "bool", {}}, - {"Eina_Bool *", eolian_type::simple_, false, "bool*", {}}, - {"Eina_Inlist *", eolian_type::complex_, false, "efl::eina::range_inlist", {"eina-cxx/eina_inlist.hh"}}, - {"Eina_Inlist *", eolian_type::complex_, true, "efl::eina::inlist", {"eina-cxx/eina_inlist.hh"}}, - {"Eina_Iterator *", eolian_type::complex_, false, "efl::eina::iterator", {"eina-cxx/eina_iterator.hh"}}, - {"Eina_List *", eolian_type::complex_, false, "efl::eina::range_list", {"eina-cxx/eina_list.hh"}}, - {"Eina_List *", eolian_type::complex_, true, "efl::eina::list", {"eina-cxx/eina_list.hh"}}, + {"Eina_Accessor *", eolian_type::complex_, false, false, "efl::eina::accessor", {"eina-cxx/eina_accessor.hh"}}, + {"Eina_Bool", eolian_type::simple_, false, false, "bool", {}}, + {"Eina_Bool *", eolian_type::simple_, false, false, "bool*", {}}, + {"Eina_Inlist *", eolian_type::complex_, false, false, "efl::eina::range_inlist", {"eina-cxx/eina_inlist.hh"}}, + {"Eina_Inlist *", eolian_type::complex_, false, true, "efl::eina::inlist", {"eina-cxx/eina_inlist.hh"}}, + {"Eina_Iterator *", eolian_type::complex_, false, false, "efl::eina::iterator", {"eina-cxx/eina_iterator.hh"}}, + {"Eina_List *", eolian_type::complex_, false, false, "efl::eina::range_list", {"eina-cxx/eina_list.hh"}}, + {"Eina_List *", eolian_type::complex_, false, true, "efl::eina::list", {"eina-cxx/eina_list.hh"}}, + {"const Eina_List *", eolian_type::complex_, true, false, "efl::eina::crange_list", {"eina-cxx/eina_list.hh"}}, {"Eio_Filter_Direct_Cb", eolian_type::callback_, {"Eio.h"}}, - {"Emodel *", eolian_type::simple_, false, "emodel", {"Emodel.hh"}}, - {"Eo *", eolian_type::simple_, true, "efl::eo::base", {"eo_base.hh"}}, - {"Eo *", eolian_type::simple_, false, "efl::eo::base", {"eo_base.hh"}}, + {"Emodel *", eolian_type::simple_, false, false, "emodel", {"Emodel.hh"}}, + {"Eo *", eolian_type::simple_, false, true, "efl::eo::base", {"eo_base.hh"}}, + {"Eo *", eolian_type::simple_, false, false, "efl::eo::base", {"eo_base.hh"}}, //{"Evas_Object_Box_Layout", eolian_type::callback_, {"Evas.h"}}, - {"Evas_Object *", eolian_type::simple_, false, "evas::object", {"canvas/evas_object.eo.hh"}}, - {"char *", eolian_type::simple_, true, "std::unique_ptr", {"memory"}}, - {"const Eina_Inlist *", eolian_type::complex_, false, "efl::eina::range_inlist", {"eina-cxx/eina_inlist.hh"}}, - {"const Eina_List *", eolian_type::complex_, false, "efl::eina::crange_list", {"eina-cxx/eina_ptrlist.hh"}}, - {"const char *", eolian_type::simple_, false, "std::string", {"string"}} + {"Evas_Object *", eolian_type::simple_, false, false, "evas::object", {"canvas/evas_object.eo.hh"}}, + {"char *", eolian_type::simple_, false, true, "std::unique_ptr", {"memory"}}, + {"const Eina_Inlist *", eolian_type::complex_, false, false, "efl::eina::range_inlist", {"eina-cxx/eina_inlist.hh"}}, + {"const Eina_List *", eolian_type::complex_, false, false, "efl::eina::range_list", {"eina-cxx/eina_ptrlist.hh"}}, + {"const char *", eolian_type::simple_, false, false, "std::string", {"string"}}, }; } diff --git a/src/lib/eolian_cxx/eo_types.hh b/src/lib/eolian_cxx/eo_types.hh index 3ce3e0914a..92237790d2 100644 --- a/src/lib/eolian_cxx/eo_types.hh +++ b/src/lib/eolian_cxx/eo_types.hh @@ -31,6 +31,7 @@ struct eolian_type eolian_type() : native("") , category(unknown_) + , is_const(false) , is_own(false) , binding() , includes() @@ -38,11 +39,13 @@ struct eolian_type eolian_type(std::string native_, category_type category_, + bool is_const_, bool is_own_, std::string binding_, includes_container_type includes_) : native(native_) , category(category_) + , is_const(is_const_) , is_own(is_own_) , binding(binding_) , includes(includes_) @@ -54,13 +57,14 @@ struct eolian_type eolian_type(std::string native_, category_type category_, includes_container_type const& includes_) - : eolian_type(native_, category_, false, "", includes_) + : eolian_type(native_, category_, false, false, "", includes_) { assert(category == callback_); } std::string native; category_type category; + bool is_const; bool is_own; std::string binding; includes_container_type includes; @@ -69,7 +73,7 @@ struct eolian_type typedef std::vector eolian_type_instance; const efl::eolian::eolian_type -void_type { "void", efl::eolian::eolian_type::simple_, false, "", {} }; +void_type { "void", efl::eolian::eolian_type::simple_, false, false, "", {} }; inline bool type_is_void(eolian_type_instance const& type)