QgsExpressionNodeIndexOperator class

A indexing expression operator, which allows use of square brackets [] to reference map and array items.

Base classes

class QgsExpressionNode
Abstract base class for all nodes that can appear in an expression.

Constructors, destructors, conversion operators

QgsExpressionNodeIndexOperator(QgsExpressionNode* container, QgsExpressionNode* index)
Constructor for QgsExpressionNodeIndexOperator.

Public functions

auto clone() const -> QgsExpressionNode* override
Generate a clone of this node.
auto container() const -> QgsExpressionNode*
Returns the container node, representing an array or map value.
auto dump() const -> QString override
Dump this node into a serialized (part) of an expression.
auto evalNode(QgsExpression* parent, const QgsExpressionContext* context) -> QVariant override
Abstract virtual eval method Errors are reported to the parent.
auto index() const -> QgsExpressionNode*
Returns the index node, representing an array element index or map key.
auto isStatic(QgsExpression* parent, const QgsExpressionContext* context) const -> bool override
Returns true if this node can be evaluated for a static value.
auto needsGeometry() const -> bool override
Abstract virtual method which returns if the geometry is required to evaluate this expression.
auto nodes() const -> QList<const QgsExpressionNode*> override
Returns a list of all nodes which are used in this expression.
auto nodeType() const -> QgsExpressionNode::NodeType override
Gets the type of this node.
auto prepareNode(QgsExpression* parent, const QgsExpressionContext* context) -> bool override
Abstract virtual preparation method Errors are reported to the parent.
auto referencedColumns() const -> QSet<QString> override
Abstract virtual method which returns a list of columns required to evaluate this node.
auto referencedFunctions() const -> QSet<QString> override
Returns a set of all functions which are used in this expression.
auto referencedVariables() const -> QSet<QString> override
Returns a set of all variables which are used in this expression.

Function documentation

QgsExpressionNode* QgsExpressionNodeIndexOperator::clone() const override

Generate a clone of this node.

Returns a deep copy of this node.

Ownership is transferred to the caller.

QgsExpressionNode* QgsExpressionNodeIndexOperator::container() const

Returns the container node, representing an array or map value.

QString QgsExpressionNodeIndexOperator::dump() const override

Dump this node into a serialized (part) of an expression.

The returned expression does not necessarily literally match the original expression, it's just guaranteed to behave the same way.

QVariant QgsExpressionNodeIndexOperator::evalNode(QgsExpression* parent, const QgsExpressionContext* context) override

Abstract virtual eval method Errors are reported to the parent.

QgsExpressionNode* QgsExpressionNodeIndexOperator::index() const

Returns the index node, representing an array element index or map key.

bool QgsExpressionNodeIndexOperator::isStatic(QgsExpression* parent, const QgsExpressionContext* context) const override

Returns true if this node can be evaluated for a static value.

This is used during the prepare() step and in case it returns true, the value of this node will already be evaluated and the result cached (and therefore not re-evaluated in subsequent calls to eval()). In case this returns true, prepareNode() will never be called.

bool QgsExpressionNodeIndexOperator::needsGeometry() const override

Abstract virtual method which returns if the geometry is required to evaluate this expression.

Returns true if a geometry is required to evaluate this expression

This needs to call needsGeometry() recursively on any child nodes.

QList<const QgsExpressionNode*> QgsExpressionNodeIndexOperator::nodes() const override

Returns a list of all nodes which are used in this expression.

QgsExpressionNode::NodeType QgsExpressionNodeIndexOperator::nodeType() const override

Gets the type of this node.

Returns The type of this node

bool QgsExpressionNodeIndexOperator::prepareNode(QgsExpression* parent, const QgsExpressionContext* context) override

Abstract virtual preparation method Errors are reported to the parent.

QSet<QString> QgsExpressionNodeIndexOperator::referencedColumns() const override

Abstract virtual method which returns a list of columns required to evaluate this node.

Returns A list of columns required to evaluate this expression

When reimplementing this, you need to return any column that is required to evaluate this node and in addition recursively collect all the columns required to evaluate child nodes.