Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qqmldompath_p.h
Go to the documentation of this file.
1// Copyright (C) 2020 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
4#ifndef QMLDOM_PATH_H
5#define QMLDOM_PATH_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "qqmldomconstants_p.h"
20#include "qqmldom_global.h"
21
22#include <QtCore/QCoreApplication>
23#include <QtCore/QMetaEnum>
24#include <QtCore/QString>
25#include <QtCore/QStringView>
26#include <QtCore/QStringList>
27#include <QtCore/QVector>
28#include <QtCore/QDebug>
29
30#include <functional>
31#include <iterator>
32
34
35namespace QQmlJS {
36namespace Dom {
37
38class ErrorGroups;
39class ErrorMessage;
40class DomItem;
41class Path;
42
43using ErrorHandler = std::function<void(const ErrorMessage &)> ;
44
46
47namespace PathEls {
48
49enum class Kind{
50 Empty,
51 Field,
52 Index,
53 Key,
54 Root,
55 Current,
56 Any,
57 Filter
58};
59
60class TestPaths;
61class Empty;
62class Field;
63class Index;
64class Key;
65class Root;
66class Current;
67class Any;
68class Filter;
69
70class Base {
71public:
72 QStringView stringView() const { return QStringView(); }
73 index_type index(index_type defaultValue = -1) const { return defaultValue; }
74 bool hasSquareBrackets() const { return false; }
75
76protected:
77 void dump(const Sink &sink, const QString &name, bool hasSquareBrackets) const;
78};
79
80class Empty final : public Base
81{
82public:
83 Empty() = default;
84 QString name() const { return QString(); }
85 bool checkName(QStringView s) const { return s.isEmpty(); }
86 void dump(const Sink &sink) const { Base::dump(sink, name(), hasSquareBrackets()); }
87};
88
89class Field final : public Base
90{
91public:
92 Field() = default;
94 QString name() const { return fieldName.toString(); }
95 bool checkName(QStringView s) const { return s == fieldName; }
96 QStringView stringView() const { return fieldName; }
97 void dump(const Sink &sink) const { sink(fieldName); }
98
100};
101
102class Index final : public Base
103{
104public:
105 Index() = default;
108 bool checkName(QStringView s) const { return s == name(); }
109 index_type index(index_type = -1) const { return indexValue; }
110 void dump(const Sink &sink) const { Base::dump(sink, name(), hasSquareBrackets()); }
111 bool hasSquareBrackets() const { return true; }
112
114};
115
116class Key final : public Base
117{
118public:
119 Key() = default;
120 Key(const QString &n) : keyValue(n) { }
121 QString name() const { return keyValue; }
122 bool checkName(QStringView s) const { return s == keyValue; }
123 QStringView stringView() const { return keyValue; }
124 void dump(const Sink &sink) const {
125 sink(u"[");
127 sink(u"]");
128 }
129 bool hasSquareBrackets() const { return true; }
130
132};
133
134class Root final : public Base
135{
136public:
137 Root() = default;
140 QMetaEnum metaEnum = QMetaEnum::fromType<PathRoot>();
142 for (int i = 0; i < metaEnum.keyCount(); ++ i)
143 if (n.compare(QString::fromUtf8(metaEnum.key(i)), Qt::CaseInsensitive) == 0)
144 contextKind = PathRoot(metaEnum.value(i));
146 contextName = n;
147 }
148 QString name() const {
149 switch (contextKind) {
151 return QStringLiteral(u"$modules");
152 case PathRoot::Cpp:
153 return QStringLiteral(u"$cpp");
154 case PathRoot::Libs:
155 return QStringLiteral(u"$libs");
156 case PathRoot::Top:
157 return QStringLiteral(u"$top");
158 case PathRoot::Env:
159 return QStringLiteral(u"$env");
161 return QStringLiteral(u"$universe");
162 case PathRoot::Other:
163 return QString::fromUtf8("$").append(contextName.toString());
164 }
165 Q_ASSERT(false && "Unexpected contextKind in name");
166 return QString();
167 }
168 bool checkName(QStringView s) const {
170 return s.compare(name(), Qt::CaseInsensitive) == 0;
171 return s.startsWith(QChar::fromLatin1('$')) && s.mid(1) == contextName;
172 }
174 void dump(const Sink &sink) const { sink(name()); }
175
178};
179
180class Current final : public Base
181{
182public:
183 Current() = default;
186 QMetaEnum metaEnum = QMetaEnum::fromType<PathCurrent>();
188 for (int i = 0; i < metaEnum.keyCount(); ++ i)
189 if (n.compare(QString::fromUtf8(metaEnum.key(i)), Qt::CaseInsensitive) == 0)
190 contextKind = PathCurrent(metaEnum.value(i));
192 contextName = n;
193 }
194 QString name() const {
195 switch (contextKind) {
197 return QString::fromUtf8("@").append(contextName.toString());
198 case PathCurrent::Obj:
199 return QStringLiteral(u"@obj");
201 return QStringLiteral(u"@objChain");
203 return QStringLiteral(u"@scopeChain");
205 return QStringLiteral(u"@component");
207 return QStringLiteral(u"@module");
208 case PathCurrent::Ids:
209 return QStringLiteral(u"@ids");
211 return QStringLiteral(u"@types");
213 return QStringLiteral(u"@lookupStrict");
215 return QStringLiteral(u"@lookupDynamic");
217 return QStringLiteral(u"@lookup");
218 }
219 Q_ASSERT(false && "Unexpected contextKind in Current::name");
220 return QString();
221 }
222 bool checkName(QStringView s) const {
224 return s.compare(name(), Qt::CaseInsensitive) == 0;
225 return s.startsWith(QChar::fromLatin1('@')) && s.mid(1) == contextName;
226 }
228 void dump(const Sink &sink) const { Base::dump(sink, name(), hasSquareBrackets()); }
229
232};
233
234class Any final : public Base
235{
236public:
237 Any() = default;
238 QString name() const { return QLatin1String("*"); }
239 bool checkName(QStringView s) const { return s == u"*"; }
240 void dump(const Sink &sink) const { Base::dump(sink, name(), hasSquareBrackets()); }
241 bool hasSquareBrackets() const { return true; }
242};
243
244class QMLDOM_EXPORT Filter final : public Base
245{
246public:
247 Filter() = default;
248 Filter(const std::function<bool(const DomItem &)> &f,
249 QStringView filterDescription = u"<native code filter>");
250 QString name() const;
251 bool checkName(QStringView s) const;
252 QStringView stringView() const { return filterDescription; }
253 void dump(const Sink &sink) const { Base::dump(sink, name(), hasSquareBrackets()); }
254 bool hasSquareBrackets() const { return true; }
255
256 std::function<bool(const DomItem &)> filterFunction;
258};
259
261public:
262 PathComponent() = default;
263 PathComponent(const PathComponent &) = default;
267 ~PathComponent() = default;
268
269 Kind kind() const { return Kind(m_data.index()); }
270
271 QString name() const
272 {
273 return std::visit([](auto &&d) { return d.name(); }, m_data);
274 }
275
277 {
278 return std::visit([s](auto &&d) { return d.checkName(s); }, m_data);
279 }
280
282 {
283 return std::visit([](auto &&d) { return d.stringView(); }, m_data);
284 }
285
286 index_type index(index_type defaultValue=-1) const
287 {
288 return std::visit([defaultValue](auto &&d) { return d.index(defaultValue); }, m_data);
289 }
290
291 void dump(const Sink &sink) const
292 {
293 return std::visit([sink](auto &&d) { return d.dump(sink); }, m_data);
294 }
295
296 bool hasSquareBrackets() const
297 {
298 return std::visit([](auto &&d) { return d.hasSquareBrackets(); }, m_data);
299 }
300
301 const Empty *asEmpty() const { return std::get_if<Empty>(&m_data); }
302 const Field *asField() const { return std::get_if<Field>(&m_data); }
303 const Index *asIndex() const { return std::get_if<Index>(&m_data); }
304 const Key *asKey() const { return std::get_if<Key>(&m_data); }
305 const Root *asRoot() const { return std::get_if<Root>(&m_data); }
306 const Current *asCurrent() const { return std::get_if<Current>(&m_data); }
307 const Any *asAny() const { return std::get_if<Any>(&m_data); }
308 const Filter *asFilter() const { return std::get_if<Filter>(&m_data); }
309
310 static int cmp(const PathComponent &p1, const PathComponent &p2);
311
315 PathComponent(Key &&o): m_data(std::move(o)) {}
318 PathComponent(Any &&o): m_data(std::move(o)) {}
320
321private:
322 friend class QQmlJS::Dom::Path;
323 friend class QQmlJS::Dom::PathEls::TestPaths;
324
325 using Variant = std::variant<Empty, Field, Index, Key, Root, Current, Any, Filter>;
326
327 template<typename T, Kind K>
328 static constexpr bool variantTypeMatches
329 = std::is_same_v<std::variant_alternative_t<size_t(K), Variant>, T>;
330
331 static_assert(size_t(Kind::Empty) == 0);
332 static_assert(variantTypeMatches<Empty, Kind::Empty>);
333 static_assert(variantTypeMatches<Field, Kind::Field>);
334 static_assert(variantTypeMatches<Key, Kind::Key>);
335 static_assert(variantTypeMatches<Root, Kind::Root>);
336 static_assert(variantTypeMatches<Current, Kind::Current>);
337 static_assert(variantTypeMatches<Any, Kind::Any>);
338 static_assert(variantTypeMatches<Filter, Kind::Filter>);
339 static_assert(std::variant_size_v<Variant> == size_t(Kind::Filter) + 1);
340
341 Variant m_data;
342};
343
344inline bool operator==(const PathComponent& lhs, const PathComponent& rhs){ return PathComponent::cmp(lhs,rhs) == 0; }
345inline bool operator!=(const PathComponent& lhs, const PathComponent& rhs){ return PathComponent::cmp(lhs,rhs) != 0; }
346inline bool operator< (const PathComponent& lhs, const PathComponent& rhs){ return PathComponent::cmp(lhs,rhs) < 0; }
347inline bool operator> (const PathComponent& lhs, const PathComponent& rhs){ return PathComponent::cmp(lhs,rhs) > 0; }
348inline bool operator<=(const PathComponent& lhs, const PathComponent& rhs){ return PathComponent::cmp(lhs,rhs) <= 0; }
349inline bool operator>=(const PathComponent& lhs, const PathComponent& rhs){ return PathComponent::cmp(lhs,rhs) >= 0; }
350
351class PathData {
352public:
353 PathData(const QStringList &strData, const QVector<PathComponent> &components)
355 {}
356 PathData(const QStringList &strData, const QVector<PathComponent> &components,
357 const std::shared_ptr<PathData> &parent)
359 {}
360
362 QVector<PathComponent> components;
363 std::shared_ptr<PathData> parent;
364};
365
366} // namespace PathEls
367
368#define QMLDOM_USTRING(s) u##s
369#define QMLDOM_FIELD(name) inline constexpr const auto name = QMLDOM_USTRING(#name)
377// namespace, so it cam be reopened to add more entries
378namespace Fields{
380QMLDOM_FIELD(accessSemantics);
381QMLDOM_FIELD(allSources);
382QMLDOM_FIELD(alternative);
383QMLDOM_FIELD(annotations);
385QMLDOM_FIELD(astComments);
386QMLDOM_FIELD(astRelocatableDump);
387QMLDOM_FIELD(attachedType);
388QMLDOM_FIELD(attachedTypeName);
389QMLDOM_FIELD(autoExports);
391QMLDOM_FIELD(binaryExpression);
392QMLDOM_FIELD(bindable);
393QMLDOM_FIELD(bindingElement);
394QMLDOM_FIELD(bindingIdentifiers);
395QMLDOM_FIELD(bindingType);
396QMLDOM_FIELD(bindings);
400QMLDOM_FIELD(canonicalFilePath);
402QMLDOM_FIELD(caseBlock);
403QMLDOM_FIELD(caseClause);
404QMLDOM_FIELD(caseClauses);
405QMLDOM_FIELD(catchBlock);
406QMLDOM_FIELD(catchParameter);
407QMLDOM_FIELD(children);
408QMLDOM_FIELD(classNames);
410QMLDOM_FIELD(commentedElements);
411QMLDOM_FIELD(comments);
414QMLDOM_FIELD(consequence);
416QMLDOM_FIELD(contentsDate);
418QMLDOM_FIELD(currentExposedAt);
419QMLDOM_FIELD(currentIsValid);
420QMLDOM_FIELD(currentItem);
421QMLDOM_FIELD(currentRevision);
422QMLDOM_FIELD(declarations);
423QMLDOM_FIELD(defaultClause);
424QMLDOM_FIELD(defaultPropertyName);
425QMLDOM_FIELD(defaultValue);
426QMLDOM_FIELD(designerSupported);
427QMLDOM_FIELD(elLocation);
429QMLDOM_FIELD(elementCanonicalPath);
430QMLDOM_FIELD(enumerations);
432QMLDOM_FIELD(exportSource);
435QMLDOM_FIELD(expression);
436QMLDOM_FIELD(expressionType);
437QMLDOM_FIELD(extensionTypeName);
438QMLDOM_FIELD(fileLocationsTree);
440QMLDOM_FIELD(finallyBlock);
441QMLDOM_FIELD(forStatement);
442QMLDOM_FIELD(fullRegion);
444QMLDOM_FIELD(globalScopeName);
445QMLDOM_FIELD(globalScopeWithName);
446QMLDOM_FIELD(hasCallback);
447QMLDOM_FIELD(hasCustomParser);
449QMLDOM_FIELD(identifier);
451QMLDOM_FIELD(implicit);
453QMLDOM_FIELD(importId);
454QMLDOM_FIELD(importScope);
455QMLDOM_FIELD(importSources);
456QMLDOM_FIELD(imported);
458QMLDOM_FIELD(inProgress);
459QMLDOM_FIELD(infoItem);
460QMLDOM_FIELD(inheritVersion);
461QMLDOM_FIELD(initializer);
465QMLDOM_FIELD(isConstructor);
466QMLDOM_FIELD(isCreatable);
467QMLDOM_FIELD(isDefaultMember);
469QMLDOM_FIELD(isInternal);
470QMLDOM_FIELD(isLatest);
472QMLDOM_FIELD(isPointer);
473QMLDOM_FIELD(isReadonly);
474QMLDOM_FIELD(isRequired);
475QMLDOM_FIELD(isSignalHandler);
476QMLDOM_FIELD(isSingleton);
478QMLDOM_FIELD(jsFileWithPath);
480QMLDOM_FIELD(lastRevision);
482QMLDOM_FIELD(lastValidRevision);
484QMLDOM_FIELD(loadInfo);
485QMLDOM_FIELD(loadOptions);
486QMLDOM_FIELD(loadPaths);
487QMLDOM_FIELD(loadsWithWork);
488QMLDOM_FIELD(localOffset);
490QMLDOM_FIELD(logicalPath);
491QMLDOM_FIELD(majorVersion);
492QMLDOM_FIELD(metaRevisions);
493QMLDOM_FIELD(methodType);
495QMLDOM_FIELD(minorVersion);
496QMLDOM_FIELD(moduleIndex);
497QMLDOM_FIELD(moduleIndexWithUri);
498QMLDOM_FIELD(moduleScope);
499QMLDOM_FIELD(moreCaseClauses);
500QMLDOM_FIELD(nAllLoadedCallbacks);
501QMLDOM_FIELD(nCallbacks);
503QMLDOM_FIELD(nNotdone);
505QMLDOM_FIELD(nameIdentifiers);
506QMLDOM_FIELD(newlinesBefore);
507QMLDOM_FIELD(nextComponent);
508QMLDOM_FIELD(nextScope);
511QMLDOM_FIELD(onAttachedObject);
512QMLDOM_FIELD(operation);
514QMLDOM_FIELD(parameters);
516QMLDOM_FIELD(parentObject);
519QMLDOM_FIELD(postCode);
520QMLDOM_FIELD(postCommentLocations);
521QMLDOM_FIELD(postComments);
525QMLDOM_FIELD(preCommentLocations);
526QMLDOM_FIELD(preComments);
528QMLDOM_FIELD(propertyDef);
529QMLDOM_FIELD(propertyDefRef);
530QMLDOM_FIELD(propertyDefs);
531QMLDOM_FIELD(propertyInfos);
532QMLDOM_FIELD(propertyName);
533QMLDOM_FIELD(prototypes);
534QMLDOM_FIELD(qmlDirectoryWithPath);
535QMLDOM_FIELD(qmlFileWithPath);
536QMLDOM_FIELD(qmlFiles);
537QMLDOM_FIELD(qmldirFileWithPath);
538QMLDOM_FIELD(qmldirWithPath);
539QMLDOM_FIELD(qmltypesFileWithPath);
540QMLDOM_FIELD(qmltypesFiles);
541QMLDOM_FIELD(qualifiedImports);
542QMLDOM_FIELD(rawComment);
544QMLDOM_FIELD(referredObject);
545QMLDOM_FIELD(referredObjectPath);
546QMLDOM_FIELD(regionComments);
548QMLDOM_FIELD(requestedAt);
549QMLDOM_FIELD(requestingUniverse);
550QMLDOM_FIELD(returnType);
551QMLDOM_FIELD(returnTypeName);
553QMLDOM_FIELD(rootComponent);
554QMLDOM_FIELD(scopeType);
555QMLDOM_FIELD(scriptElement);
557QMLDOM_FIELD(statement);
558QMLDOM_FIELD(statements);
560QMLDOM_FIELD(stringValue);
561QMLDOM_FIELD(subComponents);
562QMLDOM_FIELD(subImports);
563QMLDOM_FIELD(subItems);
567QMLDOM_FIELD(targetPropertyName);
570QMLDOM_FIELD(typeArgument);
571QMLDOM_FIELD(typeArgumentName);
574QMLDOM_FIELD(universe);
575QMLDOM_FIELD(updatedScriptExpressions);
578QMLDOM_FIELD(validExposedAt);
579QMLDOM_FIELD(validItem);
581QMLDOM_FIELD(valueTypeName);
586} // namespace Fields
587
588class Source;
589size_t qHash(const Path &, size_t);
590class PathIterator;
591// Define a iterator for it?
592// begin() can basically be itself, end() the empty path (zero length), iteration though dropFront()
596public:
599 static ErrorGroups myErrors(); // use static consts and central registration instead?
600
601 Path() = default;
602 explicit Path(const PathEls::PathComponent &c) : m_endOffset(0), m_length(0)
603 {
604 *this = appendComponent(c);
605 }
606
607 int length() const { return m_length; }
608 Path operator[](int i) const;
609 explicit operator bool() const;
610
611 PathIterator begin() const;
612 PathIterator end() const;
613
614 PathRoot headRoot() const;
615 PathCurrent headCurrent() const;
616 Kind headKind() const;
617 QString headName() const;
618 bool checkHeadName(QStringView name) const;
619 index_type headIndex(index_type defaultValue=-1) const;
620 std::function<bool(const DomItem &)> headFilter() const;
621 Path head() const;
622 Path last() const;
623 Source split() const;
624
625 void dump(const Sink &sink) const;
626 QString toString() const;
627 Path dropFront(int n = 1) const;
628 Path dropTail(int n = 1) const;
629 Path mid(int offset, int length) const;
630 Path mid(int offset) const;
631 Path appendComponent(const PathEls::PathComponent &c);
632
633 // # Path construction
634 static Path fromString(const QString &s, const ErrorHandler &errorHandler = nullptr);
635 static Path fromString(QStringView s, const ErrorHandler &errorHandler = nullptr);
636 static Path Root(PathRoot r);
637 static Path Root(QStringView s=u"");
638 static Path Root(const QString &s);
639 static Path Index(index_type i);
640 static Path Field(QStringView s=u"");
641 static Path Field(const QString &s);
642 static Path Key(QStringView s=u"");
643 static Path Key(const QString &s);
644 static Path Current(PathCurrent c);
645 static Path Current(QStringView s=u"");
646 static Path Current(const QString &s);
647 static Path Empty();
648 // add
649 Path empty() const;
650 Path field(const QString &name) const;
651 Path field(QStringView name) const;
652 Path key(const QString &name) const;
653 Path key(QStringView name) const;
654 Path index(index_type i) const;
655 Path any() const;
656 Path filter(const std::function<bool(const DomItem &)> &, const QString &) const;
657 Path filter(const std::function<bool(const DomItem &)> &,
658 QStringView desc=u"<native code filter>") const;
659 Path current(PathCurrent s) const;
660 Path current(const QString &s) const;
661 Path current(QStringView s=u"") const;
662 Path path(const Path &toAdd, bool avoidToAddAsBase = false) const;
663
664 Path expandFront() const;
665 Path expandBack() const;
666
667 Path &operator++();
668 Path operator ++(int);
669
670 // iterator traits
671 using difference_type = long;
673 using pointer = const Component*;
674 using reference = const Path&;
675 using iterator_category = std::forward_iterator_tag;
676
677 static int cmp(const Path &p1, const Path &p2);
678
679private:
680 const Component &component(int i) const;
681 explicit Path(quint16 endOffset, quint16 length,
682 const std::shared_ptr<PathEls::PathData> &data);
683 friend class QQmlJS::Dom::PathEls::TestPaths;
684 friend class FieldFilter;
685 friend size_t qHash(const Path &, size_t);
686
687 Path noEndOffset() const;
688
689 quint16 m_endOffset = 0;
690 quint16 m_length = 0;
691 std::shared_ptr<PathEls::PathData> m_data = {};
692};
693
694inline bool operator==(const Path &lhs, const Path &rhs)
695{
696 return lhs.length() == rhs.length() && Path::cmp(lhs, rhs) == 0;
697}
698inline bool operator!=(const Path &lhs, const Path &rhs)
699{
700 return lhs.length() != rhs.length() || Path::cmp(lhs, rhs) != 0;
701}
702inline bool operator<(const Path &lhs, const Path &rhs)
703{
704 return Path::cmp(lhs, rhs) < 0;
705}
706inline bool operator>(const Path &lhs, const Path &rhs)
707{
708 return Path::cmp(lhs, rhs) > 0;
709}
710inline bool operator<=(const Path &lhs, const Path &rhs)
711{
712 return Path::cmp(lhs, rhs) <= 0;
713}
714inline bool operator>=(const Path &lhs, const Path &rhs)
715{
716 return Path::cmp(lhs, rhs) >= 0;
717}
718
720public:
722 Path operator *() const { return currentEl.head(); }
725 bool operator ==(const PathIterator &o) const { return currentEl == o.currentEl; }
726 bool operator !=(const PathIterator &o) const { return currentEl != o.currentEl; }
727};
728
734
735inline size_t qHash(const Path &path, size_t seed)
736{
737 const size_t bufSize = 256;
738 size_t buf[bufSize];
739 size_t *it = &buf[0];
740 *it++ = path.length();
741 if (path.length()>0) {
742 int iPath = path.length();
743 size_t maxPath = bufSize / 2 - 1;
744 size_t endPath = (size_t(iPath) > maxPath) ? maxPath - iPath : 0;
745 while (size_t(iPath) > endPath) {
746 Path p = path[--iPath];
747 Path::Kind k = p.headKind();
748 *it++ = size_t(k);
749 *it++ = qHash(p.component(0).stringView(), seed)^size_t(p.headRoot())^size_t(p.headCurrent());
750 }
751 }
752
753 // TODO: Get rid of the reinterpret_cast.
754 // Rather hash the path components in a more structured way.
755 return qHash(QByteArray::fromRawData(reinterpret_cast<char *>(&buf[0]), (it - &buf[0])*sizeof(size_t)), seed);
756}
757
759{
760 debug << p.toString();
761 return debug;
762}
763
764} // end namespace Dom
765} // end namespace QQmlJS
766
768
769#endif // QMLDOM_PATH_H
static JNINativeMethod methods[]
NSData * m_data
static QByteArray fromRawData(const char *data, qsizetype size)
Constructs a QByteArray that uses the first size bytes of the data array.
Definition qbytearray.h:409
\inmodule QtCore
\inmodule QtCore
convenience macro creating a new ErrorGroup and registering its groupId as translatable string
Represents a set of tags grouping a set of related error messages.
Represents an error message connected to the dom.
void dump(const Sink &sink) const
bool checkName(QStringView s) const
index_type index(index_type defaultValue=-1) const
QStringView stringView() const
void dump(const Sink &sink, const QString &name, bool hasSquareBrackets) const
void dump(const Sink &sink) const
QStringView stringView() const
bool checkName(QStringView s) const
void dump(const Sink &sink) const
bool checkName(QStringView s) const
bool checkName(QStringView s) const
QStringView stringView() const
void dump(const Sink &sink) const
void dump(const Sink &sink) const
Filter(const std::function< bool(const DomItem &)> &f, QStringView filterDescription=u"<native code filter>")
QStringView stringView() const
std::function< bool(const DomItem &) filterFunction)
index_type index(index_type=-1) const
bool checkName(QStringView s) const
void dump(const Sink &sink) const
void dump(const Sink &sink) const
bool checkName(QStringView s) const
QStringView stringView() const
bool checkName(QStringView s) const
static int cmp(const PathComponent &p1, const PathComponent &p2)
PathComponent & operator=(PathComponent &&)=default
PathComponent & operator=(const PathComponent &)=default
index_type index(index_type defaultValue=-1) const
PathComponent(const PathComponent &)=default
PathComponent(PathComponent &&)=default
void dump(const Sink &sink) const
const Current * asCurrent() const
PathData(const QStringList &strData, const QVector< PathComponent > &components, const std::shared_ptr< PathData > &parent)
QVector< PathComponent > components
PathData(const QStringList &strData, const QVector< PathComponent > &components)
std::shared_ptr< PathData > parent
void dump(const Sink &sink) const
QStringView stringView() const
bool checkName(QStringView s) const
bool operator==(const PathIterator &o) const
bool operator!=(const PathIterator &o) const
static int cmp(const Path &p1, const Path &p2)
Path filter(const std::function< bool(const DomItem &)> &, const QString &) const
Path head() const
Kind headKind() const
std::function< bool(const DomItem &) headFilter)() const
Path dropFront(int n=1) const
Path filter(const std::function< bool(const DomItem &)> &, QStringView desc=u"<native code filter>") const
Path(const PathEls::PathComponent &c)
std::forward_iterator_tag iterator_category
\inmodule QtCore
\inmodule QtCore
Definition qstringview.h:78
QString toString() const
Returns a deep copy of this string view's data as a QString.
Definition qstring.h:1121
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:6018
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:8084
QPixmap p2
QPixmap p1
[0]
QString text
QSet< QString >::iterator it
QList< QVariant > arguments
bool operator>=(const PathComponent &lhs, const PathComponent &rhs)
bool operator<=(const PathComponent &lhs, const PathComponent &rhs)
bool operator==(const PathComponent &lhs, const PathComponent &rhs)
bool operator!=(const PathComponent &lhs, const PathComponent &rhs)
bool operator>(const PathComponent &lhs, const PathComponent &rhs)
bool operator<(const PathComponent &lhs, const PathComponent &rhs)
QDebug operator<<(QDebug d, AST::Node *n)
bool operator!=(const Version &v1, const Version &v2)
qint64 index_type
void sinkEscaped(const Sink &sink, QStringView s, EscapeOptions options)
dumps a string as quoted string (escaping things like quotes or newlines)
bool operator>(const Version &v1, const Version &v2)
size_t qHash(const Path &, size_t)
std::function< void(const ErrorMessage &)> ErrorHandler
bool operator>=(const Version &v1, const Version &v2)
bool operator==(const Version &v1, const Version &v2)
bool operator<=(const Version &v1, const Version &v2)
bool operator<(const Version &v1, const Version &v2)
Combined button and popup list for selecting options.
@ CaseInsensitive
#define Q_DECLARE_TR_FUNCTIONS(context)
static const QCssKnownValue properties[NumProperties - 1]
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
static QDBusError::ErrorType get(const char *name)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
size_t qHash(const QFileSystemWatcherPathKey &key, size_t seed=0)
const char * typeName
static QSet< QByteArray > interfaceNames(int socket)
GLint location
GLenum GLsizei GLsizei GLint * values
[15]
GLuint64 key
GLint GLenum GLint components
GLuint index
[2]
GLenum condition
GLboolean r
[2]
GLuint GLuint end
GLenum GLenum GLsizei const GLuint * ids
GLsizei GLenum GLenum * types
GLenum GLuint GLenum GLsizei length
GLdouble GLdouble right
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLfloat GLfloat f
GLint left
GLenum type
GLuint GLsizei const GLchar * label
[43]
GLenum access
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum target
GLenum GLuint GLintptr offset
GLuint name
GLsizei bufSize
GLsizei GLenum * sources
GLfloat n
GLdouble s
[6]
Definition qopenglext.h:235
GLuint res
const GLubyte * c
GLsizei const GLchar *const * path
GLsizei GLenum GLboolean sink
GLfloat GLfloat p
[1]
static qreal component(const QPointF &point, unsigned int i)
#define QMLDOM_EXPORT
#define QMLDOM_FIELD(name)
static bool fromString(const QMetaObject *mo, QString s, Allocate &&allocate)
static bool isComposite(const QQmlJSScope::ConstPtr &scope)
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
Definition qrandom.cpp:196
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
static void split(QT_FT_Vector *b)
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
static QString dump(const QByteArray &)
static QString canonicalPath(const QString &rootPath)
QLatin1StringView QLatin1String
Definition qstringfwd.h:31
#define QStringLiteral(str)
static const QTextHtmlElement elements[Html_NumElements]
#define Q_GADGET
unsigned short quint16
Definition qtypes.h:48
long long qint64
Definition qtypes.h:60
static const uint base
Definition qurlidna.cpp:20
ReturnedValue read(const char *data)
gzip write("uncompressed data")
manager head(request, this, [this](QRestReply &reply) { if(reply.isSuccess()) })
[6]
char * toString(const MyType &t)
[31]