PlasmaActivities
7#ifndef UTILS_CONTINUE_WITH_H
8#define UTILS_CONTINUE_WITH_H
12#include <QFutureWatcher>
16#ifdef ENABLE_QJSVALUE_CONTINUATION
26#ifdef ENABLE_QJSVALUE_CONTINUATION
27inline void test_continuation(
const QJSValue &continuation)
30 qWarning() <<
"Passed handler is not callable: " << continuation.
toString();
34template<
typename _ReturnType>
35inline void pass_value(
const QFuture<_ReturnType> &future, QJSValue continuation)
37 auto result = continuation.
call({future.
result()});
38 if (result.isError()) {
39 qWarning() <<
"Handler returned this error: " << result.toString();
43inline void pass_value(
const QFuture<void> &future, QJSValue continuation)
46 auto result = continuation.
call({});
47 if (result.isError()) {
48 qWarning() <<
"Handler returned this error: " << result.toString();
53template<
typename _Continuation>
54inline void test_continuation(_Continuation &&continuation)
56 Q_UNUSED(continuation);
59template<
typename _ReturnType,
typename _Continuation>
60inline void pass_value(
const QFuture<_ReturnType> &future, _Continuation &&continuation)
62 using namespace kamd::utils;
63 continuation(future.
resultCount() > 0 ? std::optional(future.
result()) : std::nullopt);
66template<
typename _Continuation>
67inline void pass_value(_Continuation &&continuation)
74template<
typename _ReturnType,
typename _Continuation>
75inline void continue_with(
const QFuture<_ReturnType> &future, _Continuation &&continuation)
77 detail::test_continuation(continuation);
79 auto watcher =
new QFutureWatcher<_ReturnType>();
81 detail::pass_value(future, continuation);
84 watcher->setFuture(future);
int resultCount() const const
QJSValue call(const QJSValueList &args) const const
bool isCallable() const const
QString toString() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Feb 28 2025 12:01:06 by
doxygen 1.13.2 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.