4#ifndef QTCORE_RESULTSTORE_H
5#define QTCORE_RESULTSTORE_H
7#include <QtCore/qmap.h>
43 int vectorIndex()
const;
44 int resultIndex()
const;
47 int batchSize()
const;
48 void batchedAdvance();
49#if QT_CORE_REMOVED_SINCE(6, 8)
53 bool isVector()
const;
54 bool canIncrementVectorIndex()
const;
61 return (lhs.mapIterator == rhs.mapIterator && lhs.m_vectorIndex == rhs.m_vectorIndex);
83 const T *
p = std::as_const(*this).pointer<T>();
84 return const_cast<T *
>(
p);
90 if (mapIterator.
value().isVector())
91 return &(
reinterpret_cast<const QList<T> *
>(mapIterator.
value().result)->
at(m_vectorIndex));
93 return reinterpret_cast<const T *
>(mapIterator.
value().result);
101 void setFilterMode(
bool enable);
102 bool filterMode()
const;
104 int addResults(
int index,
const void *
results,
int vectorSize,
int logicalCount);
107 bool hasNextResult()
const;
118 bool containsValidResultItem(
int index)
const;
119 void syncPendingResults();
120 void syncResultCount();
121 int updateInsertIndex(
int index,
int _count);
131 template <
typename T>
132 static void clear(QMap<int, ResultItem> &store)
135 while (mapIterator != store.constEnd()) {
136 if (mapIterator.
value().isVector())
137 delete reinterpret_cast<const QList<T> *
>(mapIterator.
value().result);
139 delete reinterpret_cast<const T *
>(mapIterator.
value().result);
146 template <
typename T,
typename...Args>
149 if (containsValidResultItem(
index))
151 return addResult(
index,
static_cast<void *
>(
new T(std::forward<Args>(
args)...)));
154 template <
typename T>
157 if (containsValidResultItem(
index))
161 return addResult(
index,
static_cast<void *
>(
nullptr));
163 return addResult(
index,
static_cast<void *
>(
new T(*
result)));
166 template <
typename T>
169 static_assert(!std::is_reference_v<T>,
"trying to move from an lvalue!");
171 return emplaceResult<std::remove_cv_t<T>>(
index, std::forward<T>(
result));
180 if (containsValidResultItem(
index))
193 if (containsValidResultItem(
index))
197 return addResults(
index,
nullptr, 0, totalCount);
204 if (containsValidResultItem(
index))
207 return addResult(
index,
static_cast<void *
>(
nullptr));
210 template <
typename T>
213 if (containsValidResultItem(
index))
217 return addResults(
index, &empty, _count);
220 template <
typename T>
223 ResultStoreBase::clear<T>(m_results);
226 ResultStoreBase::clear<T>(pendingResults);
qsizetype size() const noexcept
bool empty() const noexcept
ResultItem(const void *_result)
ResultItem(const void *_result, int _count)
QMap< int, ResultItem >::const_iterator mapIterator
const T * pointer() const
friend bool comparesEqual(const ResultIteratorBase &lhs, const ResultIteratorBase &rhs) noexcept
int emplaceResult(int index, Args &&...args)
int moveResult(int index, T &&result)
int addCanceledResults(int index, int _count)
QMap< int, ResultItem > m_results
int addResults(int index, const QList< T > *results, int totalCount)
static void clear(QMap< int, ResultItem > &store)
QMap< int, ResultItem > pendingResults
int addResult(int index, const T *result)
int addCanceledResult(int index)
int addResults(int index, const QList< T > *results)
Combined button and popup list for selecting options.
#define Q_DECLARE_EQUALITY_COMPARABLE(...)
constexpr bool operator!=(const timespec &t1, const timespec &t2)
static bool contains(const QJsonArray &haystack, unsigned needle)
GLenum GLenum GLsizei count
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
#define QT_REQUIRE_CONFIG(feature)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
QFuture< void > future
[5]