Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From 66077e8c5b6ef370e903c6f5fa2d841cc5bfcab0 Mon Sep 17 00:00:00 2001
- From: Lauro Moura <lauromoura@expertisesolutions.com.br>
- Date: Wed, 12 Dec 2018 12:30:20 -0300
- Subject: [PATCH] efl-mono: Export the Eolian_State into root context.
- ---
- src/bin/eolian_mono/eolian/mono/documentation.hh | 2 ++
- src/bin/eolian_mono/eolian/mono/generation_contexts.hh | 5 +++++
- src/bin/eolian_mono/eolian_mono.cc | 8 ++++++--
- 3 files changed, 13 insertions(+), 2 deletions(-)
- diff --git a/src/bin/eolian_mono/eolian/mono/documentation.hh b/src/bin/eolian_mono/eolian/mono/documentation.hh
- index f78c58a9d4..bb8b690b44 100644
- --- a/src/bin/eolian_mono/eolian/mono/documentation.hh
- +++ b/src/bin/eolian_mono/eolian/mono/documentation.hh
- @@ -6,6 +6,7 @@
- #include "grammar/html_escaped_string.hpp"
- #include "using_decl.hh"
- #include "name_helpers.hh"
- +#include "generation_contexts.hh"
- #include <Eina.h>
- @@ -58,6 +59,7 @@ struct documentation_generator
- template<typename OutputIterator, typename Attribute, typename Context>
- bool generate(OutputIterator sink, Attribute const& attr, Context const& context) const
- {
- + const Eolian_State *state = context_find_tag<eolian_state_context>(context).state;
- return generate(sink, attr.documentation, context);
- }
- diff --git a/src/bin/eolian_mono/eolian/mono/generation_contexts.hh b/src/bin/eolian_mono/eolian/mono/generation_contexts.hh
- index 7f94de7736..ca1ca9e678 100644
- --- a/src/bin/eolian_mono/eolian/mono/generation_contexts.hh
- +++ b/src/bin/eolian_mono/eolian/mono/generation_contexts.hh
- @@ -11,6 +11,7 @@ struct class_context
- inherit,
- inherit_native,
- structs,
- + enums,
- function_ptr,
- alias,
- };
- @@ -40,6 +41,10 @@ library_context::actual_library_name(const std::string& filename) const
- return '"' + library_name + '"';
- }
- +struct eolian_state_context {
- + const Eolian_State *state;
- +};
- +
- }
- #endif
- diff --git a/src/bin/eolian_mono/eolian_mono.cc b/src/bin/eolian_mono/eolian_mono.cc
- index 2e0e8918cb..db888816a2 100644
- --- a/src/bin/eolian_mono/eolian_mono.cc
- +++ b/src/bin/eolian_mono/eolian_mono.cc
- @@ -138,11 +138,14 @@ run(options_type const& opts)
- throw std::runtime_error("Failed to generate file preamble");
- }
- - auto context = efl::eolian::grammar::context_add_tag(eolian_mono::library_context{opts.dllimport,
- + auto lib_context = efl::eolian::grammar::context_add_tag(eolian_mono::library_context{opts.dllimport,
- opts.v_major,
- opts.v_minor,
- opts.references_map},
- efl::eolian::grammar::context_null());
- +
- + auto context = efl::eolian::grammar::context_add_tag(eolian_mono::eolian_state_context{opts.state}, lib_context);
- +
- EINA_ITERATOR_FOREACH(aliases, tp)
- {
- if (eolian_typedecl_type_get(tp) == EOLIAN_TYPEDECL_FUNCTION_POINTER)
- @@ -179,7 +182,8 @@ run(options_type const& opts)
- , enum_last; enum_iterator != enum_last; ++enum_iterator)
- {
- efl::eolian::grammar::attributes::enum_def enum_(&*enum_iterator, opts.unit);
- - if (!eolian_mono::enum_definition.generate(iterator, enum_, efl::eolian::grammar::context_null()))
- + auto enum_cxt = context_add_tag(class_context{class_context::enums}, context);
- + if (!eolian_mono::enum_definition.generate(iterator, enum_, enum_cxt))
- {
- throw std::runtime_error("Failed to generate enum");
- }
- --
- 2.17.1
Add Comment
Please, Sign In to add comment