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();
51 bool isVector()
const;
52 bool canIncrementVectorIndex()
const;
74 const T *
p = std::as_const(*this).pointer<T>();
75 return const_cast<T *
>(
p);
81 if (mapIterator.
value().isVector())
82 return &(
reinterpret_cast<const QList<T> *
>(mapIterator.
value().result)->
at(m_vectorIndex));
84 return reinterpret_cast<const T *
>(mapIterator.
value().result);
92 void setFilterMode(
bool enable);
93 bool filterMode()
const;
95 int addResults(
int index,
const void *
results,
int vectorSize,
int logicalCount);
98 bool hasNextResult()
const;
109 bool containsValidResultItem(
int index)
const;
110 void syncPendingResults();
111 void syncResultCount();
112 int updateInsertIndex(
int index,
int _count);
122 template <
typename T>
126 while (mapIterator != store.
constEnd()) {
127 if (mapIterator.
value().isVector())
128 delete reinterpret_cast<const QList<T> *
>(mapIterator.
value().result);
130 delete reinterpret_cast<const T *
>(mapIterator.
value().result);
137 template <
typename T,
typename...Args>
140 if (containsValidResultItem(
index))
142 return addResult(
index,
static_cast<void *
>(
new T(std::forward<Args>(
args)...)));
145 template <
typename T>
148 if (containsValidResultItem(
index))
152 return addResult(
index,
static_cast<void *
>(
nullptr));
154 return addResult(
index,
static_cast<void *
>(
new T(*
result)));
157 template <
typename T>
160 static_assert(!std::is_reference_v<T>,
"trying to move from an lvalue!");
162 return emplaceResult<std::remove_cv_t<T>>(
index, std::forward<T>(
result));
171 if (containsValidResultItem(
index))
184 if (containsValidResultItem(
index))
188 return addResults(
index,
nullptr, 0, totalCount);
195 if (containsValidResultItem(
index))
198 return addResult(
index,
static_cast<void *
>(
nullptr));
201 template <
typename T>
204 if (containsValidResultItem(
index))
208 return addResults(
index, &empty, _count);
211 template <
typename T>
214 ResultStoreBase::clear<T>(m_results);
217 ResultStoreBase::clear<T>(pendingResults);
qsizetype size() const noexcept
bool empty() const noexcept
const_iterator constBegin() const
const_iterator constEnd() const
ResultItem(const void *_result)
ResultItem(const void *_result, int _count)
QMap< int, ResultItem >::const_iterator mapIterator
const T * pointer() const
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.
constexpr bool operator!=(const timespec &t1, const timespec &t2)
static bool contains(const QJsonArray &haystack, unsigned needle)
GLenum GLenum GLsizei count
GLsizei const void * pointer
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]