Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
DocumentSymbolUtils::DomItem Class Reference

A value type that references any element of the Dom. More...

#include <qqmldomitem_p.h>

Collaboration diagram for DocumentSymbolUtils::DomItem:

Public Types

enum class  CopyOption { EnvConnected , EnvDisconnected }
using Callback = function<void(const Path &, const DomItem &, const DomItem &)>
using InternalKind = DomType
using Visitor = function_ref<bool(const Path &, const DomItem &)>
using ChildrenVisitor = function_ref<bool(const Path &, const DomItem &, bool)>

Public Member Functions

template<typename F>
auto visitEl (F f) const
 operator bool () const
InternalKind internalKind () const
QString internalKindStr () const
DomKind domKind () const
Path canonicalPath () const
DomItem filterUp (function_ref< bool(DomType k, const DomItem &)> filter, FilterUpOptions options) const
DomItem containingObject () const
DomItem container () const
DomItem owner () const
 The owner of an element, for an qmlObject this is the containing qml file.
DomItem top () const
DomItem environment () const
DomItem universe () const
DomItem containingFile () const
DomItem containingScriptExpression () const
DomItem goToFile (const QString &filePath) const
DomItem goUp (int) const
DomItem directParent () const
DomItem qmlObject (GoTo option=GoTo::Strict, FilterUpOptions options=FilterUpOptions::ReturnOuter) const
 Returns the QmlObject that this belongs to.
DomItem fileObject (GoTo option=GoTo::Strict) const
DomItem rootQmlObject (GoTo option=GoTo::Strict) const
DomItem globalScope () const
DomItem component (GoTo option=GoTo::Strict) const
DomItem scope (FilterUpOptions options=FilterUpOptions::ReturnOuter) const
QQmlJSScope::ConstPtr nearestSemanticScope () const
QQmlJSScope::ConstPtr semanticScope () const
DomItem get (const ErrorHandler &h=nullptr, QList< Path > *visitedRefs=nullptr) const
QList< DomItemgetAll (const ErrorHandler &h=nullptr, QList< Path > *visitedRefs=nullptr) const
bool isOwningItem () const
bool isExternalItem () const
bool isTopItem () const
bool isContainer () const
bool isScope () const
bool isCanonicalChild (const DomItem &child) const
bool hasAnnotations () const
QString name () const
DomItem pragmas () const
DomItem ids () const
QString idStr () const
DomItem propertyInfos () const
PropertyInfo propertyInfoWithName (const QString &name) const
QSet< QStringpropertyInfoNames () const
DomItem propertyDefs () const
DomItem bindings () const
DomItem methods () const
DomItem enumerations () const
DomItem children () const
DomItem child (index_type i) const
DomItem annotations () const
bool resolve (const Path &path, Visitor visitor, const ErrorHandler &errorHandler, ResolveOptions options=ResolveOption::None, const Path &fullPath=Path(), QList< Path > *visitedRefs=nullptr) const
DomItem operator[] (const Path &path) const
DomItem operator[] (QStringView component) const
DomItem operator[] (const QString &component) const
DomItem operator[] (const char16_t *component) const
DomItem operator[] (index_type i) const
DomItem operator[] (int i) const
index_type size () const
index_type length () const
DomItem path (const Path &p, const ErrorHandler &h=&defaultErrorHandler) const
DomItem path (const QString &p, const ErrorHandler &h=&defaultErrorHandler) const
DomItem path (QStringView p, const ErrorHandler &h=&defaultErrorHandler) const
QList< QStringfields () const
DomItem field (QStringView name) const
index_type indexes () const
DomItem index (index_type) const
bool visitIndexes (function_ref< bool(const DomItem &)> visitor) const
QSet< QStringkeys () const
QStringList sortedKeys () const
DomItem key (const QString &name) const
DomItem key (QStringView name) const
bool visitKeys (function_ref< bool(const QString &, const DomItem &)> visitor) const
QList< DomItemvalues () const
void writeOutPre (OutWriter &lw) const
void writeOut (OutWriter &lw) const
bool writeOut (const QString &path, int nBackups=2, const LineWriterOptions &opt=LineWriterOptions(), FileWriter *fw=nullptr, WriteOutChecks extraChecks=WriteOutCheck::Default) const
void writeOutPost (OutWriter &lw) const
bool writeOutForFile (OutWriter &ow, WriteOutChecks extraChecks) const
bool visitTree (const Path &basePath, ChildrenVisitor visitor, VisitOptions options=VisitOption::Default, ChildrenVisitor openingVisitor=emptyChildrenVisitor, ChildrenVisitor closingVisitor=emptyChildrenVisitor, const FieldFilter &filter=FieldFilter::noFilter()) const
 Visits recursively all the children of this item using the given visitors.
bool visitPrototypeChain (function_ref< bool(const DomItem &)> visitor, VisitPrototypesOptions options=VisitPrototypesOption::Normal, const ErrorHandler &h=nullptr, QSet< quintptr > *visited=nullptr, QList< Path > *visitedRefs=nullptr) const
bool visitDirectAccessibleScopes (function_ref< bool(const DomItem &)> visitor, VisitPrototypesOptions options=VisitPrototypesOption::Normal, const ErrorHandler &h=nullptr, QSet< quintptr > *visited=nullptr, QList< Path > *visitedRefs=nullptr) const
bool visitStaticTypePrototypeChains (function_ref< bool(const DomItem &)> visitor, VisitPrototypesOptions options=VisitPrototypesOption::Normal, const ErrorHandler &h=nullptr, QSet< quintptr > *visited=nullptr, QList< Path > *visitedRefs=nullptr) const
 DomItem::visitStaticTypePrototypeChains.
bool visitUp (function_ref< bool(const DomItem &)> visitor) const
 Let the visitor visit the Dom Tree hierarchy of this DomItem.
bool visitScopeChain (function_ref< bool(const DomItem &)> visitor, LookupOptions=LookupOption::Normal, const ErrorHandler &h=nullptr, QSet< quintptr > *visited=nullptr, QList< Path > *visitedRefs=nullptr) const
 Let the visitor visit the QML scope hierarchy of this DomItem.
