From fb7c35269ccc754f257e4fac98d228286ac4f43b Mon Sep 17 00:00:00 2001 From: Lauro Moura Date: Wed, 9 Oct 2019 16:39:38 +0200 Subject: [PATCH] csharp: Respect beta for type aliases Summary: Also add beta info to `alias_def` in eolian_cxx. Reviewers: brunobelo, felipealmeida, woohyun, segfaultxavi Reviewed By: segfaultxavi Subscribers: segfaultxavi, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10315 --- src/bin/eolian_mono/eolian/mono/alias_definition.hh | 2 +- src/bin/eolian_mono/eolian/mono/blacklist.hh | 7 ++++++- src/lib/eolian_cxx/grammar/klass_def.hpp | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bin/eolian_mono/eolian/mono/alias_definition.hh b/src/bin/eolian_mono/eolian/mono/alias_definition.hh index d4a4b5d47f..5d275a309d 100644 --- a/src/bin/eolian_mono/eolian/mono/alias_definition.hh +++ b/src/bin/eolian_mono/eolian/mono/alias_definition.hh @@ -18,7 +18,7 @@ struct alias_definition_generator template bool generate(OutputIterator sink, attributes::alias_def const& alias, Context const& context) const { - if (blacklist::is_alias_blacklisted(alias)) + if (blacklist::is_alias_blacklisted(alias, context)) { EINA_CXX_DOM_LOG_DBG(eolian_mono::domain) << "Alias " << name_helpers::alias_full_eolian_name(alias) << "is blacklisted. Skipping."; return true; diff --git a/src/bin/eolian_mono/eolian/mono/blacklist.hh b/src/bin/eolian_mono/eolian/mono/blacklist.hh index 95a5000225..ff8080b28a 100644 --- a/src/bin/eolian_mono/eolian/mono/blacklist.hh +++ b/src/bin/eolian_mono/eolian/mono/blacklist.hh @@ -119,8 +119,13 @@ inline bool is_struct_blacklisted(attributes::regular_type_def const& struct_) return is_struct_blacklisted(name_helpers::type_full_eolian_name(struct_)); } -inline bool is_alias_blacklisted(attributes::alias_def const& alias) +template +inline bool is_alias_blacklisted(attributes::alias_def const& alias, Context const& context) { + auto options = efl::eolian::grammar::context_find_tag(context); + if (alias.is_beta && !options.want_beta) + return true; + return name_helpers::alias_full_eolian_name(alias) == "Eina.Error"; } diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp index d0de5db39b..f38ebeba6c 100644 --- a/src/lib/eolian_cxx/grammar/klass_def.hpp +++ b/src/lib/eolian_cxx/grammar/klass_def.hpp @@ -554,8 +554,10 @@ struct alias_def bool is_undefined; type_def base_type {}; documentation_def documentation; + bool is_beta; alias_def(Eolian_Typedecl const* alias_obj, Eolian_Unit const* unit) + : is_beta(::eolian_typedecl_is_beta(alias_obj)) { cxx_name = eolian_name = ::eolian_typedecl_short_name_get(alias_obj);