LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
monadicfuture.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #pragma once
10 
11 #include <QFuture>
12 #include <util/sll/functor.h>
13 #include "futures.h"
14 
15 namespace LC::Util
16 {
17  template<typename T>
18  struct InstanceFunctor<QFuture<T>>
19  {
20  template<typename F>
21  using FmapResult_t = QFuture<std::decay_t<std::result_of_t<F (T)>>>;
22 
23  template<typename F>
24  static FmapResult_t<F> Apply (const QFuture<T>& fut, const F& func)
25  {
26  return Sequence (nullptr, fut) >>
27  [func] (const T& val) { return MakeReadyFuture (func (val)); };
28  }
29  };
30 }
LC::Util::InstanceFunctor::FmapResult_t
detail::ImplementationType FmapResult_t
The type of the functor after its elements were mapped by the function F.
Definition: functor.h:68
LC::Util::InstanceFunctor::Apply
static FmapResult_t< F > Apply(const T &functor, const F &function)
Applies the function to the each of the elements inside the functor.
LC::Util
Definition: icoreproxy.h:33
futures.h
QFuture
Definition: idownload.h:17
functor.h