4#ifndef QSEQUENTIALITERABLE_H
5#define QSEQUENTIALITERABLE_H
7#include <QtCore/qiterable.h>
8#include <QtCore/qvariant.h>
12#if QT_DEPRECATED_SINCE(6
, 15
)
14QT_WARNING_DISABLE_DEPRECATED
17class Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_6_15(
"Use QMetaSequence's iterables and iterators instead.") QSequentialIterator :
public QIterator<QMetaSequence>
20 using value_type = QVariant;
21 using reference = QVariantRef<QSequentialIterator>;
22 using pointer = QVariantPointer<QSequentialIterator>;
24 QSequentialIterator(QIterator &&it)
25 : QIterator(std::move(it))
28 QVariantRef<QSequentialIterator> operator*()
const;
29 QVariantPointer<QSequentialIterator> operator->()
const;
33class Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_6_15(
"Use QMetaSequence's iterables and iterators instead.") QSequentialConstIterator :
public QConstIterator<QMetaSequence>
36 using value_type = QVariant;
37 using reference =
const QVariant &;
38 using pointer = QVariantConstPointer;
40 QSequentialConstIterator(QConstIterator &&it)
41 : QConstIterator(std::move(it))
44 QVariant operator*()
const;
45 QVariantConstPointer operator->()
const;
49class Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_6_15(
"Use QMetaSequence's iterables and iterators instead.") QSequentialIterable :
public QIterable<QMetaSequence>
52 using iterator = QTaggedIterator<QSequentialIterator,
void>;
53 using const_iterator = QTaggedIterator<QSequentialConstIterator,
void>;
55 using RandomAccessIterator = QTaggedIterator<iterator, std::random_access_iterator_tag>;
56 using BidirectionalIterator = QTaggedIterator<iterator, std::bidirectional_iterator_tag>;
57 using ForwardIterator = QTaggedIterator<iterator, std::forward_iterator_tag>;
58 using InputIterator = QTaggedIterator<iterator, std::input_iterator_tag>;
60 using RandomAccessConstIterator = QTaggedIterator<const_iterator, std::random_access_iterator_tag>;
61 using BidirectionalConstIterator = QTaggedIterator<const_iterator, std::bidirectional_iterator_tag>;
62 using ForwardConstIterator = QTaggedIterator<const_iterator, std::forward_iterator_tag>;
63 using InputConstIterator = QTaggedIterator<const_iterator, std::input_iterator_tag>;
66 QSequentialIterable(
const T *p)
67 : QIterable(QMetaSequence::fromContainer<T>(), p)
73 QSequentialIterable(T *p)
74 : QIterable(QMetaSequence::fromContainer<T>(), p)
79 : QIterable(QMetaSequence(),
nullptr)
83 template<
typename Pointer>
84 QSequentialIterable(
const QMetaSequence &metaSequence, Pointer iterable)
85 : QIterable(metaSequence, iterable)
89 QSequentialIterable(
const QMetaSequence &metaSequence,
const QMetaType &metaType,
91 : QIterable(metaSequence, metaType.alignOf(), iterable)
95 QSequentialIterable(
const QMetaSequence &metaSequence,
const QMetaType &metaType,
97 : QIterable(metaSequence, metaType.alignOf(), iterable)
101 QSequentialIterable(QIterable<QMetaSequence> &&other) : QIterable(std::move(other)) {}
103 QSequentialIterable &operator=(QIterable<QMetaSequence> &&other)
105 QIterable::operator=(std::move(other));
109 const_iterator begin()
const {
return constBegin(); }
110 const_iterator end()
const {
return constEnd(); }
112 const_iterator constBegin()
const {
return const_iterator(QIterable::constBegin()); }
113 const_iterator constEnd()
const {
return const_iterator(QIterable::constEnd()); }
115 iterator mutableBegin() {
return iterator(QIterable::mutableBegin()); }
116 iterator mutableEnd() {
return iterator(QIterable::mutableEnd()); }
118 QVariant at(qsizetype idx)
const;
119 void set(qsizetype idx,
const QVariant &value);
121 enum Position { Unspecified, AtBegin, AtEnd };
122 void addValue(
const QVariant &value, Position position = Unspecified);
123 void removeValue(Position position = Unspecified);
125 QMetaType valueMetaType()
const;
129inline QVariantRef<QSequentialIterator>::operator QVariant()
const
131 if (m_pointer ==
nullptr)
133 const QMetaType metaType(m_pointer->metaContainer().valueMetaType());
136 QVariant v(metaType);
137 void *dataPtr = metaType == QMetaType::fromType<QVariant>() ? &v : v.data();
138 m_pointer->metaContainer().valueAtIterator(m_pointer->constIterator(), dataPtr);
144inline QVariantRef<QSequentialIterator> &QVariantRef<QSequentialIterator>::operator=(
145 const QVariant &value)
147 if (m_pointer ==
nullptr)
150 QtPrivate::QVariantTypeCoercer coercer;
151 m_pointer->metaContainer().setValueAtIterator(
152 m_pointer->constIterator(),
153 coercer.coerce(value, m_pointer->metaContainer().valueMetaType()));
157Q_DECLARE_TYPEINFO(QSequentialIterable, Q_RELOCATABLE_TYPE);
158Q_DECLARE_TYPEINFO(QSequentialIterable::iterator, Q_RELOCATABLE_TYPE);
159Q_DECLARE_TYPEINFO(QSequentialIterable::const_iterator, Q_RELOCATABLE_TYPE);
\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
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
Combined button and popup list for selecting options.
QVariant sequentialIteratorToVariant(const Indirect &referred)
QVariant associativeIteratorToVariant(const Indirect &referred)
QMutableListIterator< QByteArray > QMutableByteArrayListIterator
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)