4#ifndef QSEQUENTIALITERABLE_H
5#define QSEQUENTIALITERABLE_H
7#include <QtCore/qiterable.h>
8#include <QtCore/qvariant.h>
15 using value_type = QVariant;
16 using reference = QVariantRef<QSequentialIterator>;
17 using pointer = QVariantPointer<QSequentialIterator>;
19 QSequentialIterator(QIterator &&it)
20 : QIterator(std::move(it))
23 QVariantRef<QSequentialIterator> operator*()
const;
24 QVariantPointer<QSequentialIterator> operator->()
const;
30 using value_type = QVariant;
31 using reference =
const QVariant &;
32 using pointer = QVariantConstPointer;
34 QSequentialConstIterator(QConstIterator &&it)
35 : QConstIterator(std::move(it))
38 QVariant operator*()
const;
39 QVariantConstPointer operator->()
const;
45 using iterator = QTaggedIterator<QSequentialIterator,
void>;
46 using const_iterator = QTaggedIterator<QSequentialConstIterator,
void>;
48 using RandomAccessIterator = QTaggedIterator<iterator, std::random_access_iterator_tag>;
49 using BidirectionalIterator = QTaggedIterator<iterator, std::bidirectional_iterator_tag>;
50 using ForwardIterator = QTaggedIterator<iterator, std::forward_iterator_tag>;
51 using InputIterator = QTaggedIterator<iterator, std::input_iterator_tag>;
53 using RandomAccessConstIterator = QTaggedIterator<const_iterator, std::random_access_iterator_tag>;
54 using BidirectionalConstIterator = QTaggedIterator<const_iterator, std::bidirectional_iterator_tag>;
55 using ForwardConstIterator = QTaggedIterator<const_iterator, std::forward_iterator_tag>;
56 using InputConstIterator = QTaggedIterator<const_iterator, std::input_iterator_tag>;
59 QSequentialIterable(
const T *p)
60 : QIterable(QMetaSequence::fromContainer<T>(), p)
66 QSequentialIterable(T *p)
67 : QIterable(QMetaSequence::fromContainer<T>(), p)
72 : QIterable(QMetaSequence(),
nullptr)
76 template<
typename Pointer>
77 QSequentialIterable(
const QMetaSequence &metaSequence, Pointer iterable)
78 : QIterable(metaSequence, iterable)
83 QSequentialIterable(
const QMetaSequence &metaSequence,
const QMetaType &metaType,
85 : QIterable(metaSequence, metaType.alignOf(), iterable)
90 QSequentialIterable(
const QMetaSequence &metaSequence,
const QMetaType &metaType,
92 : QIterable(metaSequence, metaType.alignOf(), iterable)
96 QSequentialIterable(QIterable<QMetaSequence> &&other) : QIterable(std::move(other)) {}
98 QSequentialIterable &operator=(QIterable<QMetaSequence> &&other)
100 QIterable::operator=(std::move(other));
104 const_iterator begin()
const {
return constBegin(); }
105 const_iterator end()
const {
return constEnd(); }
107 const_iterator constBegin()
const {
return const_iterator(QIterable::constBegin()); }
108 const_iterator constEnd()
const {
return const_iterator(QIterable::constEnd()); }
110 iterator mutableBegin() {
return iterator(QIterable::mutableBegin()); }
111 iterator mutableEnd() {
return iterator(QIterable::mutableEnd()); }
113 QVariant at(qsizetype idx)
const;
114 void set(qsizetype idx,
const QVariant &value);
116 enum Position { Unspecified, AtBegin, AtEnd };
117 void addValue(
const QVariant &value, Position position = Unspecified);
118 void removeValue(Position position = Unspecified);
120 QMetaType valueMetaType()
const;
124inline QVariantRef<QSequentialIterator>::operator QVariant()
const
126 if (m_pointer ==
nullptr)
128 const QMetaType metaType(m_pointer->metaContainer().valueMetaType());
129 QVariant v(metaType);
130 void *dataPtr = metaType == QMetaType::fromType<QVariant>() ? &v : v.data();
131 m_pointer->metaContainer().valueAtIterator(m_pointer->constIterator(), dataPtr);
136inline QVariantRef<QSequentialIterator> &QVariantRef<QSequentialIterator>::operator=(
137 const QVariant &value)
139 if (m_pointer ==
nullptr)
142 QtPrivate::QVariantTypeCoercer coercer;
143 m_pointer->metaContainer().setValueAtIterator(
144 m_pointer->constIterator(),
145 coercer.coerce(value, m_pointer->metaContainer().valueMetaType()));
150Q_DECLARE_TYPEINFO(QSequentialIterable::iterator, Q_RELOCATABLE_TYPE);
151Q_DECLARE_TYPEINFO(QSequentialIterable::const_iterator, Q_RELOCATABLE_TYPE);
The QAssociativeIterable class is an iterable interface for an associative container in a QVariant.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
QCborArray toArray(const QCborArray &a) const
QCborMap toMap(const QCborMap &m) const
QVariant toVariant() const
QCborValueConstRef & operator=(const QCborValueConstRef &)=delete
QCborArray toArray() const
bool toBool(bool defaultValue=false) const
QCborValue taggedValue(const QCborValue &defaultValue=QCborValue()) const
QCborSimpleType toSimpleType(QCborSimpleType defaultValue=QCborSimpleType::Undefined) const
bool isSimpleType() const
bool isRegularExpression() const
QCborValue::Type type() const
QCborValueConstRef(const QCborValueConstRef &)=default
QCborTag tag(QCborTag defaultValue=QCborTag(-1)) const
constexpr QCborValueConstRef()
QByteArray toByteArray(const QByteArray &defaultValue={}) const
qint64 toInteger(qint64 defaultValue=0) const
bool isSimpleType(QCborSimpleType st) const
QUuid toUuid(const QUuid &defaultValue={}) const
QCborContainerPrivate * d
QAnyStringView toStringView(QAnyStringView defaultValue={}) const
friend bool comparesEqual(const QCborValueConstRef &lhs, const QCborValueConstRef &rhs) noexcept
friend bool comparesEqual(const QCborValueConstRef &lhs, const QCborValue &rhs) noexcept
QString toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opt=QCborValue::Compact) const
int compare(const QCborValue &other) const
friend Qt::strong_ordering compareThreeWay(const QCborValueConstRef &lhs, const QCborValue &rhs) noexcept
operator QCborValue() const
friend Qt::strong_ordering compareThreeWay(const QCborValueConstRef &lhs, const QCborValueConstRef &rhs) noexcept
constexpr QCborValueConstRef(QCborContainerPrivate *dd, qsizetype ii)
QCborValue concrete() const noexcept
QString toString(const QString &defaultValue={}) const
QUrl toUrl(const QUrl &defaultValue={}) const
QJsonValue toJsonValue() const
double toDouble(double defaultValue=0) const
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
friend bool comparesEqual(const QJsonValueConstRef &lhs, const QJsonValue &rhs)
constexpr QJsonValueConstRef(QCborContainerPrivate *d, size_t index, bool is_object)
friend bool comparesEqual(const QJsonValueConstRef &lhs, const QJsonValueConstRef &rhs)
operator QJsonValue() const
QAnyStringView objectKeyView() const
void rebind(QJsonValueConstRef other)
QString objectKey() const
QAnyStringView toStringView(QAnyStringView defaultValue={}) const
QJsonValueConstRef(const QJsonValueConstRef &)=default
qint64 toInteger(qint64 defaultValue=0) const
bool toBool(bool defaultValue=false) const
QJsonValueConstRef & operator=(const QJsonValueConstRef &)=delete
QString toString(const QString &defaultValue={}) const
QJsonValue::Type type() const
QJsonValueConstRef(QJsonArray *array, qsizetype idx)
QCborContainerPrivate * d
QJsonValueConstRef(QJsonObject *object, qsizetype idx)
double toDouble(double defaultValue=0) const
int toInt(int defaultValue=0) const
const QJsonValue operator[](QStringView key) const
\inmodule QtCore\reentrant
\inmodule QtCore\compares equality \compareswith equality QLine \endcompareswith
\inmodule QtCore\compares equality \compareswith equality QLineF \endcompareswith
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
The QSequentialIterable class is an iterable interface for a container in a QVariant.
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
QMutableListIterator< QByteArray > QMutableByteArrayListIterator
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
QList< QVariant > QVariantList
Q_DECLARE_TYPEINFO(QLine, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(QLineF, Q_PRIMITIVE_TYPE)
#define qCWarning(category,...)
#define Q_STATIC_LOGGING_CATEGORY(name,...)
#define QStringLiteral(str)
\inmodule QtCore\reentrant
QString errorString() const
\variable QCborParserError::offset
~QListSpecialMethods()=default
QListSpecialMethods & operator=(const QListSpecialMethods &)=default
QListSpecialMethods(QListSpecialMethods &&)=default
QListSpecialMethods & operator=(QListSpecialMethods &&)=default
QListSpecialMethods()=default
QListSpecialMethods(const QListSpecialMethods &)=default
QByteArray join(QByteArrayView sep={}) const
static T value(const Iterator &it)
static T value(Iterator &it)
static QCborValueConstRef key(Iterator &it)
static QCborValueConstRef key(const Iterator &it)
static QAnyStringView key(Iterator &it)
static T value(const Iterator &it)
static QAnyStringView key(const Iterator &it)
static T value(Iterator &it)