45 #include <type_traits>
65 virtual const char*
what()
const throw() {
return "FutureThreadError\n";}
69 virtual const char*
what()
const throw() {
return "FutureWhenError\n";}
209 namespace FutureHelper {
218 mutable std::unique_ptr<const Cgu::Callback::CallbackArg<const Val&>>
when;
223 when(std::move(when_)) {}
234 mutable std::unique_ptr<Cgu::SafeEmitterArg<const Val&>>
when;
239 when(std::move(when_)) {}
249 std::unique_ptr<Cgu::Thread::Thread> thread_u;
250 std::unique_ptr<Cgu::Callback::Callback> cb_u;
260 template <
class T,
class Ret,
class... Args>
261 void run_wrapper(T*, Ret (T::*)(Args...),
const Args&...);
263 template <
class T,
class Ret,
class... Args>
264 void run_wrapper_const(
const T*, Ret (T::*)(Args...)
const,
const Args&...);
266 template <
class Ret,
class... Args>
267 void run_wrapper_static(Ret (*)(Args...),
const Args&...);
269 template <
class Func>
270 void run_wrapper_functor(Func&);
272 void cancel_cleanup();
276 gint, GMainContext*);
279 gint, GMainContext*);
285 const std::unique_ptr<const Cgu::Callback::Callback>& func,
289 Future(): val(), done(
false), running(
false), error(
false), emitter_error(
false) {}
337 template <
class Ret,
class T>
373 template <
class Ret,
class Param1,
class Arg1,
class T>
375 Ret (T::*func)(Param1),
410 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2,
class T>
412 Ret (T::*func)(Param1, Param2),
448 template <
class Ret,
class Param1,
class Param2,
class Param3,
449 class Arg1,
class Arg2,
class Arg3,
class T>
451 Ret (T::*func)(Param1, Param2, Param3),
487 template <
class Ret,
class T>
489 Ret (T::*func)()
const);
523 template <
class Ret,
class Param1,
class Arg1,
class T>
525 Ret (T::*func)(Param1)
const,
560 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2,
class T>
562 Ret (T::*func)(Param1, Param2)
const,
598 template <
class Ret,
class Param1,
class Param2,
class Param3,
599 class Arg1,
class Arg2,
class Arg3,
class T>
601 Ret (T::*func)(Param1, Param2, Param3)
const,
672 template <
class Ret,
class Param1,
class Arg1>
708 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2>
745 template <
class Ret,
class Param1,
class Param2,
class Param3,
746 class Arg1,
class Arg2,
class Arg3>
784 template <
class Ret,
class Param1,
class Param2,
class Param3,
class Param4,
785 class Arg1,
class Arg2,
class Arg3,
class Arg4>
829 template <
class Func>
1169 gint priority = G_PRIORITY_DEFAULT,
1170 GMainContext* context = 0);
1315 template <
class When,
1316 class =
typename std::enable_if<!std::is_convertible<typename std::remove_reference<When>::type,
1319 gint priority = G_PRIORITY_DEFAULT,
1320 GMainContext* context = 0) {
1321 return when(Callback::lambda<const Val&>(std::forward<When>(w)),
1441 gint priority = G_PRIORITY_DEFAULT,
1442 GMainContext* context = 0);
1569 template <
class When,
1570 class =
typename std::enable_if<!std::is_convertible<typename std::remove_reference<When>::type,
1574 gint priority = G_PRIORITY_DEFAULT,
1575 GMainContext* context = 0) {
1576 return when(Callback::lambda<const Val&>(std::forward<When>(w)),
1677 GMainContext* context = 0);
1780 template <
class Fail,
1781 class =
typename std::enable_if<!std::is_convertible<typename std::remove_reference<Fail>::type,
1784 GMainContext* context = 0) {
1785 fail(Callback::lambda<>(std::forward<Fail>(f)),
1861 GMainContext* context = 0);
1942 template <
class Fail,
1943 class =
typename std::enable_if<!std::is_convertible<typename std::remove_reference<Fail>::type,
1947 GMainContext* context = 0) {
1948 fail(Callback::lambda<>(std::forward<Fail>(f)),
2128 template <
class Obj,
class Ret,
class... Params,
class... Args>
2130 Ret (Obj::*func)(Params...),
2170 template <
class Obj,
class Ret,
class... Params,
class... Args>
2172 Ret (Obj::*func)(Params...)
const,
2212 template <
class Ret,
class... Params,
class... Args>
2274 template <
class Ret,
class Func>
2282 #ifndef DOXYGEN_PARSING
2283 template <
class Func>
2293 #include <c++-gtk-utils/future.tpp>