LeechCraft 0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
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
15namespace LC::Util
16{
17 template<typename 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}
Container< T > Filter(const Container< T > &c, F f)
Definition prelude.h:118
static FmapResult_t< F > Apply(const QFuture< T > &fut, const F &func)
The Functor class is used for types that can be mapped over.
Definition functor.h:36