QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
|
An expression node for CASE WHEN clauses. More...
#include <qgsexpressionnodeimpl.h>
Classes | |
class | WhenThen |
Represents a "WHEN... THEN..." portation of a CASE WHEN clause in an expression. More... | |
Public Types | |
typedef QList< QgsExpressionNodeCondition::WhenThen * > | WhenThenList |
![]() | |
enum | NodeType { ntUnaryOperator , ntBinaryOperator , ntInOperator , ntFunction , ntLiteral , ntColumnRef , ntCondition , ntIndexOperator , ntBetweenOperator } |
Known node types. More... | |
Public Member Functions | |
QgsExpressionNodeCondition (const QgsExpressionNodeCondition::WhenThenList &conditions, QgsExpressionNode *elseExp=nullptr) | |
Create a new node with the given list of conditions and an optional elseExp expression. More... | |
QgsExpressionNodeCondition (QgsExpressionNodeCondition::WhenThenList *conditions, QgsExpressionNode *elseExp=nullptr) | |
Create a new node with the given list of conditions and an optional elseExp expression. More... | |
~QgsExpressionNodeCondition () override | |
QgsExpressionNode * | clone () const override |
Generate a clone of this node. More... | |
WhenThenList | conditions () const |
The list of WHEN THEN expression parts of the expression. More... | |
QString | dump () const override |
Dump this node into a serialized (part) of an expression. More... | |
QgsExpressionNode * | elseExp () const |
The ELSE expression used for the condition. More... | |
QVariant | evalNode (QgsExpression *parent, const QgsExpressionContext *context) override |
Abstract virtual eval method Errors are reported to the parent. More... | |
bool | isStatic (QgsExpression *parent, const QgsExpressionContext *context) const override |
Returns true if this node can be evaluated for a static value. More... | |
bool | needsGeometry () const override |
Abstract virtual method which returns if the geometry is required to evaluate this expression. More... | |
QList< const QgsExpressionNode * > | nodes () const override |
Returns a list of all nodes which are used in this expression. More... | |
QgsExpressionNode::NodeType | nodeType () const override |
Gets the type of this node. More... | |
bool | prepareNode (QgsExpression *parent, const QgsExpressionContext *context) override |
Abstract virtual preparation method Errors are reported to the parent. More... | |
QSet< QString > | referencedColumns () const override |
Abstract virtual method which returns a list of columns required to evaluate this node. More... | |
QSet< QString > | referencedFunctions () const override |
Returns a set of all functions which are used in this expression. More... | |
QSet< QString > | referencedVariables () const override |
Returns a set of all variables which are used in this expression. More... | |
![]() | |
virtual | ~QgsExpressionNode ()=default |
QVariant | cachedStaticValue () const |
Returns the node's static cached value. More... | |
virtual QgsExpressionNode * | clone () const =0 |
Generate a clone of this node. More... | |
virtual QString | dump () const =0 |
Dump this node into a serialized (part) of an expression. More... | |
const QgsExpressionNode * | effectiveNode () const |
Returns a reference to the simplest node which represents this node, after any compilation optimizations have been applied. More... | |
QVariant | eval (QgsExpression *parent, const QgsExpressionContext *context) |
Evaluate this node with the given context and parent. More... | |
bool | hasCachedStaticValue () const |
Returns true if the node can be replaced by a static cached value. More... | |
virtual bool | isStatic (QgsExpression *parent, const QgsExpressionContext *context) const =0 |
Returns true if this node can be evaluated for a static value. More... | |
virtual bool | needsGeometry () const =0 |
Abstract virtual method which returns if the geometry is required to evaluate this expression. More... | |
virtual QList< const QgsExpressionNode * > | nodes () const =0 |
Returns a list of all nodes which are used in this expression. More... | |
virtual QgsExpressionNode::NodeType | nodeType () const =0 |
Gets the type of this node. More... | |
bool | prepare (QgsExpression *parent, const QgsExpressionContext *context) |
Prepare this node for evaluation. More... | |
virtual QSet< QString > | referencedColumns () const =0 |
Abstract virtual method which returns a list of columns required to evaluate this node. More... | |
virtual QSet< QString > | referencedFunctions () const =0 |
Returns a set of all functions which are used in this expression. More... | |
virtual QSet< QString > | referencedVariables () const =0 |
Returns a set of all variables which are used in this expression. More... | |
Additional Inherited Members | |
![]() | |
int | parserFirstColumn = 0 |
First column in the parser this node was found. More... | |
int | parserFirstLine = 0 |
First line in the parser this node was found. More... | |
int | parserLastColumn = 0 |
Last column in the parser this node was found. More... | |
int | parserLastLine = 0 |
Last line in the parser this node was found. More... | |
![]() | |
QgsExpressionNode ()=default | |
Constructor. More... | |
QgsExpressionNode (const QgsExpressionNode &other) | |
Copy constructor. More... | |
void | cloneTo (QgsExpressionNode *target) const |
Copies the members of this node to the node provided in target. More... | |
QgsExpressionNode & | operator= (const QgsExpressionNode &other) |
Assignment operator. More... | |
![]() | |
QVariant | mCachedStaticValue |
Contains the static, precalculated value for the node if mHasCachedValue is true . More... | |
std::unique_ptr< QgsExpressionNode > | mCompiledSimplifiedNode |
Contains a compiled node which represents a simplified version of this node as a result of compilation optimizations. More... | |
bool | mHasCachedValue = false |
true if the node has a static, precalculated value. More... | |
An expression node for CASE WHEN clauses.
Definition at line 560 of file qgsexpressionnodeimpl.h.
Definition at line 610 of file qgsexpressionnodeimpl.h.
QgsExpressionNodeCondition::QgsExpressionNodeCondition | ( | QgsExpressionNodeCondition::WhenThenList * | conditions, |
QgsExpressionNode * | elseExp = nullptr |
||
) |
Create a new node with the given list of conditions and an optional elseExp expression.
Definition at line 1542 of file qgsexpressionnodeimpl.cpp.
|
inline |
Create a new node with the given list of conditions and an optional elseExp expression.
Definition at line 620 of file qgsexpressionnodeimpl.h.
|
override |
Definition at line 1549 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Generate a clone of this node.
Ownership is transferred to the caller.
Implements QgsExpressionNode.
Definition at line 1731 of file qgsexpressionnodeimpl.cpp.
|
inline |
The list of WHEN THEN expression parts of the expression.
Definition at line 636 of file qgsexpressionnodeimpl.h.
|
overridevirtual |
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.
Implements QgsExpressionNode.
Definition at line 1646 of file qgsexpressionnodeimpl.cpp.
|
inline |
The ELSE expression used for the condition.
Definition at line 642 of file qgsexpressionnodeimpl.h.
|
overridevirtual |
Abstract virtual eval method Errors are reported to the parent.
Implements QgsExpressionNode.
Definition at line 1560 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
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.
Implements QgsExpressionNode.
Definition at line 1743 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Abstract virtual method which returns if the geometry is required to evaluate this expression.
This needs to call needsGeometry()
recursively on any child nodes.
true
if a geometry is required to evaluate this expression Implements QgsExpressionNode.
Definition at line 1719 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Returns a list of all nodes which are used in this expression.
Implements QgsExpressionNode.
Definition at line 1704 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Gets the type of this node.
Implements QgsExpressionNode.
Definition at line 1555 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Abstract virtual preparation method Errors are reported to the parent.
Implements QgsExpressionNode.
Definition at line 1586 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Abstract virtual method which returns a list of columns required to evaluate this node.
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.
Implements QgsExpressionNode.
Definition at line 1659 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Returns a set of all functions which are used in this expression.
Implements QgsExpressionNode.
Definition at line 1690 of file qgsexpressionnodeimpl.cpp.
|
overridevirtual |
Returns a set of all variables which are used in this expression.
Implements QgsExpressionNode.
Definition at line 1676 of file qgsexpressionnodeimpl.cpp.