5#ifndef QSEQUENTIALITERABLE_H
6#define QSEQUENTIALITERABLE_H
8#include <QtCore/qiterable.h>
9#include <QtCore/qvariant.h>
13#if QT_DEPRECATED_SINCE(6
, 15
)
15QT_WARNING_DISABLE_DEPRECATED
18class Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_6_15(
"Use QMetaSequence's iterables and iterators instead.") QSequentialIterator :
public QIterator<QMetaSequence>
21 using value_type = QVariant;
22 using reference = QVariantRef<QSequentialIterator>;
23 using pointer = QVariantPointer<QSequentialIterator>;
25 QSequentialIterator(QIterator &&it)
26 : QIterator(std::move(it))
29 QVariantRef<QSequentialIterator> operator*()
const;
30 QVariantPointer<QSequentialIterator> operator->()
const;
34class Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_6_15(
"Use QMetaSequence's iterables and iterators instead.") QSequentialConstIterator :
public QConstIterator<QMetaSequence>
37 using value_type = QVariant;
38 using reference =
const QVariant &;
39 using pointer = QVariantConstPointer;
41 QSequentialConstIterator(QConstIterator &&it)
42 : QConstIterator(std::move(it))
45 QVariant operator*()
const;
46 QVariantConstPointer operator->()
const;
50class Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_6_15(
"Use QMetaSequence's iterables and iterators instead.") QSequentialIterable :
public QIterable<QMetaSequence>
53 using iterator = QTaggedIterator<QSequentialIterator,
void>;
54 using const_iterator = QTaggedIterator<QSequentialConstIterator,
void>;
56 using RandomAccessIterator = QTaggedIterator<iterator, std::random_access_iterator_tag>;
57 using BidirectionalIterator = QTaggedIterator<iterator, std::bidirectional_iterator_tag>;
58 using ForwardIterator = QTaggedIterator<iterator, std::forward_iterator_tag>;
59 using InputIterator = QTaggedIterator<iterator, std::input_iterator_tag>;
61 using RandomAccessConstIterator = QTaggedIterator<const_iterator, std::random_access_iterator_tag>;
62 using BidirectionalConstIterator = QTaggedIterator<const_iterator, std::bidirectional_iterator_tag>;
63 using ForwardConstIterator = QTaggedIterator<const_iterator, std::forward_iterator_tag>;
64 using InputConstIterator = QTaggedIterator<const_iterator, std::input_iterator_tag>;
67 QSequentialIterable(
const T *p)
68 : QIterable(QMetaSequence::fromContainer<T>(), p)
74 QSequentialIterable(T *p)
75 : QIterable(QMetaSequence::fromContainer<T>(), p)
80 : QIterable(QMetaSequence(),
nullptr)
84 template<
typename Pointer>
85 QSequentialIterable(
const QMetaSequence &metaSequence, Pointer iterable)
86 : QIterable(metaSequence, iterable)
90 QSequentialIterable(
const QMetaSequence &metaSequence,
const QMetaType &metaType,
92 : QIterable(metaSequence, metaType.alignOf(), iterable)
96 QSequentialIterable(
const QMetaSequence &metaSequence,
const QMetaType &metaType,
98 : QIterable(metaSequence, metaType.alignOf(), iterable)
102 QSequentialIterable(QIterable<QMetaSequence> &&other) : QIterable(std::move(other)) {}
104 QSequentialIterable &operator=(QIterable<QMetaSequence> &&other)
106 QIterable::operator=(std::move(other));
110 const_iterator begin()
const {
return constBegin(); }
111 const_iterator end()
const {
return constEnd(); }
113 const_iterator constBegin()
const {
return const_iterator(QIterable::constBegin()); }
114 const_iterator constEnd()
const {
return const_iterator(QIterable::constEnd()); }
116 iterator mutableBegin() {
return iterator(QIterable::mutableBegin()); }
117 iterator mutableEnd() {
return iterator(QIterable::mutableEnd()); }
119 QVariant at(qsizetype idx)
const;
120 void set(qsizetype idx,
const QVariant &value);
122 enum Position { Unspecified, AtBegin, AtEnd };
123 void addValue(
const QVariant &value, Position position = Unspecified);
124 void removeValue(Position position = Unspecified);
126 QMetaType valueMetaType()
const;
130inline QVariantRef<QSequentialIterator>::operator QVariant()
const
132 if (m_pointer ==
nullptr)
134 const QMetaType metaType(m_pointer->metaContainer().valueMetaType());
137 QVariant v(metaType);
138 void *dataPtr = metaType == QMetaType::fromType<QVariant>() ? &v : v.data();
139 m_pointer->metaContainer().valueAtIterator(m_pointer->constIterator(), dataPtr);
145inline QVariantRef<QSequentialIterator> &QVariantRef<QSequentialIterator>::operator=(
146 const QVariant &value)
148 if (m_pointer ==
nullptr)
151 QtPrivate::QVariantTypeCoercer coercer;
152 m_pointer->metaContainer().setValueAtIterator(
153 m_pointer->constIterator(),
154 coercer.coerce(value, m_pointer->metaContainer().valueMetaType()));
158Q_DECLARE_TYPEINFO(QSequentialIterable, Q_RELOCATABLE_TYPE);
159Q_DECLARE_TYPEINFO(QSequentialIterable::iterator, Q_RELOCATABLE_TYPE);
160Q_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)