bool visitLocalSymbolsNamed (const QString &name, function_ref< bool(const DomItem &)> visitor) const
bool visitLookup1 (const QString &symbolName, function_ref< bool(const DomItem &)> visitor, LookupOptions=LookupOption::Normal, const ErrorHandler &h=nullptr, QSet< quintptr > *visited=nullptr, QList< Path > *visitedRefs=nullptr) const
bool visitLookup (const QString &symbolName, function_ref< bool(const DomItem &)> visitor, LookupType type=LookupType::Symbol, LookupOptions=LookupOption::Normal, const ErrorHandler &errorHandler=nullptr, QSet< quintptr > *visited=nullptr, QList< Path > *visitedRefs=nullptr) const
bool visitSubSymbolsNamed (const QString &name, function_ref< bool(const DomItem &)> visitor) const
DomItem proceedToScope (const ErrorHandler &h=nullptr, QList< Path > *visitedRefs=nullptr) const
 Dereference DomItems pointing to other DomItems.
QList< DomItemlookup (const QString &symbolName, LookupType type=LookupType::Symbol, LookupOptions=LookupOption::Normal, const ErrorHandler &errorHandler=nullptr) const
DomItem lookupFirst (const QString &symbolName, LookupType type=LookupType::Symbol, LookupOptions=LookupOption::Normal, const ErrorHandler &errorHandler=nullptr) const
quintptr id () const
Path pathFromOwner () const
QString canonicalFilePath () const
MutableDomItem makeCopy (CopyOption option=CopyOption::EnvConnected) const
bool commitToBase (const std::shared_ptr< DomEnvironment > &validPtr=nullptr) const
DomItem refreshed () const
QCborValue value () const
void dumpPtr (const Sink &sink) const
void dump (const Sink &, int indent=0, function_ref< bool(const DomItem &, const PathEls::PathComponent &, const DomItem &)> filter=noFilter) const
FileWriter::Status dump (const QString &path, function_ref< bool(const DomItem &, const PathEls::PathComponent &, const DomItem &)> filter=noFilter, int nBackups=2, int indent=0, FileWriter *fw=nullptr) const
QString toString () const
int derivedFrom () const
int revision () const
QDateTime createdAt () const
QDateTime frozenAt () const
QDateTime lastDataUpdateAt () const
void addError (ErrorMessage &&msg) const
ErrorHandler errorHandler () const
void clearErrors (const ErrorGroups &groups=ErrorGroups({}), bool iterate=true) const
bool iterateErrors (function_ref< bool(const DomItem &, const ErrorMessage &)> visitor, bool iterate, Path inPath=Path()) const
bool iterateSubOwners (function_ref< bool(const DomItem &owner)> visitor) const
bool iterateDirectSubpaths (DirectVisitor v) const
template<typename T>
DomItem subDataItem (const PathEls::PathComponent &c, const T &value, ConstantData::Options options=ConstantData::Options::MapIsMap) const
template<typename T>
DomItem subDataItemField (QStringView f, const T &value, ConstantData::Options options=ConstantData::Options::MapIsMap) const
template<typename T>
DomItem subValueItem (const PathEls::PathComponent &c, const T &value, ConstantData::Options options=ConstantData::Options::MapIsMap) const
template<typename T>
bool dvValue (DirectVisitor visitor, const PathEls::PathComponent &c, const T &value, ConstantData::Options options=ConstantData::Options::MapIsMap) const
template<typename T>
bool dvValueField (DirectVisitor visitor, QStringView f, const T &value, ConstantData::Options options=ConstantData::Options::MapIsMap) const
template<typename F>
bool dvValueLazy (DirectVisitor visitor, const PathEls::PathComponent &c, F valueF, ConstantData::Options options=ConstantData::Options::MapIsMap) const
template<typename F>
bool dvValueLazyField (DirectVisitor visitor, QStringView f, F valueF, ConstantData::Options options=ConstantData::Options::MapIsMap) const
DomItem subLocationItem (const PathEls::PathComponent &c, SourceLocation loc) const
DomItem subReferencesItem (const PathEls::PathComponent &c, const QList< Path > &paths) const
DomItem subReferenceItem (const PathEls::PathComponent &c, const Path &referencedObject) const
bool dvReference (DirectVisitor visitor, const PathEls::PathComponent &c, const Path &referencedObject) const
bool dvReferences (DirectVisitor visitor, const PathEls::PathComponent &c, const QList< Path > &paths) const
bool dvReferenceField (DirectVisitor visitor, QStringView f, const Path &referencedObject) const
bool dvReferencesField (DirectVisitor visitor, QStringView f, const QList< Path > &paths) const
bool dvItem (DirectVisitor visitor, const PathEls::PathComponent &c, function_ref< DomItem()> it) const
bool dvItemField (DirectVisitor visitor, QStringView f, function_ref< DomItem()> it) const
DomItem subListItem (const List &list) const
DomItem subMapItem (const Map &map) const
DomItem subObjectWrapItem (SimpleObjectWrap obj) const
DomItem subScriptElementWrapperItem (const ScriptElementVariant &obj) const
template<typename Owner>
DomItem subOwnerItem (const PathEls::PathComponent &c, Owner o) const
template<typename T>
DomItem wrap (const PathEls::PathComponent &c, const T &obj) const
template<typename T>
DomItem wrapField (QStringView f, const T &obj) const
template<typename T>
bool dvWrap (DirectVisitor visitor, const PathEls::PathComponent &c, T &obj) const
template<typename T>
bool dvWrapField (DirectVisitor visitor, QStringView f, T &obj) const
 DomItem ()=default
 DomItem (const std::shared_ptr< DomEnvironment > &)
 DomItem (const std::shared_ptr< DomUniverse > &)
std::shared_ptr< DomToptopPtr () const
std::shared_ptr< OwningItemowningItemPtr () const
template<typename T, typename std::enable_if< std::is_base_of_v< DomBase, T >, bool >::type = true>
T const * as () const
template<typename T, typename std::enable_if<!std::is_base_of_v< DomBase, T >, bool >::type = true>
T const * as () const
template<typename T>
std::shared_ptr< T > ownerAs () const
template<typename Owner, typename T>
DomItem copy (const Owner &owner, const Path &ownerPath, const T &base) const
template<typename Owner>
DomItem copy (const Owner &owner, const Path &ownerPath) const
template<typename T>
DomItem copy (const T &base) const

