45 #include <type_traits>
64 virtual const char*
what()
const throw() {
return "FutureThreadError\n";}
68 virtual const char*
what()
const throw() {
return "FutureWhenError\n";}
236 namespace FutureHelper {
245 mutable std::unique_ptr<const Cgu::Callback::CallbackArg<const Val&>>
when;
250 when(
std::move(when_)) {}
261 mutable std::unique_ptr<Cgu::SafeEmitterArg<const Val&>>
when;
266 when(
std::move(when_)) {}
276 std::unique_ptr<Cgu::Thread::Thread> thread_u;
277 std::unique_ptr<Cgu::Callback::Callback> cb_u;
287 template <
class T,
class Ret,
class... Args>
288 void run_wrapper(T*, Ret (T::*)(Args...),
const Args&...);
290 template <
class T,
class Ret,
class... Args>
291 void run_wrapper_const(
const T*, Ret (T::*)(Args...)
const,
const Args&...);
293 template <
class Ret,
class... Args>
294 void run_wrapper_static(Ret (*)(Args...),
const Args&...);
296 template <
class Func>
297 void run_wrapper_functor(Func&);
299 void cancel_cleanup();
303 gint, GMainContext*);
306 gint, GMainContext*);
312 const std::unique_ptr<const Cgu::Callback::Callback>& func,
316 Future(): val(), done(
false), running(
false), error(
false), emitter_error(
false) {}
359 template <
class Ret,
class T>
390 template <
class Ret,
class Param1,
class Arg1,
class T>
392 Ret (T::*func)(Param1),
422 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2,
class T>
424 Ret (T::*func)(Param1, Param2),
455 template <
class Ret,
class Param1,
class Param2,
class Param3,
456 class Arg1,
class Arg2,
class Arg3,
class T>
458 Ret (T::*func)(Param1, Param2, Param3),
489 template <
class Ret,
class T>
491 Ret (T::*func)()
const);
520 template <
class Ret,
class Param1,
class Arg1,
class T>
522 Ret (T::*func)(Param1)
const,
552 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2,
class T>
554 Ret (T::*func)(Param1, Param2)
const,
585 template <
class Ret,
class Param1,
class Param2,
class Param3,
586 class Arg1,
class Arg2,
class Arg3,
class T>
588 Ret (T::*func)(Param1, Param2, Param3)
const,
649 template <
class Ret,
class Param1,
class Arg1>
680 template <
class Ret,
class Param1,
class Param2,
class Arg1,
class Arg2>
712 template <
class Ret,
class Param1,
class Param2,
class Param3,
713 class Arg1,
class Arg2,
class Arg3>
746 template <
class Ret,
class Param1,
class Param2,
class Param3,
class Param4,
747 class Arg1,
class Arg2,
class Arg3,
class Arg4>
787 template <
class Func>
1152 gint priority = G_PRIORITY_DEFAULT,
1153 GMainContext* context = 0);
1270 gint priority = G_PRIORITY_DEFAULT,
1271 GMainContext* context = 0);
1370 GMainContext* context = 0);
1446 GMainContext* context = 0);
1623 template <
class Obj,
class Ret,
class... Params,
class... Args>
1625 Ret (Obj::*func)(Params...),
1660 template <
class Obj,
class Ret,
class... Params,
class... Args>
1662 Ret (Obj::*func)(Params...)
const,
1697 template <
class Ret,
class... Params,
class... Args>
1763 template <
class Ret,
class Func>
1771 #ifndef DOXYGEN_PARSING
1772 template <
class Func>
1786 #include <c++-gtk-utils/future.tpp>
SafeEmitter done_emitter
Definition: future.h:1585
std::unique_ptr< Cgu::SafeEmitterArg< const Val & > > when
Definition: future.h:261
WhenWrapperArg(WhenWrapperArg &&w)
Definition: future.h:251
Cgu::IntrusivePtr< Cgu::Thread::Future< Ret > > make_future(Obj &obj, Ret(Obj::*func)(Params...), Args &&...args)
Definition: future.h:1624
std::unique_ptr< const Cgu::Callback::CallbackArg< const Val & > > when
Definition: future.h:245
A wrapper class for pthread condition variables.
Definition: mutex.h:449
This file provides classes for type erasure.
WhenWrapperArgRel(std::unique_ptr< Cgu::SafeEmitterArg< const Val & >> &&when_)
Definition: future.h:265
This is a smart pointer for managing objects allocated on freestore which maintain their own referenc...
Definition: intrusive_ptr.h:98
void fail(const Cgu::Callback::Callback *cb, GMainContext *context=0)
bool is_emitter_done() const
Future & operator=(const Future &)=delete
WhenWrapperArg(std::unique_ptr< const Cgu::Callback::CallbackArg< const Val & >> &&when_)
Definition: future.h:249
A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...
Definition: emitter.h:308
A wrapper class for pthread mutexes.
Definition: mutex.h:117
This is a counter class providing the ref() and unref() functions required by IntrusivePtr, with a thread safe reference count..
Definition: intrusive_ptr.h:349
A class representing a pthread thread.
Definition: thread.h:166
This file provides a thread-safe signal/slot mechanism, with automatic disconnection.
Provides wrapper classes for pthread mutexes and condition variables, and scoped locking classes for ...
Definition: application.h:44
Functor class holding a Callback::CallbackArg object, with thread-safe reference count.
Definition: callback.h:732
bool is_emitter_error() const
WhenWrapperArgRel(WhenWrapperArgRel &&w)
Definition: future.h:267
virtual const char * what() const
Definition: future.h:64
static Cgu::IntrusivePtr< Cgu::Thread::Future< Val > > make(T &t, Ret(T::*func)())
A class representing a pthread thread which will provide a value.
Definition: future.h:274
Cgu::Callback::SafeFunctor when(const Cgu::Callback::CallbackArg< const Val & > *cb, gint priority=G_PRIORITY_DEFAULT, GMainContext *context=0)
#define CGU_GLIB_MEMORY_SLICES_FUNCS
Definition: cgu_config.h:84
virtual const char * what() const
Definition: future.h:68
A class used for tracking EmitterArg and SafeEmitterArg connections.
Definition: emitter.h:333