45 #include <type_traits>
64 virtual const char*
what()
const throw() {
return "FutureThreadError\n";}
68 virtual const char*
what()
const throw() {
return "FutureWhenError\n";}
226 namespace FutureHelper {
235 mutable std::unique_ptr<const Cgu::Callback::CallbackArg<const Val&>>
when;
240 when(std::move(when_)) {}
251 mutable std::unique_ptr<Cgu::SafeEmitterArg<const Val&>>
when;
256 when(std::move(when_)) {}
266 std::unique_ptr<Cgu::Thread::Thread> thread_u;
267 std::unique_ptr<Cgu::Callback::Callback> cb_u;
277 template <
class T,
class Ret,
class... Args>
278 void run_wrapper(T*, Ret (T::*)(Args...),
const Args&...);
280 template <
class T,
class Ret,
class... Args>
281 void run_wrapper_const(
const T*, Ret (T::*)(Args...)
const,
const Args&...);
283 template <
class Ret,
class... Args>
284 void run_wrapper_static(Ret (*)(Args...),
const Args&...);
286 template <
class Func>
287 void run_wrapper_functor(Func&);
289 void cancel_cleanup();
293 gint, GMainContext*);
296 gint, GMainContext*);
302 const std::unique_ptr<const Cgu::Callback::Callback>& func,
306 Future(): val(), done(
false), running(
false), error(
false), emitter_error(
false) {}
349 template <
class Ret,
class T>
380 template <
class Ret,
class Param1,
class Arg1,
class T>
382 Ret (T::*func)(Param1),
412 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2,
class T>
414 Ret (T::*func)(Param1, Param2),
445 template <
class Ret,
class Param1,
class Param2,
class Param3,
446 class Arg1,
class Arg2,
class Arg3,
class T>
448 Ret (T::*func)(Param1, Param2, Param3),
479 template <
class Ret,
class T>
481 Ret (T::*func)()
const);
510 template <
class Ret,
class Param1,
class Arg1,
class T>
512 Ret (T::*func)(Param1)
const,
542 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2,
class T>
544 Ret (T::*func)(Param1, Param2)
const,
575 template <
class Ret,
class Param1,
class Param2,
class Param3,
576 class Arg1,
class Arg2,
class Arg3,
class T>
578 Ret (T::*func)(Param1, Param2, Param3)
const,
639 template <
class Ret,
class Param1,
class Arg1>
670 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2>
702 template <
class Ret,
class Param1,
class Param2,
class Param3,
703 class Arg1,
class Arg2,
class Arg3>
736 template <
class Ret,
class Param1,
class Param2,
class Param3,
class Param4,
737 class Arg1,
class Arg2,
class Arg3,
class Arg4>
777 template <
class Func>
1117 gint priority = G_PRIORITY_DEFAULT,
1118 GMainContext* context = 0);
1235 gint priority = G_PRIORITY_DEFAULT,
1236 GMainContext* context = 0);
1333 GMainContext* context = 0);
1407 GMainContext* context = 0);
1579 template <
class Obj,
class Ret,
class... Params,
class... Args>
1581 Ret (Obj::*func)(Params...),
1616 template <
class Obj,
class Ret,
class... Params,
class... Args>
1618 Ret (Obj::*func)(Params...)
const,
1653 template <
class Ret,
class... Params,
class... Args>
1719 template <
class Ret,
class Func>
1727 #ifndef DOXYGEN_PARSING
1728 template <
class Func>
1738 #include <c++-gtk-utils/future.tpp>