LeechCraft  0.6.70-6645-gcd10d7e
Modular cross-platform feature rich live environment.
futures.h File Reference
#include <type_traits>
#include <functional>
#include <memory>
#include <boost/optional.hpp>
#include <QFutureInterface>
#include <QFutureWatcher>
#include <QtConcurrentRun>
#include <util/sll/oldcppkludges.h>
#include <util/sll/slotclosure.h>
#include "concurrentexception.h"
+ Include dependency graph for futures.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  LeechCraft::Util::detail::UnwrapFutureTypeBase< T >
 
struct  LeechCraft::Util::detail::UnwrapFutureTypeBase< QFuture< T > >
 
struct  LeechCraft::Util::detail::UnwrapFutureType< T >
 
struct  LeechCraft::Util::detail::IsFuture< T >
 
struct  LeechCraft::Util::detail::IsFuture< QFuture< T > >
 
struct  LeechCraft::Util::detail::HandlerInvoker< RetType, ResultHandler >
 
struct  LeechCraft::Util::detail::HandlerInvoker< void, ResultHandler >
 
class  LeechCraft::Util::detail::Sequencer< Future >
 Incapsulates the sequencing logic of asynchronous actions. More...
 
class  LeechCraft::Util::detail::SequenceProxy< Ret, Future, DestructionTag >
 A proxy object allowing type-checked sequencing of actions and responsible for starting the initial action. More...
 

Namespaces

 LeechCraft
 
 LeechCraft::Util
 
 LeechCraft::Util::detail
 

Typedefs

template<typename T >
using LeechCraft::Util::detail::UnwrapFutureType_t = typename UnwrapFutureType< T >::type
 
template<typename T >
using LeechCraft::Util::detail::SequencerRetType_t = typename Sequencer< T >::RetType_t
 
template<typename T >
using LeechCraft::Util::detail::IsEmptyDestr_t = std::is_same< EmptyDestructionTag, T >
 

Functions

template<typename R , typename F , typename... Args>
EnableIf_t<!std::is_same< R, void >::value > LeechCraft::Util::ReportFutureResult (QFutureInterface< R > &iface, F &&f, Args &&...args)
 
template<typename F , typename... Args>
void LeechCraft::Util::ReportFutureResult (QFutureInterface< void > &iface, F &&f, Args &&...args)
 
template<typename ResultHandler , typename RetType , typename = ResultOf_t<ResultHandler (RetType)>>
constexpr bool LeechCraft::Util::detail::IsCompatibleImpl (int)
 
template<typename , typename >
constexpr bool LeechCraft::Util::detail::IsCompatibleImpl (float)
 
template<typename ResultHandler , typename = ResultOf_t<ResultHandler ()>>
constexpr bool LeechCraft::Util::detail::IsCompatibleImplVoid (int)
 
template<typename >
constexpr bool LeechCraft::Util::detail::IsCompatibleImplVoid (float)
 
template<typename ResultHandler , typename RetType >
constexpr bool LeechCraft::Util::detail::IsCompatible ()
 
template<typename Executor , typename ResultHandler , typename... Args>
void LeechCraft::Util::ExecuteFuture (Executor f, ResultHandler rh, QObject *parent, Args...args)
 Runs a QFuture-returning function and feeding the future to a handler when it is ready. More...
 
template<typename Ret , typename DestrType , typename = EnableIf_t<IsEmptyDestr_t<DestrType>::value>>
void LeechCraft::Util::detail::InvokeDestructionHandler (const std::function< DestrType()> &, QFutureInterface< Ret > &, float)
 
template<typename Ret , typename DestrType , typename = EnableIf_t<!IsEmptyDestr_t<DestrType>::value>>
void LeechCraft::Util::detail::InvokeDestructionHandler (const std::function< DestrType()> &handler, QFutureInterface< Ret > &iface, int)
 
template<typename T >
detail::SequenceProxy< detail::SequencerRetType_t< QFuture< T > >, QFuture< T >, detail::EmptyDestructionTag > LeechCraft::Util::Sequence (QObject *parent, const QFuture< T > &future)
 Creates a sequencer that allows chaining multiple futures. More...
 
template<typename T >
QFuture< T > LeechCraft::Util::MakeReadyFuture (const T &t)
 Creates a ready future holding the given value. More...