Guest User

Untitled

a guest
Dec 12th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. From 66077e8c5b6ef370e903c6f5fa2d841cc5bfcab0 Mon Sep 17 00:00:00 2001
  2. From: Lauro Moura <lauromoura@expertisesolutions.com.br>
  3. Date: Wed, 12 Dec 2018 12:30:20 -0300
  4. Subject: [PATCH] efl-mono: Export the Eolian_State into root context.
  5.  
  6. ---
  7. src/bin/eolian_mono/eolian/mono/documentation.hh | 2 ++
  8. src/bin/eolian_mono/eolian/mono/generation_contexts.hh | 5 +++++
  9. src/bin/eolian_mono/eolian_mono.cc | 8 ++++++--
  10. 3 files changed, 13 insertions(+), 2 deletions(-)
  11.  
  12. diff --git a/src/bin/eolian_mono/eolian/mono/documentation.hh b/src/bin/eolian_mono/eolian/mono/documentation.hh
  13. index f78c58a9d4..bb8b690b44 100644
  14. --- a/src/bin/eolian_mono/eolian/mono/documentation.hh
  15. +++ b/src/bin/eolian_mono/eolian/mono/documentation.hh
  16. @@ -6,6 +6,7 @@
  17. #include "grammar/html_escaped_string.hpp"
  18. #include "using_decl.hh"
  19. #include "name_helpers.hh"
  20. +#include "generation_contexts.hh"
  21.  
  22. #include <Eina.h>
  23.  
  24. @@ -58,6 +59,7 @@ struct documentation_generator
  25. template<typename OutputIterator, typename Attribute, typename Context>
  26. bool generate(OutputIterator sink, Attribute const& attr, Context const& context) const
  27. {
  28. + const Eolian_State *state = context_find_tag<eolian_state_context>(context).state;
  29. return generate(sink, attr.documentation, context);
  30. }
  31.  
  32. diff --git a/src/bin/eolian_mono/eolian/mono/generation_contexts.hh b/src/bin/eolian_mono/eolian/mono/generation_contexts.hh
  33. index 7f94de7736..ca1ca9e678 100644
  34. --- a/src/bin/eolian_mono/eolian/mono/generation_contexts.hh
  35. +++ b/src/bin/eolian_mono/eolian/mono/generation_contexts.hh
  36. @@ -11,6 +11,7 @@ struct class_context
  37. inherit,
  38. inherit_native,
  39. structs,
  40. + enums,
  41. function_ptr,
  42. alias,
  43. };
  44. @@ -40,6 +41,10 @@ library_context::actual_library_name(const std::string& filename) const
  45. return '"' + library_name + '"';
  46. }
  47.  
  48. +struct eolian_state_context {
  49. + const Eolian_State *state;
  50. +};
  51. +
  52. }
  53.  
  54. #endif
  55. diff --git a/src/bin/eolian_mono/eolian_mono.cc b/src/bin/eolian_mono/eolian_mono.cc
  56. index 2e0e8918cb..db888816a2 100644
  57. --- a/src/bin/eolian_mono/eolian_mono.cc
  58. +++ b/src/bin/eolian_mono/eolian_mono.cc
  59. @@ -138,11 +138,14 @@ run(options_type const& opts)
  60. throw std::runtime_error("Failed to generate file preamble");
  61. }
  62.  
  63. - auto context = efl::eolian::grammar::context_add_tag(eolian_mono::library_context{opts.dllimport,
  64. + auto lib_context = efl::eolian::grammar::context_add_tag(eolian_mono::library_context{opts.dllimport,
  65. opts.v_major,
  66. opts.v_minor,
  67. opts.references_map},
  68. efl::eolian::grammar::context_null());
  69. +
  70. + auto context = efl::eolian::grammar::context_add_tag(eolian_mono::eolian_state_context{opts.state}, lib_context);
  71. +
  72. EINA_ITERATOR_FOREACH(aliases, tp)
  73. {
  74. if (eolian_typedecl_type_get(tp) == EOLIAN_TYPEDECL_FUNCTION_POINTER)
  75. @@ -179,7 +182,8 @@ run(options_type const& opts)
  76. , enum_last; enum_iterator != enum_last; ++enum_iterator)
  77. {
  78. efl::eolian::grammar::attributes::enum_def enum_(&*enum_iterator, opts.unit);
  79. - if (!eolian_mono::enum_definition.generate(iterator, enum_, efl::eolian::grammar::context_null()))
  80. + auto enum_cxt = context_add_tag(class_context{class_context::enums}, context);
  81. + if (!eolian_mono::enum_definition.generate(iterator, enum_, enum_cxt))
  82. {
  83. throw std::runtime_error("Failed to generate enum");
  84. }
  85. --
  86. 2.17.1
Add Comment
Please, Sign In to add comment