Static Public Member Functions

static ErrorGroups myErrors ()
static ErrorGroups myResolveErrors ()
static DomItem fromCode (const QString &code, DomType fileType=DomType::QmlFile)
 Creates a new document with the given code.

Static Public Attributes

static ErrorGroup domErrorGroup = NewErrorGroup("Dom")
static DomItem empty = DomItem()

Friends

class DomBase
class DomElement
class Map
class List
class QmlObject
class DomUniverse
class DomEnvironment
class ExternalItemInfoBase
class ConstantData
class MutableDomItem
class ScriptExpression
class AstComments
class FileLocations::Node
class TestDomItem
QMLDOM_EXPORT bool operator== (const DomItem &o1, const DomItem &o2)

Detailed Description

A value type that references any element of the Dom.

This class is the central element in the Dom, it is how any element can be identfied in a uniform way, and provides the API to explore the Dom, and Path based operations.

The DomItem (unless it is Empty) keeps a pointer to the element, and a shared pointer to its owner and to the DomEnvironment or DomUniverse that contains them. This means that: \list

  • A DomItem always has some context: you can get the canonicalPath(), go up along it with containingObject() and container().
  • the indexing operator [], or the path(), field(), key() and index() methods (along with their fields(), keys(), and indexes() contreparts) let one visit the contents of the current element.
  • visitTree can be used to visit all subEments, if preferred on the top of it a visitor pattern can also be used.
  • If element specific attributes are wanted the two template casting as and ownerAs allow safe casting of the DomItem to a specific concrete type (cast to superclasses is not supported).
  • Multithreading does not create issues, because even if an update replacing an OwningItem takes place the DomItem keeps a shared_ptr to the current owner as long as you use it
  • Some elements (Empty, List, Map, ConstantData, Reference) might be inline, meaning that they are generated on the fly, wrapping data of the original object. \endlist

One of the goals of the DomItem is to allow one to use real typed objects, as one is used to in C++, and also let one use modern C++ patterns, meaning container that contain the actual object (without pointer indirection). Exposed OwningItems are basically immutable, but during construction, objects can be modified. This will typically happen from a single thread, so there aren't locking issues, but pointers to inner elements might become invalid. In this case the use of the MutableDomItem is required. It does not keep any pointers to internal elements, but rather the path to them, and it resolves it every time it needs.

Definition at line 856 of file qqmldomitem_p.h.

Member Typedef Documentation

◆ Callback

using QQmlJS::Dom::DomItem::Callback = function<void(const Path &, const DomItem &, const DomItem &)>

Definition at line 859 of file qqmldomitem_p.h.

◆ ChildrenVisitor

using QQmlJS::Dom::DomItem::ChildrenVisitor = function_ref<bool(const Path &, const DomItem &, bool)>

Definition at line 863 of file qqmldomitem_p.h.

◆ InternalKind

Definition at line 861 of file qqmldomitem_p.h.

◆ Visitor

using QQmlJS::Dom::DomItem::Visitor = function_ref<bool(const Path &, const DomItem &)>

Definition at line 862 of file qqmldomitem_p.h.

Member Enumeration Documentation

◆ CopyOption

Enumerator
EnvConnected 
EnvDisconnected 

Definition at line 870 of file qqmldomitem_p.h.

Constructor & Destructor Documentation

◆ DomItem() [1/3]

QQmlJS::Dom::DomItem::DomItem ( )
default

◆ DomItem() [2/3]

DomItem::DomItem ( const std::shared_ptr< DomEnvironment > & envPtr)

Definition at line 2478 of file qqmldomitem.cpp.

◆ DomItem() [3/3]

DomItem::DomItem ( const std::shared_ptr< DomUniverse > & universePtr)

Definition at line 2483 of file qqmldomitem.cpp.

Member Function Documentation

◆ addError()

void DomItem::addError ( ErrorMessage && msg) const

Definition at line 2361 of file qqmldomitem.cpp.

◆ annotations()

DomItem QQmlJS::Dom::DomItem::annotations ( ) const
inline

Definition at line 939 of file qqmldomitem_p.h.

◆ as() [1/2]

template<typename T, typename std::enable_if< std::is_base_of_v< DomBase, T >, bool >::type = true>
T const * QQmlJS::Dom::DomItem::as ( ) const
inline

Definition at line 1188 of file qqmldomitem_p.h.

◆ as() [2/2]

template<typename T, typename std::enable_if<!std::is_base_of_v< DomBase, T >, bool >::type = true>
T const * QQmlJS::Dom::DomItem::as ( ) const
inline

Definition at line 1200 of file qqmldomitem_p.h.

◆ bindings()

DomItem QQmlJS::Dom::DomItem::bindings ( ) const
inline

Definition at line 934 of file qqmldomitem_p.h.

◆ canonicalFilePath()

QString DomItem::canonicalFilePath ( ) const

Definition at line 2061 of file qqmldomitem.cpp.

◆ canonicalPath()

Path DomItem::canonicalPath ( ) const

Definition at line 401 of file qqmldomitem.cpp.

◆ child()

DomItem QQmlJS::Dom::DomItem::child ( index_type i) const
inline

Definition at line 938 of file qqmldomitem_p.h.

◆ children()

DomItem QQmlJS::Dom::DomItem::children ( ) const
inline

Definition at line 937 of file qqmldomitem_p.h.

◆ clearErrors()

void DomItem::clearErrors ( const ErrorGroups & groups = ErrorGroups({}),
bool iterate = true ) const

Definition at line 2377 of file qqmldomitem.cpp.

◆ commitToBase()

bool DomItem::commitToBase ( const std::shared_ptr< DomEnvironment > & validPtr = nullptr) const

Definition at line 2150 of file qqmldomitem.cpp.

◆ component()

DomItem DomItem::component ( GoTo option = GoTo::Strict) const

Definition at line 722 of file qqmldomitem.cpp.

◆ container()

DomItem DomItem::container ( ) const

