4#ifndef QQMLDOMELEMENTS_P_H
5#define QQMLDOMELEMENTS_P_H
23#include <QtQml/private/qqmljsast_p.h>
24#include <QtQml/private/qqmljsengine_p.h>
25#include <QtQml/private/qqmlsignalnames_p.h>
27#include <QtCore/QCborValue>
28#include <QtCore/QCborMap>
29#include <QtCore/QMutexLocker>
30#include <QtCore/QPair>
33#include <private/qqmljsscope_p.h>
84 .
field(Fields::components)
87 .
field(Fields::objects)
163 constexpr static DomType kindValue = DomType::Version;
172 bool isLatest()
const;
173 bool isValid()
const;
177 if (majorVersion >= 0 || majorVersion ==
Undefined)
183 if (majorVersion == Version::Latest)
185 if (majorVersion >= 0 || majorVersion ==
Undefined)
191 if (minorVersion >= 0 || minorVersion ==
Undefined)
197 int c = majorVersion -
o.majorVersion;
200 return minorVersion -
o.minorVersion;
208 return v1.compare(
v2) == 0;
212 return v1.compare(
v2) != 0;
216 return v1.compare(
v2) < 0;
220 return v1.compare(
v2) <= 0;
224 return v1.compare(
v2) > 0;
228 return v1.compare(
v2) >= 0;
252 return i1.m_kind == i2.m_kind && i1.m_value == i2.m_value;
259 Kind m_kind = Kind::Invalid;
260 std::variant<QString, QUrl> m_value;
267 constexpr static DomType kindValue = DomType::Import;
278 : uri(uri), version(version), importId(importId)
285 if (uri.isDirectory()) {
287 if (!
path.isEmpty()) {
288 return Paths::qmlDirPath(
path);
290 Q_ASSERT_X(
false,
"Import",
"url imports not supported");
291 return Paths::qmldirFilePath(uri.directoryString());
294 return Paths::moduleScopePath(uri.moduleUri(), version);
301 return i1.uri == i2.uri && i1.version == i2.version && i1.importId == i2.importId
302 && i1.comments == i2.comments && i1.implicit == i2.implicit;
314 bool implicit =
false;
320 constexpr static DomType kindValue = DomType::ModuleAutoExport;
325 cont = cont && self.dvWrapField(visitor, Fields::import,
import);
326 cont = cont && self.dvValueField(visitor, Fields::inheritVersion, inheritVersion);
332 return i1.import == i2.import && i1.inheritVersion == i2.inheritVersion;
340 bool inheritVersion =
false;
346 constexpr static DomType kindValue = DomType::Pragma;
355 bool cont = self.dvValueField(visitor, Fields::name,
name);
356 cont = cont && self.dvValueField(visitor, Fields::values,
values);
357 cont = cont && self.dvWrapField(visitor, Fields::comments, comments);
371 constexpr static DomType kindValue = DomType::Id;
383 std::shared_ptr<ScriptExpression>
value;
404 constexpr static DomType kindValue = DomType::ScriptExpression;
409 const std::shared_ptr<AstComments> &comments,
ExpressionType expressionType,
423 :
OwningItem(derivedFrom), m_expressionType(expressionType)
425 setCode(code, preCode, postCode);
432 return std::static_pointer_cast<ScriptExpression>(doCopy(self));
457 return m_expressionType;
463 return m_code.isNull();
465 std::shared_ptr<QQmlJS::Engine>
engine()
const
470 std::shared_ptr<AstComments>
astComments()
const {
return m_astComments; }
482 return std::make_shared<ScriptExpression>(*
this);
490 x.startLine - m_localOffset.startLine + loc.
startLine,
491 ((
x.startLine == m_localOffset.startLine) ?
x.startColumn
500 x.offset - m_localOffset.offset,
x.length,
x.startLine - m_localOffset.startLine,
501 ((
x.startLine == m_localOffset.startLine)
502 ?
x.startColumn - m_localOffset.startColumn
512 enum class ParseMode {
518 inline ParseMode resolveParseMode()
520 switch (m_expressionType) {
521 case ExpressionType::BindingExpression:
524 return ParseMode::QML;
525 case ExpressionType::ESMCode:
526 return ParseMode::ESM;
528 return ParseMode::JS;
532 [[nodiscard]] AST::Node *parse(ParseMode
mode);
534 ExpressionType m_expressionType;
539 mutable std::shared_ptr<QQmlJS::Engine> m_engine;
540 mutable AST::Node *m_ast;
541 std::shared_ptr<AstComments> m_astComments;
542 SourceLocation m_localOffset;
543 ScriptElementVariant m_element;
551 constexpr static DomType kindValue = DomType::Binding;
554 std::unique_ptr<BindingValue>
value = std::unique_ptr<BindingValue>(),
582 void setAnnotations(
const QList<QmlObject> &annotations) { m_annotations = annotations; }
610 std::unique_ptr<BindingValue> m_value;
611 QList<QmlObject> m_annotations;
633 bool isReadonly =
false;
642 enum class Status {
Invalid, ResolvedProperty, ResolvedObject, Loop, TooDeep };
646 case Status::ResolvedProperty:
647 case Status::ResolvedObject:
664 constexpr static DomType kindValue = DomType::PropertyDefinition;
668 bool cont = AttributeInfo::iterateDirectSubpaths(self, visitor);
669 cont = cont && self.dvValueField(visitor, Fields::isPointer, isPointer);
670 cont = cont && self.dvValueField(visitor, Fields::isFinal, isFinal);
671 cont = cont && self.dvValueField(visitor, Fields::isAlias, isAlias());
672 cont = cont && self.dvValueField(visitor, Fields::isDefaultMember, isDefaultMember);
673 cont = cont && self.dvValueField(visitor, Fields::isRequired, isRequired);
674 cont = cont && self.dvValueField(visitor, Fields::read,
read);
675 cont = cont && self.dvValueField(visitor, Fields::write,
write);
676 cont = cont && self.dvValueField(visitor, Fields::bindable, bindable);
677 cont = cont && self.dvValueField(visitor, Fields::notify, notify);
678 cont = cont && self.dvReferenceField(visitor, Fields::type, typePath());
679 if (m_nameIdentifiers) {
680 cont = cont && self.dvItemField(visitor, Fields::nameIdentifiers, [
this, &self]() {
681 return self.subScriptElementWrapperItem(m_nameIdentifiers);
699 bool isFinal =
false;
700 bool isPointer =
false;
701 bool isDefaultMember =
false;
702 bool isRequired =
false;
709 constexpr static DomType kindValue = DomType::PropertyInfo;
720 constexpr static DomType kindValue = DomType::MethodParameter;
729 bool isPointer =
false;
730 bool isReadonly =
false;
732 bool isRestElement =
false;
739 std::shared_ptr<ScriptExpression>
value;
765 body = std::make_shared<ScriptExpression>(
766 code, ScriptExpression::ExpressionType::FunctionBody, 0,
774 std::shared_ptr<ScriptExpression>
body;
776 bool isConstructor =
false;
782 constexpr static DomType kindValue = DomType::EnumItem;
789 double value()
const {
return m_value; }
803 constexpr static DomType kindValue = DomType::EnumDecl;
816 const QList<EnumItem> &
values() const & {
return m_values; }
824 m_values.append(
value);
825 return Path::Field(Fields::values).
index(
index_type(m_values.size() - 1));
829 const QList<QmlObject> &
annotations() const & {
return m_annotations; }
836 bool m_isFlag =
false;
838 QList<EnumItem> m_values;
839 QList<QmlObject> m_annotations;
846 constexpr static DomType kindValue = DomType::QmlObject;
864 const QMultiMap<QString, PropertyDefinition> &
propertyDefs() const & {
return m_propertyDefs; }
865 const QMultiMap<QString, Binding> &
bindings() const & {
return m_bindings; }
866 const QMultiMap<QString, MethodInfo> &
methods() const & {
return m_methods; }
867 QList<QmlObject>
children()
const {
return m_children; }
879 m_prototypePaths.append(prototypePath);
881 return Path::Field(Fields::prototypes).index(idx);
886 m_propertyDefs = propertyDefs;
888 void setBindings(QMultiMap<QString, Binding> bindings) { m_bindings = bindings; }
889 void setMethods(QMultiMap<QString, MethodInfo> functionDefs) { m_methods = functionDefs; }
892 m_children = children;
894 updatePathFromOwner(pathFromOwner());
898 m_annotations = annotations;
900 updatePathFromOwner(pathFromOwner());
906 m_propertyDefs, propertyDef.name, propertyDef,
921 functionDef.name, functionDef,
option, mPtr);
937 m_annotations, annotation, aPtr);
943 std::shared_ptr<ScriptExpression> accessSequence)
const;
956 QList<Path> m_prototypePaths;
957 Path m_nextScopePath;
959 QMultiMap<QString, PropertyDefinition> m_propertyDefs;
960 QMultiMap<QString, Binding> m_bindings;
961 QMultiMap<QString, MethodInfo> m_methods;
962 QList<QmlObject> m_children;
963 QList<QmlObject> m_annotations;
978 cont = cont && self.dvValueField(visitor, Fields::uri,
uri);
979 cont = cont && self.dvValueField(visitor, Fields::typeName,
typeName);
980 cont = cont && self.dvWrapField(visitor, Fields::version,
version);
982 cont = cont && self.dvReferenceField(visitor, Fields::type,
typePath);
983 cont = cont && self.dvValueField(visitor, Fields::isInternal,
isInternal);
984 cont = cont && self.dvValueField(visitor, Fields::isSingleton,
isSingleton);
986 cont = cont && self.dvReferenceField(visitor, Fields::exportSource,
exportSourcePath);
1008 void updatePathFromOwner(
const Path &newPath)
override;
1012 const QMultiMap<QString, EnumDecl> &
enumerations() const & {
return m_enumerations; }
1013 const QList<QmlObject> &
objects() const & {
return m_objects; }
1023 m_enumerations = enumerations;
1029 m_enumerations, enumeration.
name(), enumeration,
1032 void setObjects(
const QList<QmlObject> &objects) { m_objects = objects; }
1043 QMultiMap<QString, EnumDecl> m_enumerations;
1044 QList<QmlObject> m_objects;
1045 bool m_isSingleton =
false;
1046 bool m_isCreatable =
true;
1047 bool m_isComposite =
true;
1049 Path m_attachedTypePath;
1055 constexpr static DomType kindValue = DomType::JsResource;
1069 constexpr static DomType kindValue = DomType::QmltypesComponent;
1074 const QList<Export> &
exports() const & {
return m_exports; }
1100 QList<Export> m_exports;
1101 QList<int> m_metaRevisions;
1104 bool m_hasCustomParser =
false;
1105 bool m_extensionIsJavaScript =
false;
1106 bool m_extensionIsNamespace =
false;
1116 constexpr static DomType kindValue = DomType::QmlComponent;
1121 setIsComposite(
true);
1122 setIsCreatable(
true);
1127 const QMultiMap<QString, Id> &
ids() const & {
return m_ids; }
1131 void updatePathFromOwner(
const Path &newPath)
override;
1139 QList<QString> subComponentsNames(
const DomItem &self)
const;
1140 QList<DomItem> subComponents(
const DomItem &self)
const;
1149 Path m_nextComponentPath;
1150 QMultiMap<QString, Id> m_ids;
1160 constexpr static DomType kindValue = DomType::GlobalComponent;
1172 constexpr static DomType kindValue = DomType::ImportScope;
1179 const QMap<QString, ImportScope> &
subImports() const & {
return m_subImports; }
1186 const auto sources = allSources(self);
1188 QSet<QString> ks = self.path(
p.field(Fields::exports), self.errorHandler()).
keys();
1197 const auto sources = allSources(self);
1199 DomItem source = self.path(
p.field(Fields::exports), self.errorHandler());
1202 for (
int i = 0;
i < nEls; ++
i)
1203 res.append(els.index(
i));
1204 if (nEls == 0 && els) {
1206 tr(
"Looking up '%1' expected a list of exports, not %2")
1216 for (
const DomItem &
i : importedItemsWithName(self,
name))
1221 tr(
"Expected Export looking up '%1', not %2").
arg(
name,
i.toString())));
1230 const QString current =
p.takeFirst();
1231 m_subImports[current].addImport(std::move(
p), targetExports);
1232 }
else if (!m_importSourcePaths.contains(targetExports)) {
1233 m_importSourcePaths.
append(targetExports);
1238 QList<Path> m_importSourcePaths;
1239 QMap<QString, ImportScope> m_subImports;
void setSemanticScope(const QQmlJSScope::ConstPtr &scope)
QQmlJSScope::ConstPtr m_semanticScope
void updatePathFromOwner(const Path &newPath)
QQmlJSScope::ConstPtr semanticScope() const
QList< QmlObject > annotations
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
Path addAnnotation(const Path &selfPathFromOwner, const QmlObject &annotation, QmlObject **aPtr=nullptr)
BindingValue(const QList< QmlObject > &l)
void updatePathFromOwner(const Path &newPath)
BindingValue(const std::shared_ptr< ScriptExpression > &o)
BindingValue(const BindingValue &o)
DomItem value(const DomItem &binding) const
BindingValue & operator=(const BindingValue &o)
std::shared_ptr< ScriptExpression > scriptExpression
BindingValue(const QmlObject &o)
void setValue(std::unique_ptr< BindingValue > &&value)
BindingType bindingType() const
std::shared_ptr< ScriptExpression > scriptExpressionValue() const
Binding(const QString &m_name, const QList< QmlObject > &value, BindingType bindingType=BindingType::Normal)
RegionComments & comments()
Binding & operator=(const Binding &)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor) const
void setBindingIdentifiers(const ScriptElementVariant &bindingIdentifiers)
Path addAnnotation(const Path &selfPathFromOwner, const QmlObject &a, QmlObject **aPtr=nullptr)
QList< QmlObject > annotations() const
void updatePathFromOwner(const Path &newPath)
static QString preCodeForName(QStringView n)
QmlObject const * objectValue() const
DomItem valueItem(const DomItem &self) const
QList< QmlObject > * arrayValue()
Binding(const Binding &o)
QList< QmlObject > const * arrayValue() const
static QString postCodeForName(QStringView)
void setAnnotations(const QList< QmlObject > &annotations)
Binding & operator=(Binding &&)=default
void writeOut(const DomItem &self, OutWriter &lw) const
Binding(const QString &m_name=QString(), std::unique_ptr< BindingValue > value=std::unique_ptr< BindingValue >(), BindingType bindingType=BindingType::Normal)
Binding(const QString &m_name, const QString &scriptCode, BindingType bindingType=BindingType::Normal)
const RegionComments & comments() const
bool isSignalHandler() const
void writeOutValue(const DomItem &self, OutWriter &lw) const
Binding(const QString &m_name, const QmlObject &value, BindingType bindingType=BindingType::Normal)
Binding(Binding &&o)=default
QmlObject * objectValue()
std::shared_ptr< ScriptExpression > scriptExpressionValue()
ScriptElementVariant bindingIdentifiers() const
BindingValueKind valueKind() const
Binding(const QString &m_name, const std::shared_ptr< ScriptExpression > &value, BindingType bindingType=BindingType::Normal)
void setIsSingleton(bool isSingleton)
void setIsComposite(bool isComposite)
Component & operator=(const Component &)=default
void setIsCreatable(bool isCreatable)
void setObjects(const QList< QmlObject > &objects)
const QMultiMap< QString, EnumDecl > & enumerations() const &
Component(const Component &o)=default
void setEnumerations(QMultiMap< QString, EnumDecl > enumerations)
void setName(const QString &name)
Path attachedTypePath(const DomItem &) const
Path addEnumeration(const EnumDecl &enumeration, AddOption option=AddOption::Overwrite, EnumDecl **ePtr=nullptr)
void setAttachedTypeName(const QString &name)
QString attachedTypeName() const
void setAttachedTypePath(const Path &p)
const QList< QmlObject > & objects() const &
static ErrorGroup domErrorGroup
index_type indexes() const
DomItem key(const QString &name) const
const QList< QmlObject > & annotations() const &
void setValues(QList< EnumItem > values)
const QList< EnumItem > & values() const &
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
Path addValue(EnumItem value)
void setAlias(const QString &aliasName)
void setAnnotations(const QList< QmlObject > &annotations)
void writeOut(const DomItem &self, OutWriter &lw) const override
void updatePathFromOwner(const Path &newP) override
void setName(const QString &name)
Path addAnnotation(const QmlObject &child, QmlObject **cPtr=nullptr)
void setIsFlag(bool flag)
EnumDecl(const QString &name=QString(), QList< EnumItem > values=QList< EnumItem >(), Path pathFromOwner=Path())
DomType kind() const override
const RegionComments & comments() const
RegionComments & comments()
EnumItem(const QString &name=QString(), int value=0)
void writeOut(const DomItem &self, OutWriter &lw) const
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
Represents a set of tags grouping a set of related error messages.
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
static constexpr DomType kindValue
static Export fromString(const Path &source, QStringView exp, const Path &typePath, const ErrorHandler &h)
GlobalComponent(const Path &pathFromOwner=Path())
DomType kind() const override
Path addAnnotation(const Path &selfPathFromOwner, const QmlObject &ann, QmlObject **aPtr=nullptr)
std::shared_ptr< ScriptExpression > value
Id(const QString &idName=QString(), const Path &referredObject=Path())
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor) const
void updatePathFromOwner(const Path &pathFromOwner)
QList< QmlObject > annotations
const QList< Path > & importSourcePaths() const &
void addImport(QStringList p, const Path &targetExports)
const QMap< QString, ImportScope > & subImports() const &
QList< DomItem > importedItemsWithName(const DomItem &self, const QString &name) const
QList< Export > importedExportsWithName(const DomItem &self, const QString &name) const
QSet< QString > importedNames(const DomItem &self) const
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
QList< Path > allSources(const DomItem &self) const
Import(const QmlUri &uri=QmlUri(), Version version=Version(), const QString &importId=QString())
Import baseImport() const
static Import fromUriString(const QString &importStr, Version v=Version(), const QString &importId=QString(), const ErrorHandler &handler=nullptr)
friend bool operator==(const Import &i1, const Import &i2)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor) const
Path importedPath() const
void writeOut(const DomItem &self, OutWriter &ow) const
static Import fromFileString(const QString &importStr, const QString &importId=QString(), const ErrorHandler &handler=nullptr)
friend bool operator!=(const Import &i1, const Import &i2)
JsResource(const Path &pathFromOwner=Path())
DomType kind() const override
bool iterateDirectSubpaths(const DomItem &, DirectVisitor) const override
std::shared_ptr< ScriptExpression > body
QString postCode(const DomItem &) const
QString preCode(const DomItem &) const
QList< MethodParameter > parameters
std::shared_ptr< ScriptExpression > returnType
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
void writeOut(const DomItem &self, OutWriter &ow) const
void writePre(const DomItem &self, OutWriter &ow) const
void setCode(const QString &code)
std::shared_ptr< ScriptExpression > defaultValue
void writeOut(const DomItem &self, OutWriter &ow) const
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
void writeOutSignal(const DomItem &self, OutWriter &ow) const
std::shared_ptr< ScriptExpression > value
QList< QmlObject > annotations
friend bool operator==(const ModuleAutoExport &i1, const ModuleAutoExport &i2)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
friend bool operator!=(const ModuleAutoExport &i1, const ModuleAutoExport &i2)
static Path Root(PathRoot r)
Path key(const QString &name) const
Path field(const QString &name) const
Path index(index_type i) const
static Path Current(PathCurrent c)
Pragma(const QString &pragmaName=QString(), const QStringList &pragmaValues={})
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
void writeOut(const DomItem &self, OutWriter &ow) const
ScriptElementVariant m_nameIdentifiers
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
bool isParametricType() const
void writeOut(const DomItem &self, OutWriter &lw) const
ScriptElementVariant nameIdentifiers() const
void setNameIdentifiers(const ScriptElementVariant &name)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const
QList< DomItem > propertyDefs
QList< DomItem > bindings
QQmlJSScope::ConstPtr semanticScope() const
void setNextComponentPath(const Path &p)
void setIds(QMultiMap< QString, Id > ids)
const QMultiMap< QString, Id > & ids() const &
void setNameIdentifiers(const ScriptElementVariant &name)
void setSemanticScope(const QQmlJSScope::ConstPtr &scope)
QmlComponent(const QString &name=QString())
Path nextComponentPath() const
Path addId(const Id &id, AddOption option=AddOption::Overwrite, Id **idPtr=nullptr)
ScriptElementVariant nameIdentifiers() const
DomType kind() const override
QList< QString > fields(const DomItem &) const override
void setNameIdentifiers(const ScriptElementVariant &name)
void writeOut(const DomItem &self, OutWriter &ow, const QString &onTarget) const
MutableDomItem addBinding(MutableDomItem &self, Binding binding, AddOption option)
ScriptElementVariant nameIdentifiers() const
void setName(const QString &name)
MutableDomItem addChild(MutableDomItem &self, QmlObject child)
void setBindings(QMultiMap< QString, Binding > bindings)
void setAnnotations(const QList< QmlObject > &annotations)
Path addChild(QmlObject child, QmlObject **cPtr=nullptr)
const QMultiMap< QString, Binding > & bindings() const &
DomType kind() const override
void setNextScopePath(const Path &nextScopePath)
void updatePathFromOwner(const Path &newPath) override
void setChildren(const QList< QmlObject > &children)
Path addAnnotation(const QmlObject &annotation, QmlObject **aPtr=nullptr)
LocallyResolvedAlias resolveAlias(const DomItem &self, std::shared_ptr< ScriptExpression > accessSequence) const
QList< QmlObject > children() const
LocallyResolvedAlias resolveAlias(const DomItem &self, const QStringList &accessSequence) const
const QList< Path > & prototypePaths() const &
virtual bool iterateSubOwners(const DomItem &self, function_ref< bool(const DomItem &owner)> visitor) const
Path addPropertyDef(const PropertyDefinition &propertyDef, AddOption option, PropertyDefinition **pDef=nullptr)
const QMultiMap< QString, MethodInfo > & methods() const &
Path addBinding(Binding binding, AddOption option, Binding **bPtr=nullptr)
MutableDomItem addPropertyDef(MutableDomItem &self, const PropertyDefinition &propertyDef, AddOption option)
DomItem field(const DomItem &self, QStringView name) const override
QString localDefaultPropertyName() const
void setPropertyDefs(QMultiMap< QString, PropertyDefinition > propertyDefs)
QString defaultPropertyName(const DomItem &self) const
QmlObject(const Path &pathFromOwner=Path())
MutableDomItem addMethod(MutableDomItem &self, const MethodInfo &functionDef, AddOption option)
Path nextScopePath() const
void setIdStr(const QString &id)
QQmlJSScope::ConstPtr semanticScope() const
const QMultiMap< QString, PropertyDefinition > & propertyDefs() const &
void writeOut(const DomItem &self, OutWriter &lw) const override
Path addPrototypePath(const Path &prototypePath)
void setSemanticScope(const QQmlJSScope::ConstPtr &scope)
void setDefaultPropertyName(const QString &name)
QList< QmlObject > annotations() const
QList< QString > fields() const
void setPrototypePaths(QList< Path > prototypePaths)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor) const override
void setMethods(QMultiMap< QString, MethodInfo > functionDefs)
Path addMethod(const MethodInfo &functionDef, AddOption option, MethodInfo **mPtr=nullptr)
bool iterateBaseDirectSubpaths(const DomItem &self, DirectVisitor) const
QString absoluteLocalPath(const QString &basePath=QString()) const
static QmlUri fromDirectoryString(const QString &importStr)
QUrl directoryUrl() const
QString directoryString() const
static QmlUri fromUriString(const QString &importStr)
QString localPath() const
static QmlUri fromString(const QString &importStr)
QString moduleUri() const
friend bool operator==(const QmlUri &i1, const QmlUri &i2)
friend bool operator!=(const QmlUri &i1, const QmlUri &i2)
void setValueTypeName(const QString &name)
void setHasCustomParser(bool v)
void setInterfaceNames(const QStringList &interfaces)
QQmlJSScope::AccessSemantics accessSemantics() const
void setFileName(const QString &fileName)
bool extensionIsJavaScript() const
bool hasCustomParser() const
QQmlJSScope::ConstPtr semanticScope() const
void setAccessSemantics(QQmlJSScope::AccessSemantics v)
void setSemanticScope(const QQmlJSScope::ConstPtr &scope)
QString extensionTypeName() const
bool iterateDirectSubpaths(const DomItem &, DirectVisitor) const override
bool extensionIsNamespace() const
QString valueTypeName() const
void setExports(QList< Export > exports)
void setMetaRevisions(QList< int > metaRevisions)
void setExtensionTypeName(const QString &name)
void setExtensionIsJavaScript(bool v)
void setExtensionIsNamespace(bool v)
const QList< int > & metaRevisions() const &
const QList< Export > & exports() const &
void addExport(const Export &exportedEntry)
const QStringList & interfaceNames() const &
QmltypesComponent(const Path &pathFromOwner=Path())
DomType kind() const override
Use this to contain any script element.
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
QStringView preCode() const
ScriptExpression(const QString &code, ExpressionType expressionType, int derivedFrom=0, const QString &preCode=QString(), const QString &postCode=QString())
DomType kind() const override
std::shared_ptr< AstComments > astComments() const
std::shared_ptr< QQmlJS::Engine > engine() const
std::shared_ptr< ScriptExpression > makeCopy(const DomItem &self) const
ScriptExpression(const ScriptExpression &e)
ExpressionType expressionType() const
void writeOut(const DomItem &self, OutWriter &lw) const override
SourceLocation globalLocation(const DomItem &self) const
QStringView postCode() const
QString astRelocatableDump() const
void setScriptElement(const ScriptElementVariant &p)
std::shared_ptr< OwningItem > doCopy(const DomItem &) const override
SourceLocation locationToLocal(SourceLocation x) const
std::function< SourceLocation(SourceLocation)> locationToLocalF(const DomItem &) const
ScriptElementVariant scriptElement()
void astDumper(const Sink &s, AstDumperOptions options) const
ScriptExpression(QStringView code, const std::shared_ptr< QQmlJS::Engine > &engine, AST::Node *ast, const std::shared_ptr< AstComments > &comments, ExpressionType expressionType, SourceLocation localOffset=SourceLocation(), int derivedFrom=0, QStringView preCode=QStringView(), QStringView postCode=QStringView())
std::function< SourceLocation(SourceLocation)> locationToGlobalF(const DomItem &self) const
std::shared_ptr< ScriptExpression > copyWithUpdatedCode(const DomItem &self, const QString &code) const
SourceLocation localOffset() const
Path canonicalPath(const DomItem &self) const override
QString majorString() const
int compare(const Version &o) const
QString minorString() const
QString majorSymbolicString() const
static bool isHandlerName(QStringView signalName)
\inmodule QtCore \reentrant
QString toString() const
Returns a deep copy of this string view's data as a QString.
\macro QT_RESTRICTED_CAST_FROM_ASCII
QStringList split(const QString &sep, Qt::SplitBehavior behavior=Qt::KeepEmptyParts, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Splits the string into substrings wherever sep occurs, and returns the list of those strings.
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QString & append(QChar c)
Path moduleIndexPath(const QString &uri, int majorVersion, const ErrorHandler &errorHandler)
Path lookupTypePath(const QString &name)
Path loadInfoPath(const Path &el)
Path qmltypesFilePath(const QString &path)
Path jsFilePath(const QString &path)
Path lookupCppTypePath(const QString &name)
Path qmlFileInfoPath(const QString &canonicalFilePath)
Path qmlFilePath(const QString &canonicalFilePath)
Path globalScopePath(const QString &name)
Path lookupSymbolPath(const QString &name)
Path jsFileInfoPath(const QString &path)
Path lookupPropertyPath(const QString &name)
Path qmlDirPath(const QString &path)
Path qmlDirectoryPath(const QString &path)
Path qmldirFilePath(const QString &path)
Path qmlDirectoryInfoPath(const QString &path)
Path qmltypesFileInfoPath(const QString &path)
Path qmldirFileInfoPath(const QString &path)
Path qmlDirInfoPath(const QString &path)
Path qmlFileObjectPath(const QString &canonicalFilePath)
Path globalScopeInfoPath(const QString &name)
Path moduleScopePath(const QString &uri, Version version, const ErrorHandler &)
Path appendUpdatableElementInQList(const Path &listPathFromOwner, QList< T > &list, const T &value, T **vPtr=nullptr)
Path insertUpdatableElementInMultiMap(const Path &mapPathFromOwner, QMultiMap< K, T > &mmap, K key, const T &value, AddOption option=AddOption::KeepExisting, T **valuePtr=nullptr)
bool operator!=(const Version &v1, const Version &v2)
bool operator>(const Version &v1, const Version &v2)
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)
static ErrorGroups importErrors
Combined button and popup list for selecting options.
#define Q_DECLARE_TR_FUNCTIONS(context)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLint GLfloat GLfloat GLfloat v2
GLenum GLsizei GLsizei GLint * values
[15]
GLsizei const GLfloat * v
[13]
GLint GLint GLint GLint GLint x
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLenum GLsizei const GLuint * ids
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLsizei GLchar * source
GLsizei const GLchar *const * path
#define NewErrorGroup(name)
static bool fromString(const QMetaObject *mo, QString s, Allocate &&allocate)
static bool isComposite(const QQmlJSScope::ConstPtr &scope)
#define Q_ASSERT_X(cond, x, msg)
QLatin1StringView QLatin1String
#define QStringLiteral(str)
ReturnedValue read(const char *data)
gzip write("uncompressed data")
QUrl url("example.com")
[constructor-url-reference]
\inmodule QtCore \reentrant