4#ifndef QQMLDOMEXTERNALITEMS_P_H
5#define QQMLDOMEXTERNALITEMS_P_H
23#include <QtQml/private/qqmljsast_p.h>
24#include <QtQml/private/qqmljsengine_p.h>
25#include <QtQml/private/qqmldirparser_p.h>
26#include <QtQmlCompiler/private/qqmljstyperesolver_p.h>
27#include <QtCore/QMetaType>
55 QString canonicalFilePath()
const;
60 bool cont = OwningItem::iterateDirectSubpaths(self, visitor);
61 cont = cont && self.dvValueLazyField(visitor, Fields::canonicalFilePath, [
this]() {
62 return canonicalFilePath();
65 && self.dvValueLazyField(visitor, Fields::isValid, [
this]() {
return isValid(); });
68 && self.dvValueLazyField(visitor, Fields::code, [
this]() {
return code(); });
74 bool cont = OwningItem::iterateSubOwners(self, visitor);
75 cont = cont && self.field(Fields::components).visitKeys([visitor](
QString,
DomItem &comps) {
77 return comp.
field(Fields::objects).visitIndexes([visitor](
DomItem &qmlObj) {
79 return qmlObjPtr->iterateSubOwners(qmlObj, visitor);
103 bool m_isValid =
false;
111 return std::make_shared<QmlDirectory>(*
this);
115 constexpr static DomType kindValue = DomType::QmlDirectory;
119 int derivedFrom = 0);
124 return std::static_pointer_cast<QmlDirectory>(doCopy(self));
133 bool addQmlFilePath(
QString relativePath);
146 auto copy = std::make_shared<QmldirFile>(*
this);
151 constexpr static DomType kindValue = DomType::QmldirFile;
169 return std::static_pointer_cast<QmldirFile>(doCopy(self));
197 void setFromQmldir();
214 auto copy = std::make_shared<JsFile>(*
this);
219 constexpr static DomType kindValue = DomType::JsFile;
223 Path pathFromTop =
Path(),
int derivedFrom = 0)
231 return std::static_pointer_cast<JsFile>(doCopy(self));
234 std::shared_ptr<QQmlJS::Engine>
engine()
const {
return m_engine; }
238 std::shared_ptr<QQmlJS::Engine> m_engine;
245 std::shared_ptr<OwningItem> doCopy(
DomItem &self)
const override;
248 constexpr static DomType kindValue = DomType::QmlFile;
254 int derivedFrom = 0);
260 return const_cast<QmlFile *
>(
this)->field(self,
name);
265 return std::static_pointer_cast<QmlFile>(doCopy(self));
295 if (
i.uri.isModule()) {
296 m_importScope.addImport((
i.importId.isEmpty()
301 QString path =
i.uri.absoluteLocalPath(canonicalFilePath());
303 m_importScope.addImport((
i.importId.isEmpty()
306 Paths::qmlDirPath(
path));
308 return Path::Field(Fields::imports).index(idx);
310 std::shared_ptr<QQmlJS::Engine>
engine()
const {
return m_engine; }
312 std::shared_ptr<AstComments>
astComments()
const {
return m_astComments; }
320 int idx = m_pragmas.size();
321 m_pragmas.append(pragma);
322 return Path::Field(Fields::pragmas).
index(idx);
327 std::optional<std::shared_ptr<QQmlJSTypeResolver>>
typeResolver()
const
329 return m_typeResolver;
333 m_typeResolver = typeResolver;
338 std::shared_ptr<Engine> m_engine;
340 std::shared_ptr<AstComments> m_astComments;
347 std::optional<std::shared_ptr<QQmlJSTypeResolver>> m_typeResolver;
355 auto res = std::make_shared<QmltypesFile>(*
this);
360 constexpr static DomType kindValue = DomType::QmltypesFile;
373 void ensureInModuleIndex(
DomItem &self);
378 return std::static_pointer_cast<QmltypesFile>(doCopy(self));
401 m_exports.insert(
e.typeName,
e);
402 addUri(
e.uri,
e.version.majorVersion);
410 if (!
v.contains(majorVersion)) {
425 std::shared_ptr<OwningItem> doCopy(
DomItem &)
const override;
428 constexpr static DomType kindValue = DomType::GlobalScope;
443 return std::static_pointer_cast<GlobalScope>(doCopy(self));
452 m_rootComponent = ob;
static constexpr QChar fromLatin1(char c) noexcept
Converts the Latin-1 character c to its equivalent QChar.
\inmodule QtCore\reentrant
static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
void updatePathFromOwner(Path newPath) override
DomItem field(QStringView name)
bool visitIndexes(function_ref< bool(DomItem &)> visitor)
Represents a set of tags grouping a set of related error messages.
Represents an error message connected to the dom.
A OwningItem that refers to an external resource (file,...)
const QString & code() const
QString m_canonicalFilePath
void setIsValid(bool val)
bool iterateSubOwners(DomItem &self, function_ref< bool(DomItem &owner)> visitor) override
ExternalOwningItem(const ExternalOwningItem &o)=default
bool iterateDirectSubpaths(DomItem &self, DirectVisitor visitor) override
std::shared_ptr< AttachedInfoT< FileLocations > > Tree
void setLanguage(Language language)
Language language() const
void setName(QString name)
std::shared_ptr< GlobalScope > makeCopy(DomItem &self) const
void setRootComponent(const GlobalComponent &ob)
DomType kind() const override
GlobalScope(QString filePath=QString(), QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0)
GlobalComponent rootComponent() const
std::shared_ptr< OwningItem > doCopy(DomItem &) const override
std::shared_ptr< JsFile > makeCopy(DomItem &self) const
DomType kind() const override
JsFile(QString filePath=QString(), QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), Path pathFromTop=Path(), int derivedFrom=0)
JsFile(const JsFile &o)=default
JsResource rootComponent() const
std::shared_ptr< QQmlJS::Engine > engine() const
Path index(index_type i) const
std::shared_ptr< QmlDirectory > makeCopy(DomItem &self) const
std::shared_ptr< OwningItem > doCopy(DomItem &) const override
DomType kind() const override
const QMultiMap< QString, QString > & qmlFiles() const &
const QMultiMap< QString, Export > & exports() const &
QmlDirectory(const QmlDirectory &o)=default
const QMultiMap< QString, QmlComponent > & components() const &
void setTypeResolver(const std::shared_ptr< QQmlJSTypeResolver > &typeResolver)
std::optional< std::shared_ptr< QQmlJSTypeResolver > > typeResolver() const
DomItem field(DomItem &self, QStringView name) const override
std::shared_ptr< QQmlJS::Engine > engine() const
std::shared_ptr< AstComments > astComments() const
Path addImport(const Import &i)
void setFileLocationsTree(FileLocations::Tree v)
void setComponents(const QMultiMap< QString, QmlComponent > &components)
void setAstComments(std::shared_ptr< AstComments > comm)
ImportScope & importScope()
const QList< Import > & imports() const &
const QList< Pragma > & pragmas() const &
void setImports(const QList< Import > &imports)
AST::UiProgram * ast() const
RegionComments & comments()
DomType kind() const override
Path addPragma(const Pragma &pragma)
Path addComponent(const QmlComponent &component, AddOption option=AddOption::Overwrite, QmlComponent **cPtr=nullptr)
const ImportScope & importScope() const
void setPragmas(QList< Pragma > pragmas)
std::shared_ptr< QmlFile > makeCopy(DomItem &self) const
FileLocations::Tree fileLocationsTree() const
const QSet< int > & majorVersions() const &
const QList< Import > & imports() const &
DomType kind() const override
std::shared_ptr< QmldirFile > makeCopy(DomItem &self) const
QmldirFile(const QmldirFile &o)=default
QmldirFile(QString filePath=QString(), QString code=QString(), QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0)
QStringList classNames() const
bool designerSupported() const
const QMultiMap< QString, Export > & exports() const &
std::shared_ptr< OwningItem > doCopy(DomItem &) const override
const QList< Path > & qmltypesFilePaths() const &
const QList< Export > & exports() const &
DomType kind() const override
QmltypesFile(const QmltypesFile &o)=default
QmltypesFile(QString filePath=QString(), QString code=QString(), QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0)
const QList< Import > & imports() const &
const QMultiMap< QString, QmltypesComponent > & components() const &
std::shared_ptr< QmltypesFile > makeCopy(DomItem &self) const
void setExports(QMultiMap< QString, Export > e)
void setComponents(QMultiMap< QString, QmltypesComponent > c)
Path addComponent(const QmltypesComponent &comp, AddOption option=AddOption::Overwrite, QmltypesComponent **cPtr=nullptr)
void addUri(QString uri, int majorVersion)
std::shared_ptr< OwningItem > doCopy(DomItem &) const override
const QMultiMap< QString, Export > & exports() const &
const QMap< QString, QSet< int > > & uris() const &
Path addExport(const Export &e)
void addImport(const Import i)
iterator insert(const T &value)
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isNull() const
Returns true if this string is null; otherwise returns false.
Path insertUpdatableElementInMultiMap(Path mapPathFromOwner, QMultiMap< K, T > &mmap, K key, const T &value, AddOption option=AddOption::KeepExisting, T **valuePtr=nullptr)
Combined button and popup list for selecting options.
static jboolean copy(JNIEnv *, jobject)
#define Q_DECLARE_TR_FUNCTIONS(context)
GLsizei const GLfloat * v
[13]
GLint GLenum GLint components
GLsizei const GLchar *const * path
static qreal component(const QPointF &point, unsigned int i)
static QString canonicalPath(const QString &rootPath)