Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmetasequence.h
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QMETASEQUENCE_H
6#define QMETASEQUENCE_H
7
8#if 0
9#pragma qt_class(QMetaSequence)
10#endif
11
12#include <QtCore/qiterable.h>
13#include <QtCore/qiterable_impl.h>
14#include <QtCore/qmetacontainer.h>
15#include <QtCore/qvariant.h>
16
18
19namespace QtMetaContainerPrivate {
20
22{
23public:
24 using value_type = QVariant;
27
28 static constexpr bool CanNoexceptAssignQVariant = false;
29 static constexpr bool CanNoexceptConvertToQVariant = false;
30
31 SequentialIterator(QIterator &&it) : QIterator(std::move(it)) {}
32
33 reference operator*() const { return reference(*this); }
34 pointer operator->() const { return pointer(*this); }
35 reference operator[](qsizetype n) const { return reference(*this + n); }
36};
37
39{
40public:
41 using value_type = QVariant;
44
45 static constexpr bool CanNoexceptConvertToQVariant = false;
46
47 SequentialConstIterator(QConstIterator &&it) : QConstIterator(std::move(it)) {}
48
49 value_type operator*() const;
50 pointer operator->() const { return pointer(*this); }
51 value_type operator[](qsizetype n) const;
52};
53
54} // namespace QtMetaContainerPrivate
55
56namespace QtPrivate {
57template<typename Indirect>
58QVariant sequentialIteratorToVariant(const Indirect &referred)
59{
60 const auto metaSequence = referred.metaContainer();
61 return QtIterablePrivate::retrieveElement(metaSequence.valueMetaType(), [&](void *dataPtr) {
62 metaSequence.valueAtConstIterator(referred.constIterator(), dataPtr);
63 });
64}
65} // namespace QtPrivate
66
67template<>
68inline QVariant::Reference<QtMetaContainerPrivate::SequentialIterator>::operator QVariant() const
69{
70 return QtPrivate::sequentialIteratorToVariant(m_referred);
71}
72
73template<>
74inline QVariant::Reference<QtMetaContainerPrivate::SequentialIterator> &
75QVariant::Reference<QtMetaContainerPrivate::SequentialIterator>::operator=(const QVariant &value)
76{
77 QtPrivate::QVariantTypeCoercer coercer;
78 m_referred.metaContainer().setValueAtIterator(
79 m_referred.mutableIterator(),
80 coercer.coerce(value, m_referred.metaContainer().valueMetaType()));
81 return *this;
82}
83
84template<>
85inline QVariant::ConstReference<QtMetaContainerPrivate::SequentialConstIterator>::operator QVariant() const
86{
87 return QtPrivate::sequentialIteratorToVariant(m_referred);
88}
89
90namespace QtMetaContainerPrivate {
92{
93 return reference(*this);
94}
95
97{
98 return reference(*this + n);
99}
100
102{
103public:
109 using ForwardIterator
125 using iterator = Iterator;
128 template<class T>
129 Sequence(const T *p)
130 : QIterable(QMetaSequence::fromContainer<T>(), p)
131 {
132 Q_UNUSED(m_revision);
133 }
134
135 template<class T>
136 Sequence(T *p)
137 : QIterable(QMetaSequence::fromContainer<T>(), p)
139 }
140
141 Sequence()
142 : QIterable(QMetaSequence(), nullptr)
144 }
145
146 template<typename Pointer>
147 Sequence(const QMetaSequence &metaSequence, Pointer iterable)
148 : QIterable(metaSequence, iterable)
149 {
150 }
151
152 Sequence(const QMetaSequence &metaSequence, QMetaType metaType, void *iterable)
153 : QIterable(metaSequence, metaType.alignOf(), iterable)
154 {
156
157 Sequence(const QMetaSequence &metaSequence, QMetaType metaType, const void *iterable)
158 : QIterable(metaSequence, metaType.alignOf(), iterable)
159 {
160 }
162 Sequence(QIterable<QMetaSequence> &&other) : QIterable(std::move(other)) {}
163
167 return *this;
169
170 ConstIterator begin() const { return constBegin(); }
171 ConstIterator end() const { return constEnd(); }
172
175
178
179 QVariant at(qsizetype idx) const
180 {
183 if (meta.canGetValueAtIndex()) {
185 return;
186 }
187
188#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
189 // We shouldn't second-guess the underlying container.
197 });
206
207 void append(const QVariant &value)
208 {
213
214 void prepend(const QVariant &value)
215 {
221 void removeLast()
222 {
224 }
225
226 void removeFirst()
227 {
229 }
230
231#if QT_DEPRECATED_SINCE(6, 11)
234
235 enum
236 QT_DEPRECATED_VERSION_X_6_11("Use append(), prepend(), removeLast(), or removeFirst() instead.")
238 {
240 };
241
243 Q_DECL_EQ_DELETE_X("Use append() or prepend() instead.");
244
246 Q_DECL_EQ_DELETE_X("Use removeLast() or removeFirst() instead.");
247
249 Q_DECL_EQ_DELETE_X("Use QMetaSequence::valueMetaType() instead.");
250
251 void set(qsizetype idx, const QVariant &value)
252 Q_DECL_EQ_DELETE_X("Use setAt() instead.");
253
255#endif // QT_DEPRECATED_SINCE(6, 11)
256};
257} // namespace QtMetaContainerPrivate
258
259QT_END_NAMESPACE
260
261#endif // QMETASEQUENCE_H
\inmodule QtCore\reentrant
Definition qcborarray.h:21
\inmodule QtCore\reentrant
Definition qcbormap.h:35
bool isBool() const
Definition qcborvalue.h:321
QCborArray toArray(const QCborArray &a) const
Definition qcborarray.h:384
QCborMap toMap(const QCborMap &m) const
Definition qcbormap.h:495
QCborMap toMap() const
Definition qcbormap.h:490
QVariant toVariant() const
Definition qcborvalue.h:385
bool isInteger() const
Definition qcborvalue.h:313
bool isDateTime() const
Definition qcborvalue.h:325
bool isDouble() const
Definition qcborvalue.h:324
bool isString() const
Definition qcborvalue.h:315
QCborValueConstRef & operator=(const QCborValueConstRef &)=delete
bool isUrl() const
Definition qcborvalue.h:326
bool isNull() const
Definition qcborvalue.h:322
QCborArray toArray() const
Definition qcborarray.h:379
bool isContainer() const
Definition qcborvalue.h:330
bool toBool(bool defaultValue=false) const
Definition qcborvalue.h:346
QCborValue taggedValue(const QCborValue &defaultValue=QCborValue()) const
Definition qcborvalue.h:341
bool isByteArray() const
Definition qcborvalue.h:314
QCborSimpleType toSimpleType(QCborSimpleType defaultValue=QCborSimpleType::Undefined) const
Definition qcborvalue.h:334
bool isMap() const
Definition qcborvalue.h:317
bool isSimpleType() const
Definition qcborvalue.h:331
bool isRegularExpression() const
Definition qcborvalue.h:327
bool isUndefined() const
Definition qcborvalue.h:323
QCborValue::Type type() const
Definition qcborvalue.h:312
bool isInvalid() const
Definition qcborvalue.h:329
QCborValueConstRef(const QCborValueConstRef &)=default
bool isUuid() const
Definition qcborvalue.h:328
QCborTag tag(QCborTag defaultValue=QCborTag(-1)) const
Definition qcborvalue.h:339
constexpr QCborValueConstRef()
Definition qcborvalue.h:452
QByteArray toByteArray(const QByteArray &defaultValue={}) const
Definition qcborvalue.h:351
qint64 toInteger(qint64 defaultValue=0) const
Definition qcborvalue.h:344
bool isSimpleType(QCborSimpleType st) const
Definition qcborvalue.h:332
bool isTrue() const
Definition qcborvalue.h:320
QUuid toUuid(const QUuid &defaultValue={}) const
Definition qcborvalue.h:368
QCborContainerPrivate * d
Definition qcborvalue.h:456
bool isFalse() const
Definition qcborvalue.h:319
QAnyStringView toStringView(QAnyStringView defaultValue={}) const
Definition qcborvalue.h:355
friend bool comparesEqual(const QCborValueConstRef &lhs, const QCborValueConstRef &rhs) noexcept
Definition qcborvalue.h:409
bool isTag() const
Definition qcborvalue.h:318
friend bool comparesEqual(const QCborValueConstRef &lhs, const QCborValue &rhs) noexcept
Definition qcborvalue.h:425
QString toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opt=QCborValue::Compact) const
Definition qcborvalue.h:395
bool isArray() const
Definition qcborvalue.h:316
int compare(const QCborValue &other) const
Definition qcborvalue.h:382
friend Qt::strong_ordering compareThreeWay(const QCborValueConstRef &lhs, const QCborValue &rhs) noexcept
Definition qcborvalue.h:430
operator QCborValue() const
Definition qcborvalue.h:310
friend Qt::strong_ordering compareThreeWay(const QCborValueConstRef &lhs, const QCborValueConstRef &rhs) noexcept
Definition qcborvalue.h:414
constexpr QCborValueConstRef(QCborContainerPrivate *dd, qsizetype ii)
Definition qcborvalue.h:453
QCborValue concrete() const noexcept
Definition qcborvalue.h:404
QString toString(const QString &defaultValue={}) const
Definition qcborvalue.h:353
QUrl toUrl(const QUrl &defaultValue={}) const
Definition qcborvalue.h:362
QJsonValue toJsonValue() const
double toDouble(double defaultValue=0) const
Definition qcborvalue.h:348
\inmodule QtCore\reentrant
Definition qcborvalue.h:48
\inmodule QtCore\reentrant
Definition qdatastream.h:50
\inmodule QtCore
Definition qhash.h:843
\inmodule QtCore\reentrant
Definition qjsonarray.h:19
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
Definition qjsonobject.h:34
friend bool comparesEqual(const QJsonValueConstRef &lhs, const QJsonValue &rhs)
Definition qjsonvalue.h:185
constexpr QJsonValueConstRef(QCborContainerPrivate *d, size_t index, bool is_object)
Definition qjsonvalue.h:236
friend bool comparesEqual(const QJsonValueConstRef &lhs, const QJsonValueConstRef &rhs)
Definition qjsonvalue.h:180
bool isBool() const
Definition qjsonvalue.h:153
operator QJsonValue() const
Definition qjsonvalue.h:148
bool isArray() const
Definition qjsonvalue.h:156
bool isDouble() const
Definition qjsonvalue.h:154
QAnyStringView objectKeyView() const
Definition qjsonvalue.h:210
void rebind(QJsonValueConstRef other)
Definition qjsonvalue.h:244
bool isString() const
Definition qjsonvalue.h:155
bool isObject() const
Definition qjsonvalue.h:157
QString objectKey() const
Definition qjsonvalue.h:207
QAnyStringView toStringView(QAnyStringView defaultValue={}) const
Definition qjsonvalue.h:170
QJsonValueConstRef(const QJsonValueConstRef &)=default
qint64 toInteger(qint64 defaultValue=0) const
Definition qjsonvalue.h:164
bool toBool(bool defaultValue=false) const
Definition qjsonvalue.h:160
QJsonValueConstRef & operator=(const QJsonValueConstRef &)=delete
QString toString(const QString &defaultValue={}) const
Definition qjsonvalue.h:168
QJsonValue::Type type() const
Definition qjsonvalue.h:151
QJsonValueConstRef(QJsonArray *array, qsizetype idx)
Definition qjsonarray.h:322
QCborContainerPrivate * d
Definition qjsonvalue.h:250
bool isNull() const
Definition qjsonvalue.h:152
QJsonValueConstRef(QJsonObject *object, qsizetype idx)
double toDouble(double defaultValue=0) const
Definition qjsonvalue.h:166
int toInt(int defaultValue=0) const
Definition qjsonvalue.h:162
const QJsonValue operator[](QStringView key) const
Definition qjsonvalue.h:175
bool isUndefined() const
Definition qjsonvalue.h:158
\inmodule QtCore\reentrant
Definition qjsonvalue.h:30
\inmodule QtCore\compares equality \compareswith equality QLine \endcompareswith
Definition qline.h:194
\inmodule QtCore\compares equality \compareswith equality QLineF \endcompareswith
Definition qline.h:20
Definition qlist.h:81
void remove(int from, int to)
bool insertIfNotContains(Key k, const T &f)
bool contains(Key k) const
const T * function(Key k) const
\inmodule QtCore\reentrant
Definition qpoint.h:232
\inmodule QtCore\reentrant
Definition qpoint.h:30
Association(const QMetaAssociation &metaAssociation, QMetaType metaType, const void *iterable)
Association(QIterable< QMetaAssociation > &&other)
Association(const QMetaAssociation &metaAssociation, QMetaType metaType, void *iterable)
reference operator[](qsizetype n) const
static constexpr bool CanNoexceptAssignQVariant
static constexpr bool CanNoexceptConvertToQVariant
LegacyRegisterOp legacyRegisterOp
Definition qmetatype.h:313
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
Definition qfloat16.h:57
Combined button and popup list for selecting options.
QVariant sequentialIteratorToVariant(const Indirect &referred)
QVariant associativeIteratorToVariant(const Indirect &referred)
QMutableListIterator< QByteArray > QMutableByteArrayListIterator
QCborSimpleType
Definition qcborcommon.h:29
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2582
QList< QVariant > QVariantList
Definition qjsonarray.h:16
Q_DECLARE_TYPEINFO(QLine, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(QLineF, Q_PRIMITIVE_TYPE)
#define qCWarning(category,...)
#define Q_STATIC_LOGGING_CATEGORY(name,...)
#define CONVERT_CBOR_AND_JSON(To)
#define NS(x)
Definition qmetatype.cpp:73
#define QMETATYPE_CONVERTER_ASSIGN_QCHAR(From)
#define QMETATYPE_CONVERTER_ASSIGN_DOUBLE(To, From)
#define INTEGRAL_CONVERTER(To)
static bool tryConvertBuiltinTypes(const void *from, int fromTypeId, void *to, int toTypeId)
#define QMETATYPE_CONVERTER_ASSIGN_NUMBER(To, From)
static bool qIntegerConversionFromFPHelper(From from, To *to)
#define FLOAT_CONVERTER(To)
#define QT_FOR_EACH_STATIC_CORE_POINTER(F)
Definition qmetatype.h:138
#define QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)
Definition qmetatype.h:71
#define QT_FOR_EACH_STATIC_PRIMITIVE_NON_VOID_TYPE(F)
Definition qmetatype.h:51
#define QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)
Definition qmetatype.h:152
#define QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)
Definition qmetatype.h:75
#define QT_IMPL_METATYPE_EXTERN_TAGGED(TYPE, TAG)
Definition qmetatype.h:1375
#define QT_FOR_EACH_STATIC_CORE_CLASS(F)
Definition qmetatype.h:106
#define QT_FOR_EACH_STATIC_ALIAS_TYPE(F)
Definition qmetatype.h:194
#define QT_FOR_EACH_STATIC_TYPE(F)
Definition qmetatype.h:224
#define QMETATYPE_CONVERTER(To, From, assign_and_return)
Definition qmetatype_p.h:24
#define QMETATYPE_CONVERTER_ASSIGN(To, From)
Definition qmetatype_p.h:35
#define QStringLiteral(str)
Definition qstring.h:1825
\inmodule QtCore\reentrant
Definition qcborvalue.h:38
QString errorString() const
\variable QCborParserError::offset
Definition qcborvalue.h:42
QCborError error
Definition qcborvalue.h:40
QListSpecialMethods & operator=(const QListSpecialMethods &)=default
QListSpecialMethods(QListSpecialMethods &&)=default
QListSpecialMethods & operator=(QListSpecialMethods &&)=default
QListSpecialMethods(const QListSpecialMethods &)=default
QByteArray join(QByteArrayView sep={}) const
static T value(const Iterator &it)
Definition qcbormap.h:27
static T value(Iterator &it)
Definition qcbormap.h:28
static QCborValueConstRef key(Iterator &it)
Definition qcbormap.h:26
static QCborValueConstRef key(const Iterator &it)
Definition qcbormap.h:25
static QAnyStringView key(Iterator &it)
Definition qjsonobject.h:26
static T value(const Iterator &it)
Definition qjsonobject.h:27
static QAnyStringView key(const Iterator &it)
Definition qjsonobject.h:25
static T value(Iterator &it)
Definition qjsonobject.h:28