From: Lauro Moura Date: Mon, 16 Apr 2018 15:36:51 +0000 (-0300) Subject: efl_mono: Use PascalCase in events X-Git-Tag: upstream/1.21.0~964 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=512e1bcd45c1d77ab2d652d6e0e82d16ccb78a31;p=platform%2Fupstream%2Fefl.git efl_mono: Use PascalCase in events Summary: To deal with events with the same name as some methods (Del, Invalidate, etc), the suffix Evt was added. Thus, now we use obj.ButtonClickedEvt += callback; Instead of obj.BUTTON_CLICKED += cal The argument classes use the same scheme, being called _Args. Depends on D5991 Reviewers: felipealmeida Reviewed By: felipealmeida Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D5992 --- diff --git a/src/bin/eolian_mono/eolian/mono/keyword.hh b/src/bin/eolian_mono/eolian/mono/keyword.hh index 71771b2..e73db31 100644 --- a/src/bin/eolian_mono/eolian/mono/keyword.hh +++ b/src/bin/eolian_mono/eolian/mono/keyword.hh @@ -39,11 +39,11 @@ inline std::string escape_keyword(std::string const& name) std::string managed_method_name(std::string const& underscore_name) { - std::vector names = name_helpers::split(underscore_name, '_'); + std::vector names = utils::split(underscore_name, '_'); name_helpers::reorder_verb(names); - return escape_keyword(name_helpers::pascal_case(names)); + return escape_keyword(utils::to_pascal_case(names)); } } diff --git a/src/bin/eolian_mono/eolian/mono/klass.hh b/src/bin/eolian_mono/eolian/mono/klass.hh index a5f3809..fa55828 100644 --- a/src/bin/eolian_mono/eolian/mono/klass.hh +++ b/src/bin/eolian_mono/eolian/mono/klass.hh @@ -173,8 +173,7 @@ struct klass if (!etype.is_engaged()) continue; - std::string evt_name = utils::to_uppercase(e.name); - std::replace(evt_name.begin(), evt_name.end(), ',', '_'); + std::string evt_name = name_helpers::managed_event_name(e.name); std::string arg_type = (*etype).original_type.visit(get_csharp_type_visitor{}); if (!as_generator("///Event argument wrapper for event " << string << ".\n" @@ -221,7 +220,7 @@ struct klass for (auto &&e : cls.events) { std::string wrapper_args_type; - std::string evt_name = utils::to_uppercase(e.name); + std::string evt_name = name_helpers::managed_event_name(e.name); std::replace(evt_name.begin(), evt_name.end(), ',', '_'); efl::eina::optional etype = e.type; @@ -569,9 +568,7 @@ struct klass s << n; s << '_'; } - std::string evt_name = utils::to_uppercase(evt.name); - std::replace(evt_name.begin(), evt_name.end(), ',', '_'); - s << klass.cxx_name << '_' << evt_name; + s << klass.cxx_name << '_' << name_helpers::managed_event_name(evt.name); return s.str(); } @@ -633,8 +630,7 @@ struct klass // Self events for (auto&& e : cls.events) { - std::string upper_name = utils::to_uppercase(e.name); - std::replace(upper_name.begin(), upper_name.end(), ',', '_'); + std::string upper_name = name_helpers::managed_event_name(e.name); std::string upper_c_name = utils::to_uppercase(e.c_name); std::string event_name = e.name; std::replace(event_name.begin(), event_name.end(), ',', '_'); @@ -720,8 +716,7 @@ struct klass { std::string wrapper_evt_name = translate_inherited_event_name(e, klass); - std::string upper_name = utils::to_uppercase(e.name); - std::replace(upper_name.begin(), upper_name.end(), ',', '_'); + std::string upper_name = name_helpers::managed_event_name(e.name); std::string upper_c_name = utils::to_uppercase(e.c_name); std::stringstream wrapper_args_type; diff --git a/src/bin/eolian_mono/eolian/mono/name_helpers.hh b/src/bin/eolian_mono/eolian/mono/name_helpers.hh index 6b40829..4ae988c 100644 --- a/src/bin/eolian_mono/eolian/mono/name_helpers.hh +++ b/src/bin/eolian_mono/eolian/mono/name_helpers.hh @@ -7,9 +7,14 @@ #include #include #include +#include "utils.hh" namespace eolian_mono { +/* Utility functions for naming things. Compared to the utils.hh, this header has higher level + * functions, dealing with the knowledge of how to convert the items to the C# style we are using, for + * example, while being too short to be implemented as full-fledged generators. + */ namespace name_helpers { static const std::vector verbs = @@ -103,33 +108,9 @@ void reorder_verb(std::vector &names) } } -std::vector split(std::string const &input, char delim) +std::string managed_event_name(std::string const& name) { - std::stringstream ss(input); - std::string name; - std::vector names; - - while (std::getline(ss, name, delim)) { - if (!name.empty()) - names.push_back(name); - } - return names; -} - -std::string pascal_case(const std::vector &names) -{ - std::vector outv(names.size()); - std::stringstream osstream; - - std::transform(names.begin(), names.end(), outv.begin(), - [](std::string name) { - name[0] = std::toupper(name[0]); - return name; - }); - - std::copy(outv.begin(), outv.end(), std::ostream_iterator(osstream, "")); - - return osstream.str(); + return utils::to_pascal_case(utils::split(name, ','), "") + "Evt"; } } // namespace name_helpers diff --git a/src/bin/eolian_mono/eolian/mono/utils.hh b/src/bin/eolian_mono/eolian/mono/utils.hh index 6be2076..0e1c2ef 100644 --- a/src/bin/eolian_mono/eolian/mono/utils.hh +++ b/src/bin/eolian_mono/eolian/mono/utils.hh @@ -2,10 +2,12 @@ #define EOLIAN_MONO_UTILS_HPP #include +#include +#include #include -/* Compared to the helpers.hh header, these functions are lower level, not dealing with - * binding-specific structures or knowledge */ +/* Compared to the helpers.hh and name_helpers headers, these functions are + * lower level, not dealing with binding-specific structures or knowledge */ namespace eolian_mono { namespace utils { @@ -26,6 +28,41 @@ namespace eolian_mono { namespace utils { ret[0] = std::toupper(ret[0]); return ret; } + + std::vector split(std::string const &input, char delim) + { + std::stringstream ss(input); + std::string name; + std::vector names; + + while (std::getline(ss, name, delim)) + { + if (!name.empty()) + names.push_back(name); + } + return names; + } + + std::string to_pascal_case(const std::vector &names, std::string const& delim="") + { + std::vector outv(names.size()); + std::stringstream osstream; + + std::transform(names.begin(), names.end(), outv.begin(), + [](std::string name) { + name[0] = std::toupper(name[0]); + return name; + }); + + std::copy(outv.begin(), outv.end(), std::ostream_iterator(osstream, delim.c_str())); + + std::string ret = osstream.str(); + + if (delim != "") + ret.pop_back(); // We could implement an infix_iterator but this pop is enough for now. + + return ret; + } } } #endif diff --git a/src/examples/elementary/efl_ui_slider_mono.cs b/src/examples/elementary/efl_ui_slider_mono.cs index 64c31ab..6a5c6af 100644 --- a/src/examples/elementary/efl_ui_slider_mono.cs +++ b/src/examples/elementary/efl_ui_slider_mono.cs @@ -10,7 +10,7 @@ public class Example button.SetText(text); button.SetSize(new eina.Size2D(w, h)); - button.CLICKED += callback; + button.ClickedEvt += callback; return button; } @@ -56,7 +56,7 @@ public class Example efl.ui.Slider slider = new efl.ui.SliderConcrete(box); slider.SetSize(new eina.Size2D(W, H)); - slider.CHANGED += (object sender, EventArgs e) => { + slider.ChangedEvt += (object sender, EventArgs e) => { bar.SetRangeValue(slider.GetRangeValue()); }; diff --git a/src/examples/elementary/efl_ui_unit_converter.cs b/src/examples/elementary/efl_ui_unit_converter.cs index 91dd318..a1505a8 100644 --- a/src/examples/elementary/efl_ui_unit_converter.cs +++ b/src/examples/elementary/efl_ui_unit_converter.cs @@ -23,7 +23,7 @@ public class Example popup.SetVisible(true); popup.SetButton(efl.ui.popup_alert.Button.Positive, "Ok"); popup.SetSize(new eina.Size2D(150, 30)); - popup.BUTTON_CLICKED += (object sender, efl.ui.BUTTON_CLICKED_Args e) => { + popup.ButtonClickedEvt += (object sender, efl.ui.ButtonClickedEvt_Args e) => { popup.SetParent(null); popup.Del(); }; @@ -99,7 +99,7 @@ public class Example kms_box.Pack(kms_input); kms_box.Pack(kms_button); - kms_button.CLICKED += (object sender, EventArgs e) => { + kms_button.ClickedEvt += (object sender, EventArgs e) => { try { string text = kms_input.GetText(); @@ -115,7 +115,7 @@ public class Example } }; - miles_button.CLICKED += (object sender, EventArgs e) => { + miles_button.ClickedEvt += (object sender, EventArgs e) => { try { string text = miles_input.GetText(); diff --git a/src/examples/evas/evas_mono_rectangle.cs b/src/examples/evas/evas_mono_rectangle.cs index de686b0..48d45ba 100644 --- a/src/examples/evas/evas_mono_rectangle.cs +++ b/src/examples/evas/evas_mono_rectangle.cs @@ -30,7 +30,7 @@ class TestMain rect.SetSize(size); rect.SetVisible(true); - canvas.KEY_DOWN += (object sender, efl.input.KEY_DOWN_Args e) => { + canvas.KeyDownEvt += (object sender, efl.input.KeyDownEvt_Args e) => { color_index = (color_index + 1) % 3; Console.WriteLine("Key Down"); Console.WriteLine("Got key obj at {0}", e.arg.raw_handle.ToString("X")); diff --git a/src/examples/evas/evas_mono_text.cs b/src/examples/evas/evas_mono_text.cs index 071cba2..2c288c2 100644 --- a/src/examples/evas/evas_mono_text.cs +++ b/src/examples/evas/evas_mono_text.cs @@ -45,7 +45,7 @@ class TestMain bg.SetVisible(true); bg.SetKeyFocus(true); - bg.KEY_DOWN += On_KeyDown; + bg.KeyDownEvt += On_KeyDown; text = new evas.TextConcrete(canvas); text.SetStyle(evas.Text_Style_Type.OutlineSoftShadow); @@ -87,7 +87,7 @@ class TestMain } - private void On_KeyDown(object sender, efl.input.KEY_DOWN_Args e) + private void On_KeyDown(object sender, efl.input.KeyDownEvt_Args e) { var key = e.arg.GetKey(); diff --git a/src/tests/efl_mono/Eo.cs b/src/tests/efl_mono/Eo.cs index a0c7a9e..c9cf1e9 100644 --- a/src/tests/efl_mono/Eo.cs +++ b/src/tests/efl_mono/Eo.cs @@ -46,7 +46,7 @@ class TestEo bool delEventCalled = false; { test.Testing obj = new test.TestingConcrete(); - obj.DEL += (object sender, EventArgs e) => { delEventCalled = true; }; + obj.DelEvt += (object sender, EventArgs e) => { delEventCalled = true; }; ((IDisposable)obj).Dispose(); } diff --git a/src/tests/efl_mono/Errors.cs b/src/tests/efl_mono/Errors.cs index a903cf1..d403533 100644 --- a/src/tests/efl_mono/Errors.cs +++ b/src/tests/efl_mono/Errors.cs @@ -110,9 +110,9 @@ class TestEolianError // the managed code efl.Loop loop = new efl.LoopConcrete(); Listener listener = new Listener(); - loop.CALLBACK_ADD += listener.callback; + loop.CallbackAddEvt += listener.callback; - Test.AssertRaises(() => loop.IDLE += listener.another_callback); + Test.AssertRaises(() => loop.IdleEvt += listener.another_callback); } } } diff --git a/src/tests/efl_mono/Events.cs b/src/tests/efl_mono/Events.cs index c0e9146..9e5ddc1 100644 --- a/src/tests/efl_mono/Events.cs +++ b/src/tests/efl_mono/Events.cs @@ -23,12 +23,12 @@ class TestEoEvents efl.Loop loop = new efl.LoopConcrete(); loop.SetName("loop"); TestEoEvents listener = new TestEoEvents(); - loop.CALLBACK_ADD += listener.callback; + loop.CallbackAddEvt += listener.callback; Test.Assert(!listener.called); Test.Assert(!listener.correct_sender); Test.AssertEquals("loop", loop.GetName()); - loop.IDLE += listener.another_callback; + loop.IdleEvt += listener.another_callback; Test.Assert(listener.called); Test.Assert(listener.correct_sender); Test.AssertEquals("loop_called", loop.GetName()); @@ -39,7 +39,7 @@ class TestEoEvents test.Testing obj = new test.TestingConcrete(); string received_string = null; - obj.EVT_WITH_STRING += (object sender, test.EVT_WITH_STRING_Args e) => { + obj.EvtWithStringEvt += (object sender, test.EvtWithStringEvt_Args e) => { received_string = e.arg; }; @@ -53,7 +53,7 @@ class TestEoEvents test.Testing obj = new test.TestingConcrete(); int received_int= 0; - obj.EVT_WITH_INT += (object sender, test.EVT_WITH_INT_Args e) => { + obj.EvtWithIntEvt += (object sender, test.EvtWithIntEvt_Args e) => { received_int = e.arg; }; @@ -66,7 +66,7 @@ class TestEoEvents { test.Testing obj = new test.TestingConcrete(); uint received_uint = 0; - obj.EVT_WITH_UINT += (object sender, test.EVT_WITH_UINT_Args e) => { + obj.EvtWithUintEvt += (object sender, test.EvtWithUintEvt_Args e) => { received_uint = e.arg; }; @@ -80,7 +80,7 @@ class TestEoEvents test.Testing obj = new test.TestingConcrete(); float received_float= 0; - obj.EVT_WITH_FLOAT += (object sender, test.EVT_WITH_FLOAT_Args e) => { + obj.EvtWithFloatEvt += (object sender, test.EvtWithFloatEvt_Args e) => { received_float = e.arg; }; @@ -94,7 +94,7 @@ class TestEoEvents test.Testing obj = new test.TestingConcrete(); test.Testing received_obj = null; - obj.EVT_WITH_OBJ += (object sender, test.EVT_WITH_OBJ_Args e) => { + obj.EvtWithObjEvt += (object sender, test.EvtWithObjEvt_Args e) => { received_obj = e.arg; };