xartigas pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=fb7c35269ccc754f257e4fac98d228286ac4f43b

commit fb7c35269ccc754f257e4fac98d228286ac4f43b
Author: Lauro Moura <[email protected]>
Date:   Wed Oct 9 16:39:38 2019 +0200

    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<typename OutputIterator, typename Context>
   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 <typename Context>
+inline bool is_alias_blacklisted(attributes::alias_def const& alias, Context 
const& context)
 {
+   auto options = 
efl::eolian::grammar::context_find_tag<options_context>(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);
 

-- 


Reply via email to