4#ifndef QQMLDOMSCRIPTELEMENTS_P_H
5#define QQMLDOMSCRIPTELEMENTS_P_H
32namespace ScriptElements {
38 using BaseT = ScriptElementBase<type>;
94 return current.second;
106 "use the setCombinedLocation instead!");
111 std::vector<std::pair<FileLocationRegion, QQmlJS::SourceLocation>>
m_locations;
130 BaseT::updatePathFromOwner(
p);
131 for (
int i = 0;
i < m_list.size(); ++
i) {
133 m_list[
i].base()->updatePathFromOwner(
p.index(
i));
138 BaseT::createFileLocations(
base);
140 for (
int i = 0;
i < m_list.size(); ++
i) {
142 m_list[
i].base()->createFileLocations(
base);
148 auto asList = List::fromQList<ScriptElementVariant>(
151 ->
DomItem {
return list.subScriptElementWrapperItem(wrapped); });
158 void reverse() { std::reverse(m_list.begin(), m_list.end()); }
160 const QList<ScriptElementVariant> &
qList() {
return std::as_const(m_list); };
163 QList<ScriptElementVariant> m_list;
170 using VariantT = std::variant<ScriptElementVariant, ScriptList>;
181 return m_children.insert(std::make_pair(
name,
v));
191 std::map<QQmlJS::Dom::FieldType, VariantT> m_children;
233 using VariantT = std::variant<QString, double, bool, std::nullptr_t>;
243 return std::visit([](
auto &&e) ->
QCborValue {
return e; }, m_value);
264 m_initializer = newInitializer;
270 m_declarations = newDeclaration;
347 int op()
const {
return m_operator; }
\inmodule QtCore\reentrant
Path pathFromOwner() const
static void addRegion(const Tree &fLoc, FileLocationRegion region, SourceLocation loc)
std::shared_ptr< AttachedInfoT< FileLocations > > Tree
static Tree ensure(const Tree &base, const Path &basePath, AttachedInfo::PathType pType=AttachedInfo::PathType::Relative)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor) const override
Use this to contain any script element.
void setLeft(const ScriptElementVariant &newLeft)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
ScriptElementVariant left() const
ScriptElementVariant right() const
void updatePathFromOwner(const Path &p) override
void createFileLocations(const FileLocations::Tree &base) override
void setRight(const ScriptElementVariant &newRight)
void createFileLocations(const FileLocations::Tree &base) override
void updatePathFromOwner(const Path &p) override
void setStatements(const ScriptList &statements)
ScriptList statements() const
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
void setInitializer(const ScriptElementVariant &newInitializer)
void setExpression(const ScriptElementVariant &newExpression)
void setCondition(const ScriptElementVariant &newCondition)
ScriptElementVariant body() const
ScriptElementVariant condition() const
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
ScriptElementVariant initializer() const
ScriptElementVariant declarations() const
void createFileLocations(const FileLocations::Tree &base) override
void setDeclarations(const ScriptElementVariant &newDeclaration)
ScriptElementVariant expression() const
void setBody(const ScriptElementVariant &newBody)
void updatePathFromOwner(const Path &p) override
void createFileLocations(const FileLocations::Tree &base) override
void updatePathFromOwner(const Path &p) override
void setKind(DomType kind)
std::variant< ScriptElementVariant, ScriptList > VariantT
DomType kind() const override
decltype(auto) insertChild(QStringView name, VariantT v)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
QCborValue value() const override
void setName(QStringView name)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
ScriptElementVariant condition() const
void setCondition(const ScriptElementVariant &condition)
void setConsequence(const ScriptElementVariant &consequence)
ScriptElementVariant consequence()
void setAlternative(const ScriptElementVariant &alternative)
void createFileLocations(const FileLocations::Tree &base) override
ScriptElementVariant alternative()
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
void updatePathFromOwner(const Path &p) override
std::variant< QString, double, bool, std::nullptr_t > VariantT
VariantT literalValue() const
void setLiteralValue(VariantT value)
QCborValue value() const override
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
ScriptElementVariant expression() const
void createFileLocations(const FileLocations::Tree &base) override
void updatePathFromOwner(const Path &p) override
void setExpression(ScriptElementVariant expression)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
void setMainRegionLocation(const QQmlJS::SourceLocation &location)
void createFileLocations(const FileLocations::Tree &base) override
ScriptElementBase(QQmlJS::SourceLocation combinedLocation=QQmlJS::SourceLocation{})
ScriptElementBase< type > BaseT
DomType kind() const override
void addLocation(FileLocationRegion region, QQmlJS::SourceLocation location)
DomKind domKind() const override
QQmlJS::SourceLocation mainRegionLocation() const
All of the following overloads are only required for optimization purposes.
static constexpr DomType kindValue
static constexpr DomKind domKindValue
std::vector< std::pair< FileLocationRegion, QQmlJS::SourceLocation > > m_locations
ScriptElementBase(QQmlJS::SourceLocation first, QQmlJS::SourceLocation last)
List asList(const Path &path) const
void createFileLocations(const FileLocations::Tree &base) override
void replaceKindForGenericChildren(DomType oldType, DomType newType)
void append(const ScriptElementVariant &statement)
void updatePathFromOwner(const Path &p) override
void append(const ScriptList &list)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
const QList< ScriptElementVariant > & qList()
void createFileLocations(const FileLocations::Tree &base) override
ScopeType scopeType() const
void setIdentifier(const ScriptElementVariant &identifier)
ScriptElementVariant initializer() const
void updatePathFromOwner(const Path &p) override
void setInitializer(const ScriptElementVariant &initializer)
ScriptElementVariant identifier() const
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
void setScopeType(ScopeType scopeType)
ScriptList declarations()
void createFileLocations(const FileLocations::Tree &base) override
void updatePathFromOwner(const Path &p) override
void setDeclarations(const ScriptList &list)
bool iterateDirectSubpaths(const DomItem &self, DirectVisitor visitor) const override
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
GLsizei const GLchar *const * path
#define Q_ASSERT_X(cond, x, msg)
QCborValue(QCborTag(2), QByteArray("\x01\0\0\0\0\0\0\0\0", 9))
[0]
A common base class for all the script elements.