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>
140 QMetaEnum metaEnum = QMetaEnum::fromType<PathRoot>();
142 for (
int i = 0;
i < metaEnum.keyCount(); ++
i)
165 Q_ASSERT(
false &&
"Unexpected contextKind in name");
171 return s.startsWith(QChar::fromLatin1(
'$')) &&
s.mid(1) ==
contextName;
186 QMetaEnum metaEnum = QMetaEnum::fromType<PathCurrent>();
188 for (
int i = 0;
i < metaEnum.keyCount(); ++
i)
219 Q_ASSERT(
false &&
"Unexpected contextKind in Current::name");
225 return s.startsWith(QChar::fromLatin1(
'@')) &&
s.mid(1) ==
contextName;
249 QStringView filterDescription = u
"<native code filter>");
273 return std::visit([](
auto &&
d) {
return d.name(); },
m_data);
278 return std::visit([
s](
auto &&
d) {
return d.checkName(
s); },
m_data);
283 return std::visit([](
auto &&
d) {
return d.stringView(); },
m_data);
288 return std::visit([defaultValue](
auto &&
d) {
return d.index(defaultValue); },
m_data);
298 return std::visit([](
auto &&
d) {
return d.hasSquareBrackets(); },
m_data);
323 friend class QQmlJS::Dom::PathEls::TestPaths;
325 using Variant = std::variant<Empty, Field, Index, Key, Root, Current, Any, Filter>;
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>;
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);
357 const std::shared_ptr<PathData> &
parent)
368#define QMLDOM_USTRING(s) u##s
369#define QMLDOM_FIELD(name) inline constexpr const auto name = QMLDOM_USTRING(#name)
604 *
this = appendComponent(
c);
608 Path operator[](
int i)
const;
609 explicit operator bool()
const;
616 Kind headKind()
const;
627 Path dropFront(
int n = 1)
const;
628 Path dropTail(
int n = 1)
const;
662 Path path(
const Path &toAdd,
bool avoidToAddAsBase =
false)
const;
664 Path expandFront()
const;
665 Path expandBack()
const;
668 Path operator ++(
int);
682 const std::shared_ptr<PathEls::PathData> &
data);
683 friend class QQmlJS::Dom::PathEls::TestPaths;
685 friend size_t qHash(
const Path &,
size_t);
687 Path noEndOffset()
const;
691 std::shared_ptr<PathEls::PathData>
m_data = {};
739 size_t *
it = &
buf[0];
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) {
749 *
it++ =
qHash(
p.component(0).stringView(),
seed)^size_t(
p.headRoot())^size_t(
p.headCurrent());
static JNINativeMethod methods[]
static QByteArray fromRawData(const char *data, qsizetype size)
Constructs a QByteArray that uses the first size bytes of the data array.
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.
bool hasSquareBrackets() const
void dump(const Sink &sink) const
bool checkName(QStringView s) const
bool hasSquareBrackets() 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)
bool hasSquareBrackets() const
QStringView filterDescription
index_type index(index_type=-1) const
bool hasSquareBrackets() const
bool checkName(QStringView s) const
void dump(const Sink &sink) const
bool hasSquareBrackets() const
void dump(const Sink &sink) const
bool checkName(QStringView s) const
QStringView stringView() const
const Key * asKey() const
const Index * asIndex() const
const Filter * asFilter() const
const Empty * asEmpty() const
const Any * asAny() const
bool checkName(QStringView s) const
static int cmp(const PathComponent &p1, const PathComponent &p2)
QStringView stringView() const
PathComponent & operator=(PathComponent &&)=default
const Field * asField() const
PathComponent & operator=(const PathComponent &)=default
index_type index(index_type defaultValue=-1) const
PathComponent(const PathComponent &)=default
PathComponent(Filter &&o)
PathComponent(PathComponent &&)=default
void dump(const Sink &sink) const
const Current * asCurrent() const
PathComponent(Current &&o)
const Root * asRoot() const
bool hasSquareBrackets() 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
PathIterator operator++()
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
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
QString toString() const
Returns a deep copy of this string view's data as a QString.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
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)
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.
#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)
static QSet< QByteArray > interfaceNames(int socket)
GLenum GLsizei GLsizei GLint * values
[15]
GLint GLenum GLint components
GLenum GLenum GLsizei const GLuint * ids
GLsizei GLenum GLenum * types
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint GLsizei const GLchar * label
[43]
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLuint GLintptr offset
GLsizei const GLchar *const * path
GLsizei GLenum GLboolean sink
static qreal component(const QPointF &point, unsigned int i)
#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
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
#define QStringLiteral(str)
static const QTextHtmlElement elements[Html_NumElements]
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]