22#include <QtCore/QQueue>
23#include <QtCore/QString>
24#include <QtCore/QDateTime>
26#include <QtCore/QCborValue>
27#include <QtCore/QCborMap>
67 constexpr static DomType kindValue = DomType::ExternalItemPair;
74 validExposedAt(validExposedAt),
75 currentExposedAt(currentExposedAt)
78 OwningItem(
o), validExposedAt(
o.validExposedAt), currentExposedAt(
o.currentExposedAt)
80 virtual std::shared_ptr<ExternalOwningItem>
validItem()
const = 0;
82 virtual std::shared_ptr<ExternalOwningItem>
currentItem()
const = 0;
90 return OwningItem::field(self,
name);
93 bool currentIsValid()
const;
97 return std::static_pointer_cast<ExternalItemPairBase>(doCopy(self));
103 return currentItem()->lastDataUpdateAt();
104 return ExternalItemPairBase::lastDataUpdateAt();
109 return OwningItem::refreshedDataAt(tNew);
111 currentItem()->refreshedDataAt(tNew);
126 return std::make_shared<ExternalItemPair>(*
this);
130 constexpr static DomType kindValue = DomType::ExternalItemPair;
137 : ExternalItemPairBase(validExposedAt, currentExposedAt, derivedFrom, lastDataUpdateAt),
145 std::shared_ptr<ExternalOwningItem>
validItem()
const override {
return valid; }
147 std::shared_ptr<ExternalOwningItem>
currentItem()
const override {
return current; }
151 return std::static_pointer_cast<ExternalItemPair>(doCopy(self));
161 :
OwningItem(derivedFrom), m_extraOwningItems(extraOwningItems)
169 m_extraOwningItems =
items;
184 m_extraOwningItems.remove(fieldName);
186 m_extraOwningItems.insert(fieldName,
item);
189 void clearExtraOwningItems();
201 std::shared_ptr<OwningItem> doCopy(
DomItem &self)
const override;
211 DomType kind()
const override {
return kindValue; }
217 static std::shared_ptr<DomUniverse> guaranteeUniverse(std::shared_ptr<DomUniverse> univ);
221 using DomTop::canonicalPath;
225 return std::static_pointer_cast<DomUniverse>(doCopy(self));
229 std::optional<DomType>
fileType = std::optional<DomType>());
237 return m_globalScopeWithName.value(
name);
242 if (
auto current = globalScopeWithName(
name))
244 auto newScope = std::make_shared<GlobalScope>(
name);
245 auto newValue = std::make_shared<ExternalItemPair<GlobalScope>>(
248 if (
auto current = m_globalScopeWithName.value(
name))
250 m_globalScopeWithName.insert(
name, newValue);
259 map = m_globalScopeWithName;
267 return m_qmlDirectoryWithPath.value(
path);
274 map = m_qmlDirectoryWithPath;
282 return m_qmldirFileWithPath.value(
path);
289 map = m_qmldirFileWithPath;
297 return m_qmlFileWithPath.value(
path);
304 map = m_qmlFileWithPath;
312 return m_jsFileWithPath.value(
path);
319 map = m_jsFileWithPath;
327 return m_qmltypesFileWithPath.value(
path);
334 map = m_qmltypesFileWithPath;
375 m_currentExposedAt(currentExposedAt)
379 virtual std::shared_ptr<ExternalOwningItem>
currentItem()
const = 0;
391 int currentRevision(
DomItem &self)
const;
392 int lastRevision(
DomItem &self)
const;
393 int lastValidRevision(
DomItem &self)
const;
397 return std::static_pointer_cast<ExternalItemInfoBase>(doCopy(self));
403 return currentItem()->lastDataUpdateAt();
411 currentItem()->refreshedDataAt(tNew);
416 if (!m_logicalFilePaths.contains(
path))
417 m_logicalFilePaths.append(
path);
422 return m_currentExposedAt;
427 m_currentExposedAt =
d;
433 return m_logicalFilePaths;
438 Path m_canonicalPath;
449 return std::make_shared<ExternalItemInfo>(*
this);
470 return std::static_pointer_cast<ExternalItemInfo>(
doCopy(self));
473 std::shared_ptr<ExternalOwningItem>
currentItem()
const override {
500 std::shared_ptr<OwningItem> doCopy(
DomItem &self)
const override;
503 constexpr static DomType kindValue = DomType::LoadInfo;
518 m_elementCanonicalPath(elPath),
527 m_status =
o.m_status;
528 m_nLoaded =
o.m_nLoaded;
530 m_inProgress =
o.m_inProgress;
531 m_endCallbacks =
o.m_endCallbacks;
540 return std::static_pointer_cast<LoadInfo>(doCopy(self));
544 self.path(elementCanonicalPath()).addError(msg);
549 void advanceLoad(
DomItem &self);
568 return m_elementCanonicalPath;
574 return m_toDo.size() + m_inProgress.size();
592 return m_endCallbacks.size();
596 void doAddDependencies(
DomItem &self);
599 Path m_elementCanonicalPath;
620 AddOption addOption = AddOption::KeepExisting);
631 std::shared_ptr<OwningItem> doCopy(
DomItem &self)
const override;
640 SingleThreaded = 0x10,
641 NoDependencies = 0x20
728 void loadPendingDependencies(
DomItem &self);
729 bool finishLoadingDependencies(
DomItem &self,
int waitMSec = 30000);
730 void addWorkForLoadInfo(
Path elementCanonicalPath);
739 QString globalScopeName() const;
746 void clearReferenceCache();
767 struct ModuleLookupResult {
768 enum Origin :
bool {FromBase, FromGlobal};
769 std::shared_ptr<ModuleIndex> module;
770 Origin fromBase = FromGlobal;
773 ModuleLookupResult moduleIndexWithUriHelper(
DomItem &self,
QString uri,
int majorVersion,
774 EnvLookup lookup = EnvLookup::Normal)
const;
777 const std::shared_ptr<DomEnvironment> m_base;
778 const std::shared_ptr<DomUniverse> m_universe;
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
key_iterator keyBegin() const
key_iterator keyEnd() const
bool operator==(Dependency const &o) const
virtual DomItem field(DomItem &self, QStringView name) const
Represents a consistent set of types organized in modules, it is the top level of the DOM.
function< void(Path, DomItem &, DomItem &)> Callback
DomTop(QMap< QString, OwnerT > extraOwningItems={}, int derivedFrom=0)
void setExtraOwningItem(QString fieldName, std::shared_ptr< T > item)
virtual Path canonicalPath() const =0
DomItem::Callback Callback
Represents a set of parsed/loaded modules libraries and a plugins.
QSet< QString > globalScopeNames() const
std::shared_ptr< ExternalItemPair< QmltypesFile > > qmltypesFileWithPath(QString path) const
std::shared_ptr< ExternalItemPair< QmlDirectory > > qmlDirectoryWithPath(QString path) const
std::shared_ptr< ExternalItemPair< GlobalScope > > globalScopeWithName(QString name) const
QSet< QString > qmltypesFilePaths() const
std::shared_ptr< ExternalItemPair< QmldirFile > > qmldirFileWithPath(QString path) const
std::shared_ptr< ExternalItemPair< QmlFile > > qmlFileWithPath(QString path) const
std::shared_ptr< ExternalItemPair< JsFile > > jsFileWithPath(QString path) const
DomUniverse(const DomUniverse &)=delete
std::shared_ptr< DomUniverse > makeCopy(DomItem &self) const
QSet< QString > qmlDirectoryPaths() const
std::shared_ptr< ExternalItemPair< GlobalScope > > ensureGlobalScopeWithName(QString name)
QSet< QString > jsFilePaths() const
QSet< QString > qmldirFilePaths() const
QQueue< ParsingTask > queue() const
QSet< QString > qmlFilePaths() const
Represents a set of tags grouping a set of related error messages.
Represents an error message connected to the dom.
void ensureLogicalFilePath(QString path)
ExternalItemInfoBase(const ExternalItemInfoBase &o)=default
void setCurrentExposedAt(QDateTime d)
std::shared_ptr< ExternalItemInfoBase > makeCopy(DomItem &self) const
DomType kind() const final override
QDateTime currentExposedAt() const
QStringList logicalFilePaths() const
DomItem field(DomItem &self, QStringView name) const final override
Path canonicalPath(DomItem &) const final override
virtual std::shared_ptr< ExternalOwningItem > currentItem() const =0
ExternalItemInfoBase(Path canonicalPath, QDateTime currentExposedAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0, QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC))
void refreshedDataAt(QDateTime tNew) final override
Path canonicalPath() const
virtual DomItem currentItem(DomItem &) const =0
QDateTime lastDataUpdateAt() const final override
static constexpr DomType kindValue
std::shared_ptr< T > current
ExternalItemInfo(std::shared_ptr< T > current=std::shared_ptr< T >(), QDateTime currentExposedAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0, QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC))
DomItem currentItem(DomItem &self) const override
std::shared_ptr< ExternalItemInfo > makeCopy(DomItem &self) const
ExternalItemInfo(QString canonicalPath)
ExternalItemInfo(const ExternalItemInfo &o)
std::shared_ptr< ExternalOwningItem > currentItem() const override
std::shared_ptr< OwningItem > doCopy(DomItem &) const override
QDateTime currentExposedAt
ExternalItemPairBase(const ExternalItemPairBase &o)
DomType kind() const final override
ExternalItemPairBase(QDateTime validExposedAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), QDateTime currentExposedAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0, QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC))
void refreshedDataAt(QDateTime tNew) final override
DomItem field(DomItem &self, QStringView name) const final override
QDateTime lastDataUpdateAt() const final override
virtual std::shared_ptr< ExternalOwningItem > currentItem() const =0
virtual std::shared_ptr< ExternalOwningItem > validItem() const =0
virtual DomItem validItem(DomItem &self) const =0
virtual DomItem currentItem(DomItem &self) const =0
std::shared_ptr< ExternalItemPairBase > makeCopy(DomItem &self) const
ExternalItemPair(std::shared_ptr< T > valid={}, std::shared_ptr< T > current={}, QDateTime validExposedAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), QDateTime currentExposedAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC), int derivedFrom=0, QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC))
std::shared_ptr< ExternalItemPair > makeCopy(DomItem &self) const
DomItem validItem(DomItem &self) const override
std::shared_ptr< T > valid
std::shared_ptr< T > current
DomItem currentItem(DomItem &self) const override
std::shared_ptr< ExternalOwningItem > validItem() const override
std::shared_ptr< OwningItem > doCopy(DomItem &) const override
ExternalItemPair(const ExternalItemPair &o)
std::shared_ptr< ExternalOwningItem > currentItem() const override
void addError(DomItem &self, ErrorMessage msg) override
DomType kind() const override
std::shared_ptr< LoadInfo > makeCopy(DomItem &self) const
Path elementCanonicalPath() const
LoadInfo(Path elPath=Path(), Status status=Status::NotStarted, int nLoaded=0, int derivedFrom=0, QDateTime lastDataUpdateAt=QDateTime::fromMSecsSinceEpoch(0, QTimeZone::UTC))
QList< Dependency > toDo() const
LoadInfo(const LoadInfo &o)
QList< Dependency > inProgress() const
virtual QDateTime lastDataUpdateAt() const
virtual void refreshedDataAt(QDateTime tNew)
std::weak_ptr< DomUniverse > requestingUniverse
function< void(Path, DomItem &, DomItem &)> callback
QList< Path > canonicalPaths
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromUtf16(const char16_t *, qsizetype size=-1)
QMap< QString, QString > map
[6]
std::function< void(const ErrorMessage &)> ErrorHandler
Combined button and popup list for selecting options.
SharedPointerFileDialogOptions m_options
#define Q_DECLARE_TR_FUNCTIONS(context)
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
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
GLsizei const GLfloat * v
[13]
GLfloat GLfloat GLfloat GLfloat h
GLsizei const GLchar *const * path
QT_BEGIN_NAMESPACE typedef void(* Callback)(QQmlNotifierEndpoint *, void **)
static QT_BEGIN_NAMESPACE const uint Default
static QString canonicalPath(const QString &rootPath)
static FileType fileType(const QFileInfo &fi)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent