forked from enlightenment/efl
eolian-cxx: Remove Eina_Bool from event function wrapper
This commit is contained in:
parent
e517571dae
commit
9be8f029af
|
@ -124,55 +124,23 @@ signal_connection make_signal_connection(std::unique_ptr<F>& data, Eo* eo, ::Eo_
|
|||
namespace _detail {
|
||||
|
||||
template <typename T, typename P, typename F>
|
||||
Eina_Bool really_call_event(T& wrapper, F& f, void *, std::true_type, std::true_type)
|
||||
void really_call_event(T& wrapper, F& f, void *, std::true_type)
|
||||
{
|
||||
f(wrapper);
|
||||
return true;
|
||||
}
|
||||
template <typename T, typename P, typename F>
|
||||
Eina_Bool really_call_event(T& wrapper, F& f, void *info, std::true_type, std::false_type)
|
||||
void really_call_event(T& wrapper, F& f, void *info, std::false_type)
|
||||
{
|
||||
f(wrapper, convert_to_event<P>(info));
|
||||
return true;
|
||||
}
|
||||
template <typename T, typename P, typename F>
|
||||
Eina_Bool really_call_event(T& wrapper, F& f, void *, std::false_type, std::true_type)
|
||||
{
|
||||
return f(wrapper);
|
||||
}
|
||||
template <typename T, typename P, typename F>
|
||||
Eina_Bool really_call_event(T& wrapper, F& f, void *info, std::false_type, std::false_type)
|
||||
{
|
||||
return f(wrapper, convert_to_event<P>(info));
|
||||
}
|
||||
|
||||
template <typename T, typename P, typename F, typename Enable = void>
|
||||
struct is_void;
|
||||
template <typename T, typename P, typename F>
|
||||
struct is_void<T, P, F, typename std::enable_if
|
||||
<std::is_void<decltype(std::declval<F>()(std::declval<T>(), std::declval<P>()))>::value>::type>
|
||||
: std::true_type {};
|
||||
template <typename T, typename P, typename F>
|
||||
struct is_void<T, P, F, typename std::enable_if
|
||||
<!std::is_void<decltype(std::declval<F>()(std::declval<T>(), std::declval<P>()))>::value>::type>
|
||||
: std::false_type {};
|
||||
template <typename T, typename F>
|
||||
struct is_void<T, void, F, typename std::enable_if
|
||||
<std::is_void<decltype(std::declval<F>()(std::declval<T>()))>::value>::type>
|
||||
: std::true_type {};
|
||||
template <typename T, typename F>
|
||||
struct is_void<T, void, F, typename std::enable_if
|
||||
<!std::is_void<decltype(std::declval<F>()(std::declval<T>()))>::value>::type>
|
||||
: std::false_type {};
|
||||
|
||||
template <typename T, typename P, typename F>
|
||||
Eina_Bool
|
||||
event_callback(void *data, ::Eo_Event const* event)
|
||||
void event_callback(void *data, ::Eo_Event const* event)
|
||||
{
|
||||
T wrapper(::eo_ref(event->object));
|
||||
F *f = static_cast<F*>(data);
|
||||
return _detail::really_call_event<T, P>
|
||||
(wrapper, *f, event->info, is_void<T, P, F>(), std::is_void<P>{});
|
||||
_detail::really_call_event<T, P>
|
||||
(wrapper, *f, event->info, std::is_void<P>{});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue