From 7af91ee8faafab80553cde9136ea31400c2e3ad4 Mon Sep 17 00:00:00 2001 From: Felipe Magno de Almeida Date: Thu, 17 Jul 2014 21:46:50 -0300 Subject: [PATCH] eo-cxx: Added support for returning-void function objects --- src/bindings/eo_cxx/eo_event.hh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/bindings/eo_cxx/eo_event.hh b/src/bindings/eo_cxx/eo_event.hh index 4d990ce..f3d2e51 100644 --- a/src/bindings/eo_cxx/eo_event.hh +++ b/src/bindings/eo_cxx/eo_event.hh @@ -115,12 +115,27 @@ signal_connection make_signal_connection(std::unique_ptr& data, Eo* eo, ::Eo_ namespace _detail { template +Eina_Bool really_call_event(T& wrapper, F& f, Eo_Event_Description const& desc, void *info + , std::true_type) +{ + f(wrapper, desc, info); + return true; +} +template +Eina_Bool really_call_event(T& wrapper, F& f, Eo_Event_Description const& desc, void *info + , std::false_type) +{ + return f(wrapper, desc, info); +} + +template Eina_Bool event_callback(void *data, Eo *obj, Eo_Event_Description const* desc, void *info) { T wrapper(::eo_ref(obj)); F *f = static_cast(data); - return (*f)(wrapper, *desc, info); + return _detail::really_call_event(wrapper, *f, *desc, info + , std::is_void()); } } -- 2.7.4