felipealmeida pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=343b88a735001de28bbe6eee9c1549c284bf6d09
commit 343b88a735001de28bbe6eee9c1549c284bf6d09 Author: Felipe Magno de Almeida <fel...@expertisesolutions.com.br> Date: Wed Jun 8 12:55:19 2016 -0300 eolian-cxx: Fix some C++ quirks that makes clang warn about --- src/bindings/cxx/eo_cxx/eo_cxx_interop.hh | 4 ++-- src/lib/eolian_cxx/grammar/class_definition.hpp | 12 ------------ src/lib/eolian_cxx/grammar/klass_def.hpp | 8 ++++---- src/lib/eolian_cxx/grammar/parameter.hpp | 2 +- src/lib/eolian_cxx/grammar/qualifier_def.hpp | 4 ++++ src/lib/eolian_cxx/grammar/type_impl.hpp | 14 +++++++------- 6 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/bindings/cxx/eo_cxx/eo_cxx_interop.hh b/src/bindings/cxx/eo_cxx/eo_cxx_interop.hh index a19bb24..eb06ef1 100644 --- a/src/bindings/cxx/eo_cxx/eo_cxx_interop.hh +++ b/src/bindings/cxx/eo_cxx/eo_cxx_interop.hh @@ -323,12 +323,12 @@ T* convert_to_c_impl(std::unique_ptr<U, Deleter>& v, tag<T*, std::unique_ptr<U, } template <typename T> -Eina_Array** convert_to_c_impl(efl::eina::array<T>& c, tag<Eina_Array **, efl::eina::array<T>&>) +Eina_Array** convert_to_c_impl(efl::eina::array<T>& /*c*/, tag<Eina_Array **, efl::eina::array<T>&>) { std::abort(); } template <typename T> -Eina_Array** convert_to_c_impl(efl::eina::range_array<T>& c, tag<Eina_Array **, efl::eina::range_array<T>&>) +Eina_Array** convert_to_c_impl(efl::eina::range_array<T>& /*c*/, tag<Eina_Array **, efl::eina::range_array<T>&>) { std::abort(); } diff --git a/src/lib/eolian_cxx/grammar/class_definition.hpp b/src/lib/eolian_cxx/grammar/class_definition.hpp index b5ec2a9..cbf45ad 100644 --- a/src/lib/eolian_cxx/grammar/class_definition.hpp +++ b/src/lib/eolian_cxx/grammar/class_definition.hpp @@ -110,18 +110,6 @@ struct class_definition_generator scope_tab << "Eo* _eo_ptr() const { return *(Eo**)this; }\n" ).generate(sink, attributes::unused, context)) return false; - // operator ::ns::Class_Name() const; - // operator ::ns::Class_Name&(); - // operator ::ns::Class_Name const&() const; - if(!as_generator - ( - scope_tab << "operator " << *("::" << lower_case[string]) << "::" << string << "() const;\n" - << scope_tab << "operator " << *("::" << lower_case[string]) << "::" << string << "&();\n" - << scope_tab << "operator " << *("::" << lower_case[string]) << "::" << string << " const&() const;\n" - ).generate(sink, std::make_tuple(cpp_namespaces, cls.cxx_name, cpp_namespaces, cls.cxx_name - , cpp_namespaces, cls.cxx_name), context)) - return false; - if(!as_generator ( *attribute_reorder<1, 2, 0, 1> diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp index e9c988f..8a40dbd 100644 --- a/src/lib/eolian_cxx/grammar/klass_def.hpp +++ b/src/lib/eolian_cxx/grammar/klass_def.hpp @@ -279,11 +279,11 @@ inline void type_def::set(Eolian_Type const* eolian_type) case EOLIAN_TYPE_POINTER: { std::vector<pointer_indirection> pointers - {{ {qualifiers(eolian_type)}, false }}; + {{ {qualifiers(eolian_type), {}}, false }}; Eolian_Type const* base_type = eolian_type_base_type_get(eolian_type); while(eolian_type_type_get(base_type) == EOLIAN_TYPE_POINTER) { - pointers.push_back({qualifiers(base_type)}); + pointers.push_back({{qualifiers(base_type), {}}}); base_type = eolian_type_base_type_get(base_type); } @@ -295,7 +295,7 @@ inline void type_def::set(Eolian_Type const* eolian_type) case EOLIAN_TYPE_CLASS: { Eolian_Class const* klass = eolian_type_class_get(eolian_type); - original_type = klass_name(klass, {qualifiers(eolian_type)}, {}); + original_type = klass_name(klass, {qualifiers(eolian_type), {}}, {}); } break; case EOLIAN_TYPE_COMPLEX: @@ -636,7 +636,7 @@ struct klass_def , inherit_last; inherit_iterator != inherit_last; ++inherit_iterator) { Eolian_Class const* inherit = ::eolian_class_get_by_name(&*inherit_iterator); - inherits.insert({inherit, {qualifier_info::is_none}, {}}); + inherits.insert({inherit, {}, {}}); inherit_algo(inherit); } }; diff --git a/src/lib/eolian_cxx/grammar/parameter.hpp b/src/lib/eolian_cxx/grammar/parameter.hpp index c1fb1bc..f236841 100644 --- a/src/lib/eolian_cxx/grammar/parameter.hpp +++ b/src/lib/eolian_cxx/grammar/parameter.hpp @@ -13,7 +13,7 @@ struct add_reference_visitor template <typename T> void operator()(T& object) const { - object.pointers.insert(object.pointers.begin(), {{attributes::qualifier_info::is_none}, true}); + object.pointers.insert(object.pointers.begin(), {{}, true}); } void operator()(attributes::complex_type_def& complex) const { diff --git a/src/lib/eolian_cxx/grammar/qualifier_def.hpp b/src/lib/eolian_cxx/grammar/qualifier_def.hpp index 0f5de4a..3ba1a89 100644 --- a/src/lib/eolian_cxx/grammar/qualifier_def.hpp +++ b/src/lib/eolian_cxx/grammar/qualifier_def.hpp @@ -78,6 +78,10 @@ struct qualifier_def { qualifier_info qualifier; std::string free_function; + + qualifier_def() : qualifier(qualifier_info::is_none) {} + qualifier_def(qualifier_info info, std::string free_function) + : qualifier(info), free_function(std::move(free_function)) {} }; inline bool operator<(qualifier_def const& lhs, qualifier_def const& rhs) diff --git a/src/lib/eolian_cxx/grammar/type_impl.hpp b/src/lib/eolian_cxx/grammar/type_impl.hpp index a1013ef..7eda7ad 100644 --- a/src/lib/eolian_cxx/grammar/type_impl.hpp +++ b/src/lib/eolian_cxx/grammar/type_impl.hpp @@ -105,12 +105,12 @@ struct visitor_generate } const match_table[] = { - "void_ptr", nullptr, [&] - { - std::vector<attributes::pointer_indirection> pointers = regular.pointers; - pointers.insert(pointers.begin(), {{attributes::qualifier_info::is_none, {}}, false}); - return attributes::regular_type_def{"void", regular.base_qualifier, pointers, {}}; - } + {"void_ptr", nullptr, [&] + { + std::vector<attributes::pointer_indirection> pointers = regular.pointers; + pointers.insert(pointers.begin(), {{}, false}); + return attributes::regular_type_def{"void", regular.base_qualifier, pointers, {}}; + }} // signed primitives , {"byte", nullptr, [&] { return replace_base_type(regular, " char"); }} , {"llong", nullptr, [&] { return replace_base_type(regular, " long long"); }} @@ -166,7 +166,7 @@ struct visitor_generate if(regular.pointers.empty() || (regular.pointers.size() == 1 && regular.pointers[0].reference == true)) { attributes::complex_type_def def - {attributes::regular_type_def{" ::efl::eina::optional", attributes::qualifier_info::is_none, {}}}; + {attributes::regular_type_def{" ::efl::eina::optional", {}}}; attributes::regular_type_def no_optional_regular = regular; attributes::remove_optional(no_optional_regular.base_qualifier); --