17 #ifndef QGSEXPRESSIONNODEIMPL_H
18 #define QGSEXPRESSIONNODEIMPL_H
51 SIP_PYOBJECT __repr__();
53 QString
str = QStringLiteral(
"<QgsExpressionNodeUnaryOperator: %1>" ).arg( sipCpp->text() );
54 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
71 QString
dump()
const override;
76 QList<const QgsExpressionNode *>
nodes()
const override;
SIP_SKIP
92 static const
char *UNARY_OPERATOR_TEXT[];
147 , mOpRight( opRight )
152 SIP_PYOBJECT __repr__();
154 QString
str = QStringLiteral(
"<QgsExpressionNodeBinaryOperator: %1>" ).arg( sipCpp->text() );
155 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
179 QString
dump()
const override;
184 QList<const QgsExpressionNode *>
nodes( )
const override;
SIP_SKIP
193 int precedence() const;
198 bool leftAssociative() const;
204 QString text() const;
207 bool compare(
double diff );
208 qlonglong computeInt( qlonglong x, qlonglong y );
209 double computeDouble(
double x,
double y );
216 QDateTime computeDateTimeFromInterval( const QDateTime &d,
QgsInterval *i );
222 static const
char *BINARY_OPERATOR_TEXT[];
238 : mContainer( container )
258 QString
dump()
const override;
263 QList<const QgsExpressionNode *>
nodes( )
const override;
SIP_SKIP
312 QString
dump()
const override;
317 QList<const QgsExpressionNode *>
nodes()
const override;
SIP_SKIP
345 SIP_PYOBJECT __repr__();
350 function = fd->name();
354 function = QString::number( sipCpp->fnIndex() );
357 QString
str = QStringLiteral(
"<QgsExpressionNodeFunction: %1>" ).arg(
function );
358 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
375 QString
dump()
const override;
381 QList<const QgsExpressionNode *>
nodes()
const override;
SIP_SKIP
387 static
bool validateParams(
int fnIndex,
QgsExpressionNode::NodeList *args, QString &error );
391 NodeList *mArgs =
nullptr;
410 SIP_PYOBJECT __repr__();
412 QString
str = QStringLiteral(
"<QgsExpressionNodeLiteral: %1>" ).arg( sipCpp->valueAsString() );
413 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
418 inline QVariant
value()
const {
return mValue; }
423 QString
dump()
const override;
429 QList<const QgsExpressionNode *>
nodes()
const override;
SIP_SKIP
439 QString valueAsString() const;
463 SIP_PYOBJECT __repr__();
465 QString
str = QStringLiteral(
"<QgsExpressionNodeColumnRef: \"%1\">" ).arg( sipCpp->name() );
466 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
471 QString
name()
const {
return mName; }
476 QString
dump()
const override;
481 QList<const QgsExpressionNode *>
nodes( )
const override;
SIP_SKIP
567 QString
dump()
const override;
585 QList<const QgsExpressionNode *>
nodes()
const override;
SIP_SKIP
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A abstract base class for defining QgsExpression functions.
A binary expression operator, which operates on two values.
QgsExpressionNodeBinaryOperator::BinaryOperator op() const
Returns the binary operator.
QgsExpressionNode * opRight() const
Returns the node to the right of the operator.
QgsExpressionNode * opLeft() const
Returns the node to the left of the operator.
QgsExpressionNodeBinaryOperator(QgsExpressionNodeBinaryOperator::BinaryOperator op, QgsExpressionNode *opLeft, QgsExpressionNode *opRight)
Binary combination of the left and the right with op.
~QgsExpressionNodeBinaryOperator() override
BinaryOperator
list of binary operators
An expression node which takes it value from a feature's field.
QgsExpressionNodeColumnRef(const QString &name)
Constructor for QgsExpressionNodeColumnRef, referencing the column with the specified name.
QString name() const
The name of the column.
Represents a "WHEN... THEN..." portation of a CASE WHEN clause in an expression.
WhenThen(const WhenThen &rh)=delete
WhenThen nodes cannot be copied.
QgsExpressionNode * thenExp() const
The expression node that makes the THEN result part of the condition.
WhenThen & operator=(const WhenThen &rh)=delete
WhenThen nodes cannot be copied.
An expression node for CASE WHEN clauses.
QgsExpressionNodeCondition(const QgsExpressionNodeCondition::WhenThenList &conditions, QgsExpressionNode *elseExp=nullptr)
Create a new node with the given list of conditions and an optional elseExp expression.
QList< QgsExpressionNodeCondition::WhenThen * > WhenThenList
QgsExpressionNodeCondition(QgsExpressionNodeCondition::WhenThenList *conditions, QgsExpressionNode *elseExp=nullptr)
Create a new node with the given list of conditions and an optional elseExp expression.
QgsExpressionNode * elseExp() const
The ELSE expression used for the condition.
QVariant evalNode(QgsExpression *parent, const QgsExpressionContext *context) override
Abstract virtual eval method Errors are reported to the parent.
bool isStatic(QgsExpression *parent, const QgsExpressionContext *context) const override
Returns true if this node can be evaluated for a static value.
bool prepareNode(QgsExpression *parent, const QgsExpressionContext *context) override
Abstract virtual preparation method Errors are reported to the parent.
WhenThenList conditions() const
The list of WHEN THEN expression parts of the expression.
~QgsExpressionNodeCondition() override
An expression node for expression functions.
int fnIndex() const
Returns the index of the node's function.
QgsExpressionNode::NodeList * args() const
Returns a list of arguments specified for the function.
An expression node for value IN or NOT IN clauses.
QgsExpressionNode * node() const
Returns the expression node.
QgsExpressionNode::NodeList * list() const
Returns the list of nodes to search for matching values within.
QgsExpressionNodeInOperator(QgsExpressionNode *node, QgsExpressionNode::NodeList *list, bool notin=false)
This node tests if the result of node is in the result of list.
bool isNotIn() const
Returns true if this node is a "NOT IN" operator, or false if the node is a normal "IN" operator.
A indexing expression operator, which allows use of square brackets [] to reference map and array ite...
QgsExpressionNodeIndexOperator(QgsExpressionNode *container, QgsExpressionNode *index)
Constructor for QgsExpressionNodeIndexOperator.
QgsExpressionNode * container() const
Returns the container node, representing an array or map value.
QgsExpressionNode * index() const
Returns the index node, representing an array element index or map key.
~QgsExpressionNodeIndexOperator() override
An expression node for literal values.
QVariant value() const
The value of the literal.
QgsExpressionNodeLiteral(const QVariant &value)
Constructor for QgsExpressionNodeLiteral, with the specified literal value.
A unary node is either negative as in boolean (not) or as in numbers (minus).
~QgsExpressionNodeUnaryOperator() override
QgsExpressionNodeUnaryOperator::UnaryOperator op() const
Returns the unary operator.
QgsExpressionNodeUnaryOperator(QgsExpressionNodeUnaryOperator::UnaryOperator op, QgsExpressionNode *operand)
A node unary operator is modifying the value of operand by negating it with op.
UnaryOperator
list of unary operators
QgsExpressionNode * operand() const
Returns the node the operator will operate upon.
A list of expression nodes.
Abstract base class for all nodes that can appear in an expression.
virtual QList< const QgsExpressionNode * > nodes() const =0
Returns a list of all nodes which are used in this expression.
virtual QString dump() const =0
Dump this node into a serialized (part) of an expression.
virtual QgsExpressionNode::NodeType nodeType() const =0
Gets the type of this node.
virtual QSet< QString > referencedColumns() const =0
Abstract virtual method which returns a list of columns required to evaluate this node.
NodeType
Known node types.
virtual bool needsGeometry() const =0
Abstract virtual method which returns if the geometry is required to evaluate this expression.
virtual QSet< QString > referencedFunctions() const =0
Returns a set of all functions which are used in this expression.
virtual QSet< QString > referencedVariables() const =0
Returns a set of all variables which are used in this expression.
virtual QgsExpressionNode * clone() const =0
Generate a clone of this node.
Class for parsing and evaluation of expressions (formerly called "search strings").
A representation of the interval between two datetime values.