From: Felipe Magno de Almeida Date: Fri, 18 Jul 2014 00:46:50 +0000 (-0300) Subject: eo-cxx: Added support for returning-void function objects X-Git-Tag: upstream/1.10.0+1149+ga3a15b1~129 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7af91ee8faafab80553cde9136ea31400c2e3ad4;p=platform%2Fupstream%2Fefl.git eo-cxx: Added support for returning-void function objects --- 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()); } }