QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
Classes | Public Types | Public Member Functions | List of all members
QgsExpressionNodeCondition Class Reference

An expression node for CASE WHEN clauses. More...

#include <qgsexpressionnodeimpl.h>

Inheritance diagram for QgsExpressionNodeCondition:
Inheritance graph
[legend]

Classes

class  WhenThen
 Represents a "WHEN... THEN..." portation of a CASE WHEN clause in an expression. More...
 

Public Types

typedef QList< QgsExpressionNodeCondition::WhenThen * > WhenThenList
 
- Public Types inherited from QgsExpressionNode
enum  NodeType {
  ntUnaryOperator, ntBinaryOperator, ntInOperator, ntFunction,
  ntLiteral, ntColumnRef, ntCondition, ntIndexOperator
}
 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
 
QgsExpressionNodeclone () 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...
 
QgsExpressionNodeelseExp () 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...
 
- Public Member Functions inherited from QgsExpressionNode
virtual ~QgsExpressionNode ()=default
 
QVariant eval (QgsExpression *parent, const QgsExpressionContext *context)
 Evaluate this node with the given context and parent. More...
 
bool prepare (QgsExpression *parent, const QgsExpressionContext *context)
 Prepare this node for evaluation. More...
 

Additional Inherited Members

- Public Attributes inherited from QgsExpressionNode
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...
 
- Protected Member Functions inherited from QgsExpressionNode
void cloneTo (QgsExpressionNode *target) const
 Copies the members of this node to the node provided in target. More...
 

Detailed Description

An expression node for CASE WHEN clauses.

Definition at line 440 of file qgsexpressionnodeimpl.h.

Member Typedef Documentation

◆ WhenThenList

Definition at line 490 of file qgsexpressionnodeimpl.h.

Constructor & Destructor Documentation

◆ QgsExpressionNodeCondition() [1/2]

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 1412 of file qgsexpressionnodeimpl.cpp.

◆ QgsExpressionNodeCondition() [2/2]

QgsExpressionNodeCondition::QgsExpressionNodeCondition ( const QgsExpressionNodeCondition::WhenThenList conditions,
QgsExpressionNode elseExp = nullptr 
)
inline

Create a new node with the given list of conditions and an optional elseExp expression.

Definition at line 500 of file qgsexpressionnodeimpl.h.

◆ ~QgsExpressionNodeCondition()

QgsExpressionNodeCondition::~QgsExpressionNodeCondition ( )
override

Definition at line 1419 of file qgsexpressionnodeimpl.cpp.

Member Function Documentation

◆ clone()

QgsExpressionNode * QgsExpressionNodeCondition::clone ( ) const
overridevirtual

Generate a clone of this node.

Ownership is transferred to the caller.

Returns
a deep copy of this node.

Implements QgsExpressionNode.

Definition at line 1555 of file qgsexpressionnodeimpl.cpp.

◆ conditions()

WhenThenList QgsExpressionNodeCondition::conditions ( ) const
inline

The list of WHEN THEN expression parts of the expression.

Returns
The list of WHEN THEN expression parts of the expression.

Definition at line 516 of file qgsexpressionnodeimpl.h.

◆ dump()

QString QgsExpressionNodeCondition::dump ( ) const
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 1473 of file qgsexpressionnodeimpl.cpp.

◆ elseExp()

QgsExpressionNode* QgsExpressionNodeCondition::elseExp ( ) const
inline

The ELSE expression used for the condition.

Returns
The ELSE expression used for the condition.

Definition at line 522 of file qgsexpressionnodeimpl.h.

◆ evalNode()

QVariant QgsExpressionNodeCondition::evalNode ( QgsExpression parent,
const QgsExpressionContext context 
)
overridevirtual

Abstract virtual eval method Errors are reported to the parent.

Since
QGIS 3.0

Implements QgsExpressionNode.

Definition at line 1430 of file qgsexpressionnodeimpl.cpp.

◆ isStatic()

bool QgsExpressionNodeCondition::isStatic ( QgsExpression parent,
const QgsExpressionContext context 
) const
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.

Since
QGIS 3.0

Implements QgsExpressionNode.

Definition at line 1566 of file qgsexpressionnodeimpl.cpp.

◆ needsGeometry()

bool QgsExpressionNodeCondition::needsGeometry ( ) const
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.

Returns
true if a geometry is required to evaluate this expression

Implements QgsExpressionNode.

Definition at line 1543 of file qgsexpressionnodeimpl.cpp.

◆ nodes()

QList< const QgsExpressionNode * > QgsExpressionNodeCondition::nodes ( ) const
overridevirtual

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

Note
not available in Python bindings
Since
QGIS 3.2

Implements QgsExpressionNode.

Definition at line 1528 of file qgsexpressionnodeimpl.cpp.

◆ nodeType()

QgsExpressionNode::NodeType QgsExpressionNodeCondition::nodeType ( ) const
overridevirtual

Gets the type of this node.

Returns
The type of this node

Implements QgsExpressionNode.

Definition at line 1425 of file qgsexpressionnodeimpl.cpp.

◆ prepareNode()

bool QgsExpressionNodeCondition::prepareNode ( QgsExpression parent,
const QgsExpressionContext context 
)
overridevirtual

Abstract virtual preparation method Errors are reported to the parent.

Since
QGIS 3.0

Implements QgsExpressionNode.

Definition at line 1456 of file qgsexpressionnodeimpl.cpp.

◆ referencedColumns()

QSet< QString > QgsExpressionNodeCondition::referencedColumns ( ) const
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.

Returns
A list of columns required to evaluate this expression

Implements QgsExpressionNode.

Definition at line 1486 of file qgsexpressionnodeimpl.cpp.

◆ referencedFunctions()

QSet< QString > QgsExpressionNodeCondition::referencedFunctions ( ) const
overridevirtual

Returns a set of all functions which are used in this expression.

Implements QgsExpressionNode.

Definition at line 1514 of file qgsexpressionnodeimpl.cpp.

◆ referencedVariables()

QSet< QString > QgsExpressionNodeCondition::referencedVariables ( ) const
overridevirtual

Returns a set of all variables which are used in this expression.

Implements QgsExpressionNode.

Definition at line 1500 of file qgsexpressionnodeimpl.cpp.


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