Definition at line 463 of file qqmldomitem.cpp.

◆ containingFile()

DomItem DomItem::containingFile ( ) const

Shorthand to obtain the QmlFile DomItem, in which this DomItem is defined. Returns an empty DomItem if the item is not defined in a QML file.

See also
goToFile()

Definition at line 552 of file qqmldomitem.cpp.

◆ containingObject()

DomItem DomItem::containingObject ( ) const

Definition at line 412 of file qqmldomitem.cpp.

◆ containingScriptExpression()

DomItem DomItem::containingScriptExpression ( ) const

Shorthand to obtain the ScriptExpression DomItem, in which this DomItem is defined. Returns an empty DomItem if the item is not defined inside a ScriptExpression.

See also
goToFile()

Definition at line 538 of file qqmldomitem.cpp.

◆ copy() [1/3]

template<typename Owner>
DomItem QQmlJS::Dom::DomItem::copy ( const Owner & owner,
const Path & ownerPath ) const
inline

Definition at line 1221 of file qqmldomitem_p.h.

◆ copy() [2/3]

template<typename Owner, typename T>
DomItem QQmlJS::Dom::DomItem::copy ( const Owner & owner,
const Path & ownerPath,
const T & base ) const
inline

Definition at line 1213 of file qqmldomitem_p.h.

◆ copy() [3/3]

template<typename T>
DomItem QQmlJS::Dom::DomItem::copy ( const T & base) const
inline

Definition at line 1228 of file qqmldomitem_p.h.

◆ createdAt()

QDateTime DomItem::createdAt ( ) const

Definition at line 2331 of file qqmldomitem.cpp.

◆ derivedFrom()

int DomItem::derivedFrom ( ) const

Definition at line 2311 of file qqmldomitem.cpp.

◆ directParent()

DomItem DomItem::directParent ( ) const

In the DomItem hierarchy, go 1 level up to get the direct parent.

Definition at line 592 of file qqmldomitem.cpp.

◆ domKind()

DomKind QQmlJS::Dom::DomItem::domKind ( ) const
inline

Definition at line 883 of file qqmldomitem_p.h.

◆ dump() [1/2]

FileWriter::Status DomItem::dump ( const QString & path,
function_ref< bool(const DomItem &, const PathEls::PathComponent &, const DomItem &)> filter = noFilter,
int nBackups = 2,
int indent = 0,
FileWriter * fw = nullptr ) const

Definition at line 2281 of file qqmldomitem.cpp.

◆ dump() [2/2]

void DomItem::dump ( const Sink & s,
int indent = 0,
function_ref< bool(const DomItem &, const PathEls::PathComponent &, const DomItem &)> filter = noFilter ) const

Definition at line 2273 of file qqmldomitem.cpp.

◆ dumpPtr()

void DomItem::dumpPtr ( const Sink & sink) const

Definition at line 2260 of file qqmldomitem.cpp.

◆ dvItem()

bool QQmlJS::Dom::DomItem::dvItem ( DirectVisitor visitor,
const PathEls::PathComponent & c,
function_ref< DomItem()> it ) const
inline

Definition at line 1130 of file qqmldomitem_p.h.

◆ dvItemField()

bool QQmlJS::Dom::DomItem::dvItemField ( DirectVisitor visitor,
QStringView f,
function_ref< DomItem()> it ) const
inline

Definition at line 1134 of file qqmldomitem_p.h.

◆ dvReference()

bool QQmlJS::Dom::DomItem::dvReference ( DirectVisitor visitor,
const PathEls::PathComponent & c,
const Path & referencedObject ) const
inline

Definition at line 1109 of file qqmldomitem_p.h.

◆ dvReferenceField()

bool QQmlJS::Dom::DomItem::dvReferenceField ( DirectVisitor visitor,
QStringView f,
const Path & referencedObject ) const
inline

Definition at line 1122 of file qqmldomitem_p.h.

◆ dvReferences()

bool QQmlJS::Dom::DomItem::dvReferences ( DirectVisitor visitor,
const PathEls::PathComponent & c,
const QList< Path > & paths ) const
inline

Definition at line 1115 of file qqmldomitem_p.h.

◆ dvReferencesField()

bool QQmlJS::Dom::DomItem::dvReferencesField ( DirectVisitor visitor,
QStringView f,
const QList< Path > & paths ) const
inline

Definition at line 1126 of file qqmldomitem_p.h.

◆ dvValue()

