std::string managed_method_name(std::string const& underscore_name)
{
- std::vector<std::string> names = name_helpers::split(underscore_name, '_');
+ std::vector<std::string> 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));
}
}
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("///<summary>Event argument wrapper for event " << string << ".</summary>\n"
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<grammar::attributes::type_def> etype = e.type;
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();
}
// 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(), ',', '_');
{
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;
#include <sstream>
#include <string>
#include <vector>
+#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<std::string> verbs =
}
}
-std::vector<std::string> 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<std::string> names;
-
- while (std::getline(ss, name, delim)) {
- if (!name.empty())
- names.push_back(name);
- }
- return names;
-}
-
-std::string pascal_case(const std::vector<std::string> &names)
-{
- std::vector<std::string> 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<std::string>(osstream, ""));
-
- return osstream.str();
+ return utils::to_pascal_case(utils::split(name, ','), "") + "Evt";
}
} // namespace name_helpers
#define EOLIAN_MONO_UTILS_HPP
#include <string>
+#include <sstream>
+#include <iterator>
#include <algorithm>
-/* 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 {
ret[0] = std::toupper(ret[0]);
return ret;
}
+
+ std::vector<std::string> split(std::string const &input, char delim)
+ {
+ std::stringstream ss(input);
+ std::string name;
+ std::vector<std::string> names;
+
+ while (std::getline(ss, name, delim))
+ {
+ if (!name.empty())
+ names.push_back(name);
+ }
+ return names;
+ }
+
+ std::string to_pascal_case(const std::vector<std::string> &names, std::string const& delim="")
+ {
+ std::vector<std::string> 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<std::string>(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
button.SetText(text);
button.SetSize(new eina.Size2D(w, h));
- button.CLICKED += callback;
+ button.ClickedEvt += callback;
return button;
}
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());
};
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();
};
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();
}
};
- miles_button.CLICKED += (object sender, EventArgs e) => {
+ miles_button.ClickedEvt += (object sender, EventArgs e) => {
try
{
string text = miles_input.GetText();
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"));
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);
}
- 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();
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();
}
// the managed code
efl.Loop loop = new efl.LoopConcrete();
Listener listener = new Listener();
- loop.CALLBACK_ADD += listener.callback;
+ loop.CallbackAddEvt += listener.callback;
- Test.AssertRaises<efl.EflException>(() => loop.IDLE += listener.another_callback);
+ Test.AssertRaises<efl.EflException>(() => loop.IdleEvt += listener.another_callback);
}
}
}
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());
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;
};
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;
};
{
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;
};
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;
};
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;
};