summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2018-05-16 17:35:21 -0300
committerLauro Moura <lauromoura@expertisesolutions.com.br>2018-05-17 16:55:52 -0300
commitbafa91be2026d03efc379a7944ead14594c90e78 (patch)
tree4abca1749294346510785c06a0f8db84b5498f52
parent42baaa046dee716d469a5f2ea05493c049dbda6d (diff)
downloadefl-bafa91be2026d03efc379a7944ead14594c90e78.tar.gz
efl_mono: Fix generation of event arguments
Summary: Event argument was getting its type name from another path, different from the type_generator. In later commits the other functions from name_helpers should use the type_generator too. Reviewers: felipealmeida Reviewed By: felipealmeida Subscribers: cedric, zmike Tags: #efl Differential Revision: https://phab.enlightenment.org/D6170
-rw-r--r--src/bin/eolian_mono/eolian/mono/events.hh9
-rw-r--r--src/bin/eolian_mono/eolian/mono/name_helpers.hh19
2 files changed, 7 insertions, 21 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/events.hh b/src/bin/eolian_mono/eolian/mono/events.hh
index 1d56db7dd2..2da287b8e7 100644
--- a/src/bin/eolian_mono/eolian/mono/events.hh
+++ b/src/bin/eolian_mono/eolian/mono/events.hh
@@ -81,7 +81,12 @@ struct event_argument_wrapper_generator
return true;
std::string evt_name = name_helpers::managed_event_name(evt.name);
- std::string arg_type = (*etype).original_type.visit(name_helpers::get_csharp_type_visitor{});
+ std::string arg_type;
+ if (!as_generator(type).generate(std::back_inserter(arg_type), *etype, efl::eolian::grammar::context_null()))
+ {
+ EINA_CXX_DOM_LOG_ERR(eolian_mono::domain) << "Failed to get argument type for event " << evt.name;
+ return false;
+ }
return as_generator("///<summary>Event argument wrapper for event " << evt_name << ".</summary>\n"
<< "public class " << name_helpers::managed_event_args_short_name(evt) << " : EventArgs {\n"
@@ -177,7 +182,7 @@ struct event_definition_generator
{
wrapper_args_type = name_helpers::managed_event_args_name(evt);
wrapper_args_template = "<" + wrapper_args_type + ">";
- std::string arg_initializer = wrapper_args_type + " args = new " + wrapper_args_type + "();\n"; // = (*etype).original_type.visit(get_csharp_type_visitor{});
+ std::string arg_initializer = wrapper_args_type + " args = new " + wrapper_args_type + "();\n";
arg_initializer += " args.arg = ";
diff --git a/src/bin/eolian_mono/eolian/mono/name_helpers.hh b/src/bin/eolian_mono/eolian/mono/name_helpers.hh
index 6dd0cc567c..912909b4a8 100644
--- a/src/bin/eolian_mono/eolian/mono/name_helpers.hh
+++ b/src/bin/eolian_mono/eolian/mono/name_helpers.hh
@@ -291,25 +291,6 @@ inline std::string translate_inherited_event_name(const attributes::event_def &e
return join_namespaces(klass.namespaces, '_') + klass.cxx_name + "_" + managed_event_name(evt.name);
}
-// Type visistor
-struct get_csharp_type_visitor
-{
- typedef get_csharp_type_visitor visitor_type;
- typedef std::string result_type;
- std::string operator()(attributes::regular_type_def const& type) const
- {
- return type_full_managed_name(type);
- }
- std::string operator()(attributes::klass_name const& name) const
- {
- return klass_full_interface_name(name);
- }
- std::string operator()(attributes::complex_type_def const&) const
- {
- return "UNSUPPORTED";
- }
-};
-
// Open/close namespaces
template<typename OutputIterator, typename Context>
bool open_namespaces(OutputIterator sink, std::vector<std::string> namespaces, Context context)