template<typename T>
bool DomItem::dvValue ( DirectVisitor visitor,
const PathEls::PathComponent & c,
const T & value,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const

Definition at line 2044 of file qqmldomitem_p.h.

◆ dvValueField()

template<typename T>
bool QQmlJS::Dom::DomItem::dvValueField ( DirectVisitor visitor,
QStringView f,
const T & value,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const
inline

Definition at line 1087 of file qqmldomitem_p.h.

◆ dvValueLazy()

template<typename F>
bool DomItem::dvValueLazy ( DirectVisitor visitor,
const PathEls::PathComponent & c,
F valueF,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const

Definition at line 2054 of file qqmldomitem_p.h.

◆ dvValueLazyField()

template<typename F>
bool QQmlJS::Dom::DomItem::dvValueLazyField ( DirectVisitor visitor,
QStringView f,
F valueF,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const
inline

Definition at line 1096 of file qqmldomitem_p.h.

◆ dvWrap()

template<typename T>
bool DomItem::dvWrap ( DirectVisitor visitor,
const PathEls::PathComponent & c,
T & obj ) const

Definition at line 2138 of file qqmldomitem_p.h.

◆ dvWrapField()

template<typename T>
bool QQmlJS::Dom::DomItem::dvWrapField ( DirectVisitor visitor,
QStringView f,
T & obj ) const
inline

Definition at line 1169 of file qqmldomitem_p.h.

◆ enumerations()

DomItem QQmlJS::Dom::DomItem::enumerations ( ) const
inline

Definition at line 936 of file qqmldomitem_p.h.

◆ environment()

DomItem DomItem::environment ( ) const

Definition at line 514 of file qqmldomitem.cpp.

◆ errorHandler()

ErrorHandler DomItem::errorHandler ( ) const

Definition at line 2371 of file qqmldomitem.cpp.

◆ field()

DomItem DomItem::field ( QStringView name) const

Definition at line 1136 of file qqmldomitem.cpp.

◆ fields()

QList< QString > DomItem::fields ( ) const

Definition at line 1131 of file qqmldomitem.cpp.

◆ fileObject()

DomItem DomItem::fileObject ( GoTo option = GoTo::Strict) const

Definition at line 435 of file qqmldomitem.cpp.

◆ filterUp()

DomItem DomItem::filterUp ( function_ref< bool(DomType k, const DomItem &)> filter,
FilterUpOptions options ) const

Finds the first element in the DomItem hierarchy that satisfies filter. Use options to set the search direction, see also \l{FilterUpOptions}.

Definition at line 602 of file qqmldomitem.cpp.

◆ fromCode()

DomItem DomItem::fromCode ( const QString & code,
DomType fileType = DomType::QmlFile )
static

Creates a new document with the given code.

This is mostly useful for testing or loading a single code snippet without any dependency. The fileType should normally be QmlFile, but you might want to load a qmltypes file for example and interpret it as qmltypes file (not plain Qml), or as JsFile. In those case set the file type accordingly.

Definition at line 2496 of file qqmldomitem.cpp.

◆ frozenAt()

QDateTime DomItem::frozenAt ( ) const

Definition at line 2341 of file qqmldomitem.cpp.

◆ get()

DomItem DomItem::get ( const ErrorHandler & h = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Definition at line 676 of file qqmldomitem.cpp.

◆ getAll()

QList< DomItem > DomItem::getAll ( const ErrorHandler & h = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Definition at line 683 of file qqmldomitem.cpp.

◆ globalScope()

DomItem DomItem::globalScope ( ) const

Definition at line 474 of file qqmldomitem.cpp.

◆ goToFile()

DomItem DomItem::goToFile ( const QString & canonicalPath) const

Shorthand to obtain the QmlFile DomItem from a canonicalPath.

See also
containingFile()

Definition at line 565 of file qqmldomitem.cpp.

◆ goUp()

DomItem DomItem::goUp ( int n) const

In the DomItem hierarchy, go n levels up.

Definition at line 577 of file qqmldomitem.cpp.

◆ hasAnnotations()

bool DomItem::hasAnnotations ( ) const

Definition at line 1371 of file qqmldomitem.cpp.

◆ id()

quintptr DomItem::id ( ) const

Definition at line 2051 of file qqmldomitem.cpp.

◆ ids()

DomItem QQmlJS::Dom::DomItem::ids ( ) const
inline

Definition at line 928 of file qqmldomitem_p.h.

◆ idStr()

QString QQmlJS::Dom::DomItem::idStr ( ) const
inline

Definition at line 929 of file qqmldomitem_p.h.

◆ index()

DomItem DomItem::index ( index_type i) const

Definition at line 1146 of file qqmldomitem.cpp.

◆ indexes()

index_type DomItem::indexes ( ) const

Definition at line 1141 of file qqmldomitem.cpp.

◆ internalKind()

InternalKind QQmlJS::Dom::DomItem::internalKind ( ) const
inline

Definition at line 879 of file qqmldomitem_p.h.

◆ internalKindStr()

QString QQmlJS::Dom::DomItem::internalKindStr ( ) const
inline

Definition at line 882 of file qqmldomitem_p.h.

◆ isCanonicalChild()

bool DomItem::isCanonicalChild ( const DomItem & child) const

Definition at line 1358 of file qqmldomitem.cpp.

◆ isContainer()

bool QQmlJS::Dom::DomItem::isContainer ( ) const
inline

Definition at line 922 of file qqmldomitem_p.h.

◆ isExternalItem()

bool QQmlJS::Dom::DomItem::isExternalItem ( ) const
inline

Definition at line 920 of file qqmldomitem_p.h.

◆ isOwningItem()

bool QQmlJS::Dom::DomItem::isOwningItem ( ) const
inline

Definition at line 919 of file qqmldomitem_p.h.

◆ isScope()

bool QQmlJS::Dom::DomItem::isScope ( ) const
inline

Definition at line 923 of file qqmldomitem_p.h.

◆ isTopItem()

bool QQmlJS::Dom::DomItem::isTopItem ( ) const
inline

Definition at line 921 of file qqmldomitem_p.h.

◆ iterateDirectSubpaths()

bool DomItem::iterateDirectSubpaths ( DirectVisitor v) const

Definition at line 2424 of file qqmldomitem.cpp.

◆ iterateErrors()

bool DomItem::iterateErrors ( function_ref< bool(const DomItem &, const ErrorMessage &)> visitor,
bool iterate,
Path inPath = Path() ) const

Definition at line 2392 of file qqmldomitem.cpp.

◆ iterateSubOwners()

bool DomItem::iterateSubOwners ( function_ref< bool(const DomItem &owner)> visitor) const

Definition at line 2414 of file qqmldomitem.cpp.

◆ key() [1/2]

DomItem DomItem::key ( const QString & name) const

Definition at line 1176 of file qqmldomitem.cpp.

◆ key() [2/2]

DomItem QQmlJS::Dom::DomItem::key ( QStringView name) const
inline

Definition at line 977 of file qqmldomitem_p.h.

◆ keys()

QSet< QString > DomItem::keys ( ) const

Definition at line 1163 of file qqmldomitem.cpp.

◆ lastDataUpdateAt()

QDateTime DomItem::lastDataUpdateAt ( ) const

Definition at line 2351 of file qqmldomitem.cpp.

◆ length()

index_type QQmlJS::Dom::DomItem::length ( ) const
inline

Definition at line 961 of file qqmldomitem_p.h.

◆ lookup()

QList< DomItem > DomItem::lookup ( const QString & symbolName,
LookupType type = LookupType::Symbol,
LookupOptions opts = LookupOption::Normal,
const ErrorHandler & errorHandler = nullptr ) const

Definition at line 2023 of file qqmldomitem.cpp.

◆ lookupFirst()

DomItem DomItem::lookupFirst ( const QString & symbolName,
LookupType type = LookupType::Symbol,
LookupOptions opts = LookupOption::Normal,
const ErrorHandler & errorHandler = nullptr ) const

Definition at line 2037 of file qqmldomitem.cpp.

◆ makeCopy()

MutableDomItem DomItem::makeCopy ( DomItem::CopyOption option = CopyOption::EnvConnected) const

Definition at line 2066 of file qqmldomitem.cpp.

◆ methods()

DomItem QQmlJS::Dom::DomItem::methods ( ) const
inline

Definition at line 935 of file qqmldomitem_p.h.

◆ myErrors()

ErrorGroups DomItem::myErrors ( )
static

Definition at line 389 of file qqmldomitem.cpp.

◆ myResolveErrors()

ErrorGroups DomItem::myResolveErrors ( )
static

Definition at line 395 of file qqmldomitem.cpp.

◆ name()

QString QQmlJS::Dom::DomItem::name ( ) const
inline

Definition at line 926 of file qqmldomitem_p.h.

◆ nearestSemanticScope()

QQmlJSScope::ConstPtr DomItem::nearestSemanticScope ( ) const

Definition at line 639 of file qqmldomitem.cpp.

◆ operator bool()

QQmlJS::Dom::DomItem::operator bool ( ) const
inlineexplicit

Definition at line 878 of file qqmldomitem_p.h.

◆ operator[]() [1/6]

DomItem QQmlJS::Dom::DomItem::operator[] ( const char16_t * component) const
inline

Definition at line 954 of file qqmldomitem_p.h.

◆ operator[]() [2/6]

DomItem DomItem::operator[] ( const Path & path) const

Definition at line 2250 of file qqmldomitem.cpp.

◆ operator[]() [3/6]

DomItem DomItem::operator[] ( const QString & component) const

Definition at line 2236 of file qqmldomitem.cpp.

◆ operator[]() [4/6]

DomItem QQmlJS::Dom::DomItem::operator[] ( index_type i) const
inline

Definition at line 958 of file qqmldomitem_p.h.

◆ operator[]() [5/6]

DomItem QQmlJS::Dom::DomItem::operator[] ( int i) const
inline

Definition at line 959 of file qqmldomitem_p.h.

◆ operator[]() [6/6]

DomItem DomItem::operator[] ( QStringView component) const

Definition at line 2243 of file qqmldomitem.cpp.

◆ owner()

DomItem DomItem::owner ( ) const

The owner of an element, for an qmlObject this is the containing qml file.

Definition at line 490 of file qqmldomitem.cpp.

◆ ownerAs()

template<typename T>
std::shared_ptr< T > DomItem::ownerAs ( ) const

Definition at line 1522 of file qqmldomitem_p.h.

◆ owningItemPtr()

shared_ptr< OwningItem > DomItem::owningItemPtr ( ) const

Definition at line 2459 of file qqmldomitem.cpp.

◆ path() [1/3]

DomItem DomItem::path ( const Path & p,
const ErrorHandler & h = &defaultErrorHandler ) const

Definition at line 1109 of file qqmldomitem.cpp.

◆ path() [2/3]

DomItem DomItem::path ( const QString & p,
const ErrorHandler & h = &defaultErrorHandler ) const

Definition at line 1121 of file qqmldomitem.cpp.

◆ path() [3/3]

DomItem DomItem::path ( QStringView p,
const ErrorHandler & h = &defaultErrorHandler ) const

Definition at line 1126 of file qqmldomitem.cpp.

◆ pathFromOwner()

Path DomItem::pathFromOwner ( ) const

Definition at line 2056 of file qqmldomitem.cpp.

◆ pragmas()

DomItem QQmlJS::Dom::DomItem::pragmas ( ) const
inline

Definition at line 927 of file qqmldomitem_p.h.

◆ proceedToScope()

DomItem DomItem::proceedToScope ( const ErrorHandler & h = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Dereference DomItems pointing to other DomItems.

Dereferences DomItems with internalKind being References, Export and Id. Also does multiple rounds of resolving for nested DomItems. Prefer this over \l {DomItem::get}.

Definition at line 1998 of file qqmldomitem.cpp.

◆ propertyDefs()

DomItem QQmlJS::Dom::DomItem::propertyDefs ( ) const
inline

Definition at line 933 of file qqmldomitem_p.h.

◆ propertyInfoNames()

QSet< QString > DomItem::propertyInfoNames ( ) const

Definition at line 711 of file qqmldomitem.cpp.

◆ propertyInfos()

DomItem QQmlJS::Dom::DomItem::propertyInfos ( ) const
inline

Definition at line 930 of file qqmldomitem_p.h.

◆ propertyInfoWithName()

PropertyInfo DomItem::propertyInfoWithName ( const QString & name) const

Definition at line 690 of file qqmldomitem.cpp.

◆ qmlObject()

DomItem DomItem::qmlObject ( GoTo options = GoTo::Strict,
FilterUpOptions filterOptions = FilterUpOptions::ReturnOuter ) const

Returns the QmlObject that this belongs to.

qmlObject() might also return the object of a component if GoTo:MostLikely is used.

Definition at line 423 of file qqmldomitem.cpp.

◆ refreshed()

DomItem QQmlJS::Dom::DomItem::refreshed ( ) const
inline

Definition at line 1040 of file qqmldomitem_p.h.

◆ resolve()

bool DomItem::resolve ( const Path & path,
DomItem::Visitor visitor,
const ErrorHandler & errorHandler,
ResolveOptions options = ResolveOption::None,
const Path & fullPath = Path(),
QList< Path > * visitedRefs = nullptr ) const

Definition at line 770 of file qqmldomitem.cpp.

◆ revision()

int DomItem::revision ( ) const

Definition at line 2321 of file qqmldomitem.cpp.

◆ rootQmlObject()

DomItem DomItem::rootQmlObject ( GoTo option = GoTo::Strict) const

Definition at line 458 of file qqmldomitem.cpp.

◆ scope()

DomItem DomItem::scope ( FilterUpOptions options = FilterUpOptions::ReturnOuter) const

Definition at line 633 of file qqmldomitem.cpp.

◆ semanticScope()

QQmlJSScope::ConstPtr DomItem::semanticScope ( ) const

Definition at line 649 of file qqmldomitem.cpp.

◆ size()

index_type QQmlJS::Dom::DomItem::size ( ) const
inline

Definition at line 960 of file qqmldomitem_p.h.

◆ sortedKeys()

QStringList DomItem::sortedKeys ( ) const

Definition at line 1168 of file qqmldomitem.cpp.

◆ subDataItem()

template<typename T>
DomItem DomItem::subDataItem ( const PathEls::PathComponent & c,
const T & value,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const

Definition at line 2027 of file qqmldomitem_p.h.

◆ subDataItemField()

template<typename T>
DomItem QQmlJS::Dom::DomItem::subDataItemField ( QStringView f,
const T & value,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const
inline

Definition at line 1075 of file qqmldomitem_p.h.

◆ subListItem()

DomItem DomItem::subListItem ( const List & list) const
inline

Definition at line 2269 of file qqmldomitem_p.h.

◆ subLocationItem()

DomItem QQmlJS::Dom::DomItem::subLocationItem ( const PathEls::PathComponent & c,
SourceLocation loc ) const
inline

Definition at line 1101 of file qqmldomitem_p.h.

◆ subMapItem()

DomItem DomItem::subMapItem ( const Map & map) const
inline

Definition at line 2274 of file qqmldomitem_p.h.

◆ subObjectWrapItem()

DomItem QQmlJS::Dom::DomItem::subObjectWrapItem ( SimpleObjectWrap obj) const
inline

Definition at line 1140 of file qqmldomitem_p.h.

◆ subOwnerItem()

template<typename Owner>
DomItem QQmlJS::Dom::DomItem::subOwnerItem ( const PathEls::PathComponent & c,
Owner o ) const
inline

Definition at line 1152 of file qqmldomitem_p.h.

◆ subReferenceItem()

DomItem DomItem::subReferenceItem ( const PathEls::PathComponent & c,
const Path & referencedObject ) const

Definition at line 2439 of file qqmldomitem.cpp.

◆ subReferencesItem()

DomItem DomItem::subReferencesItem ( const PathEls::PathComponent & c,
const QList< Path > & paths ) const

Definition at line 2430 of file qqmldomitem.cpp.

◆ subScriptElementWrapperItem()

DomItem QQmlJS::Dom::DomItem::subScriptElementWrapperItem ( const ScriptElementVariant & obj) const
inline

Definition at line 1145 of file qqmldomitem_p.h.

◆ subValueItem()

template<typename T>
DomItem DomItem::subValueItem ( const PathEls::PathComponent & c,
const T & value,
ConstantData::Options options = ConstantData::Options::MapIsMap ) const

Definition at line 2000 of file qqmldomitem_p.h.

◆ top()

DomItem DomItem::top ( ) const

Definition at line 502 of file qqmldomitem.cpp.

◆ topPtr()

shared_ptr< DomTop > DomItem::topPtr ( ) const

Definition at line 2449 of file qqmldomitem.cpp.

◆ toString()

QString DomItem::toString ( ) const

Definition at line 2306 of file qqmldomitem.cpp.

◆ universe()

DomItem DomItem::universe ( ) const

Definition at line 522 of file qqmldomitem.cpp.

◆ value()

QCborValue DomItem::value ( ) const

Definition at line 2255 of file qqmldomitem.cpp.

◆ values()

QList< DomItem > DomItem::values ( ) const

Definition at line 1193 of file qqmldomitem.cpp.

◆ visitDirectAccessibleScopes()

bool DomItem::visitDirectAccessibleScopes ( function_ref< bool(const DomItem &)> visitor,
VisitPrototypesOptions options = VisitPrototypesOption::Normal,
const ErrorHandler & h = nullptr,
QSet< quintptr > * visited = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Definition at line 1580 of file qqmldomitem.cpp.

◆ visitEl()

template<typename F>
auto QQmlJS::Dom::DomItem::visitEl ( F f) const
inline

Definition at line 873 of file qqmldomitem_p.h.

◆ visitIndexes()

bool DomItem::visitIndexes ( function_ref< bool(const DomItem &)> visitor) const

Definition at line 1151 of file qqmldomitem.cpp.

◆ visitKeys()

bool DomItem::visitKeys ( function_ref< bool(const QString &, const DomItem &)> visitor) const

Definition at line 1181 of file qqmldomitem.cpp.

◆ visitLocalSymbolsNamed()

bool DomItem::visitLocalSymbolsNamed ( const QString & name,
function_ref< bool(const DomItem &)> visitor ) const

Definition at line 2159 of file qqmldomitem.cpp.

◆ visitLookup()

bool DomItem::visitLookup ( const QString & symbolName,
function_ref< bool(const DomItem &)> visitor,
LookupType type = LookupType::Symbol,
LookupOptions opts = LookupOption::Normal,
const ErrorHandler & errorHandler = nullptr,
QSet< quintptr > * visited = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Definition at line 1924 of file qqmldomitem.cpp.

◆ visitLookup1()

bool DomItem::visitLookup1 ( const QString & symbolName,
function_ref< bool(const DomItem &)> visitor,
LookupOptions opts = LookupOption::Normal,
const ErrorHandler & h = nullptr,
QSet< quintptr > * visited = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Definition at line 1782 of file qqmldomitem.cpp.

◆ visitPrototypeChain()

bool DomItem::visitPrototypeChain ( function_ref< bool(const DomItem &)> visitor,
VisitPrototypesOptions options = VisitPrototypesOption::Normal,
const ErrorHandler & h = nullptr,
QSet< quintptr > * visited = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Definition at line 1535 of file qqmldomitem.cpp.

◆ visitScopeChain()

bool DomItem::visitScopeChain ( function_ref< bool(const DomItem &)> visitor,
LookupOptions options = LookupOption::Normal,
const ErrorHandler & h = nullptr,
QSet< quintptr > * visited = nullptr,
QList< Path > * visitedRefs = nullptr ) const

Let the visitor visit the QML scope hierarchy of this DomItem.

Definition at line 1665 of file qqmldomitem.cpp.

◆ visitStaticTypePrototypeChains()

bool DomItem::visitStaticTypePrototypeChains ( function_ref< bool(const DomItem &)> visitor,
VisitPrototypesOptions options = VisitPrototypesOption::Normal,
const ErrorHandler & h = nullptr,
QSet< quintptr > * visited = nullptr,
QList< Path > * visitedRefs = nullptr ) const

DomItem::visitStaticTypePrototypeChains.

Parameters
visitor
visitFirst
visited
Returns

visit the values JS reaches accessing a type directly: the values if it is a singleton or the attached type

Definition at line 1627 of file qqmldomitem.cpp.

◆ visitSubSymbolsNamed()

bool QQmlJS::Dom::DomItem::visitSubSymbolsNamed ( const QString & name,
function_ref< bool(const DomItem &)> visitor ) const

◆ visitTree()

bool DomItem::visitTree ( const Path & basePath,
DomItem::ChildrenVisitor visitor,
VisitOptions options = VisitOption::Default,
DomItem::ChildrenVisitor openingVisitor = emptyChildrenVisitor,
DomItem::ChildrenVisitor closingVisitor = emptyChildrenVisitor,
const FieldFilter & filter = FieldFilter::noFilter() ) const

Visits recursively all the children of this item using the given visitors.

First, the visitor is called and can continue or exit the visit by returning true or false.

Second, the openingVisitor is called and controls if the children of the current item needs to be visited or not by returning true or false. In either case, the visitation of all the other siblings is not affected. If both visitor and openingVisitor returned true, then the childrens of the current item will be recursively visited.

Finally, after all the children were visited by visitor and openingVisitor, the closingVisitor is called. Its return value is currently ignored.

Compared to the AST::Visitor*, openingVisitor and closingVisitor are called in the same order as the visit() and endVisit()-calls.

Filtering allows to not visit certain part of the trees, and is checked before(!) the lazy child is instantiated via its lambda. For example, visiting propertyInfos or defaultPropertyname takes a lot of time because it resolves and collects all properties inherited from base types, and might not even be relevant for the visitors.

Definition at line 1424 of file qqmldomitem.cpp.

◆ visitUp()

bool DomItem::visitUp ( function_ref< bool(const DomItem &)> visitor) const

Let the visitor visit the Dom Tree hierarchy of this DomItem.

Definition at line 1650 of file qqmldomitem.cpp.

◆ wrap()

template<typename T>
DomItem DomItem::wrap ( const PathEls::PathComponent & c,
const T & obj ) const

Definition at line 2064 of file qqmldomitem_p.h.

◆ wrapField()

template<typename T>
DomItem QQmlJS::Dom::DomItem::wrapField ( QStringView f,
const T & obj ) const
inline

Definition at line 1162 of file qqmldomitem_p.h.

◆ writeOut() [1/2]

bool DomItem::writeOut ( const QString & path,
int nBackups = 2,
const LineWriterOptions & opt = LineWriterOptions(),
FileWriter * fw = nullptr,
WriteOutChecks extraChecks = WriteOutCheck::Default ) const

Definition at line 1329 of file qqmldomitem.cpp.

◆ writeOut() [2/2]

void DomItem::writeOut ( OutWriter & lw) const

Definition at line 1222 of file qqmldomitem.cpp.

◆ writeOutForFile()

bool DomItem::writeOutForFile ( OutWriter & ow,
WriteOutChecks extraChecks ) const

Performes WriteOut of the FileItem and verifies the consistency of the DOM structure.

OutWriter is essentially a visitor traversing the DOM structure, starting from the current item representing a FileItem. While traversing it might be saving some intermediate information, used later for restoring written out item. Restoration is needed to validate that the DOM structure of the written item has not changed.

Definition at line 1317 of file qqmldomitem.cpp.

◆ writeOutPost()

void DomItem::writeOutPost ( OutWriter & lw) const

Definition at line 1229 of file qqmldomitem.cpp.

◆ writeOutPre()

void DomItem::writeOutPre ( OutWriter & lw) const

Definition at line 1203 of file qqmldomitem.cpp.

◆ AstComments

friend class AstComments
friend

Definition at line 1291 of file qqmldomitem_p.h.

◆ ConstantData

friend class ConstantData
friend

Definition at line 1288 of file qqmldomitem_p.h.

◆ DomBase

friend class DomBase
friend

Definition at line 1280 of file qqmldomitem_p.h.

◆ DomElement

friend class DomElement
friend

Definition at line 1281 of file qqmldomitem_p.h.

◆ DomEnvironment

friend class DomEnvironment
friend

Definition at line 1286 of file qqmldomitem_p.h.

◆ DomUniverse

friend class DomUniverse
friend

Definition at line 1285 of file qqmldomitem_p.h.

◆ ExternalItemInfoBase

friend class ExternalItemInfoBase
friend

Definition at line 1287 of file qqmldomitem_p.h.

◆ FileLocations::Node

friend class FileLocations::Node
friend

Definition at line 1292 of file qqmldomitem_p.h.

◆ List

friend class List
friend

Definition at line 1283 of file qqmldomitem_p.h.

◆ Map

friend class Map
friend

Definition at line 1282 of file qqmldomitem_p.h.

◆ MutableDomItem

friend class MutableDomItem
friend

Definition at line 1289 of file qqmldomitem_p.h.

◆ operator==

QMLDOM_EXPORT bool operator== ( const DomItem & o1,
const DomItem & o2 )
friend

Definition at line 3170 of file qqmldomitem.cpp.

◆ QmlObject

friend class QmlObject
friend

Definition at line 1284 of file qqmldomitem_p.h.

◆ ScriptExpression

friend class ScriptExpression
friend

Definition at line 1290 of file qqmldomitem_p.h.

◆ TestDomItem

friend class TestDomItem
friend

Definition at line 1293 of file qqmldomitem_p.h.

Member Data Documentation

◆ domErrorGroup

ErrorGroup DomItem::domErrorGroup = NewErrorGroup("Dom")
static

Definition at line 865 of file qqmldomitem_p.h.

◆ empty

DomItem DomItem::empty = DomItem()
static

Definition at line 868 of file qqmldomitem_p.h.


The documentation for this class was generated from the following files: