17#ifndef QGSEXPRESSIONNODEIMPL_H 
   18#define QGSEXPRESSIONNODEIMPL_H 
   50    SIP_PYOBJECT __repr__();
 
   52    QString str = QStringLiteral( 
"<QgsExpressionNodeUnaryOperator: %1>" ).arg( sipCpp->text() );
 
   53    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
   70    QString 
dump() 
const override;
 
   75    QList<const QgsExpressionNode *> 
nodes() 
const override; 
SIP_SKIP 
   97    std::unique_ptr<QgsExpressionNode> mOperand;
 
   99    static const char *UNARY_OPERATOR_TEXT[];
 
 
  154      , mOpRight( opRight )
 
 
  158    SIP_PYOBJECT __repr__();
 
  160    QString str = QStringLiteral( 
"<QgsExpressionNodeBinaryOperator: %1>" ).arg( sipCpp->text() );
 
  161    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
  185    QString 
dump() 
const override;
 
  190    QList<const QgsExpressionNode *> 
nodes( ) 
const override; 
SIP_SKIP 
  199    int precedence() const;
 
  204    bool leftAssociative() const;
 
  210    QString text() const;
 
  220    qlonglong computeInt( qlonglong x, qlonglong y );
 
  221    double computeDouble( 
double x, 
double y );
 
  228    QDateTime computeDateTimeFromInterval( 
const QDateTime &d, 
QgsInterval *i );
 
  236    std::unique_ptr<QgsExpressionNode> mOpLeft;
 
  237    std::unique_ptr<QgsExpressionNode> mOpRight;
 
  239    static const char *BINARY_OPERATOR_TEXT[];
 
 
  255      : mContainer( container )
 
 
  274    QString 
dump() 
const override;
 
  279    QList<const QgsExpressionNode *> 
nodes( ) 
const override; 
SIP_SKIP 
  294    std::unique_ptr<QgsExpressionNode> mContainer;
 
  295    std::unique_ptr<QgsExpressionNode> mIndex;
 
 
  313      , mLowerBound( nodeLowerBound )
 
  314      , mHigherBound( nodeHigherBound )
 
 
  329    QString 
dump() 
const override;
 
  334    QList<const QgsExpressionNode *> 
nodes() 
const override; 
SIP_SKIP 
  364    std::unique_ptr<QgsExpressionNode> mNode;
 
  365    std::unique_ptr<QgsExpressionNode> mLowerBound;
 
  366    std::unique_ptr<QgsExpressionNode> mHigherBound;
 
  367    bool mNegate = 
false;
 
 
  407    QString 
dump() 
const override;
 
  412    QList<const QgsExpressionNode *> 
nodes() 
const override; 
SIP_SKIP 
  426    std::unique_ptr<QgsExpressionNode> mNode;
 
  427    std::unique_ptr<QgsExpressionNodeInOperator::NodeList> mList;
 
 
  448    SIP_PYOBJECT __repr__();
 
  453      function = fd->name();
 
  457      function = QString::number( sipCpp->fnIndex() );
 
  460    QString str = QStringLiteral( 
"<QgsExpressionNodeFunction: %1>" ).arg( function );
 
  461    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
  478    QString 
dump() 
const override;
 
  484    QList<const QgsExpressionNode *> 
nodes() 
const override; 
SIP_SKIP 
  490    static 
bool validateParams( 
int fnIndex, 
QgsExpressionNode::NodeList *args, QString &error );
 
  504    std::unique_ptr<NodeList> mArgs;
 
 
  523    SIP_PYOBJECT __repr__();
 
  525    QString str = QStringLiteral( 
"<QgsExpressionNodeLiteral: %1>" ).arg( sipCpp->valueAsString() );
 
  526    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
  531    inline QVariant 
value()
 const { 
return mValue; }
 
  536    QString 
dump() 
const override;
 
  542    QList<const QgsExpressionNode *> 
nodes() 
const override; 
SIP_SKIP 
  552    QString valueAsString() const;
 
 
  576    SIP_PYOBJECT __repr__();
 
  578    QString str = QStringLiteral( 
"<QgsExpressionNodeColumnRef: \"%1\">" ).arg( sipCpp->name() );
 
  579    sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
  584    QString 
name()
 const { 
return mName; }
 
  589    QString 
dump() 
const override;
 
  594    QList<const QgsExpressionNode *> 
nodes( ) 
const override; 
SIP_SKIP 
 
  653        std::unique_ptr<QgsExpressionNode> mWhenExp;
 
  654        std::unique_ptr<QgsExpressionNode> mThenExp;
 
 
  669  : mConditions( conditions )
 
  670    , mElseExp( elseExp )
 
 
  678    QString 
dump() 
const override;
 
  696    QList<const QgsExpressionNode *> 
nodes() 
const override; 
SIP_SKIP 
  712    WhenThenList mConditions;
 
  713    std::unique_ptr<QgsExpressionNode> mElseExp;
 
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
 
An abstract base class for defining QgsExpression functions.
 
SQL-like BETWEEN and NOT BETWEEN predicates.
 
QgsExpressionNode * node() const
Returns the expression node.
 
QgsExpressionNodeBetweenOperator(QgsExpressionNode *node, QgsExpressionNode *nodeLowerBound, QgsExpressionNode *nodeHigherBound, bool negate=false)
This node tests if the result of node is between the result of nodeLowerBound and nodeHigherBound nod...
 
A binary expression operator, which operates on two values.
 
QgsExpressionNode * opLeft() const
Returns the node to the left of the operator.
 
QgsExpressionNode * opRight() const
Returns the node to the right of the operator.
 
QgsExpressionNodeBinaryOperator::BinaryOperator op() const
Returns the binary operator.
 
QgsExpressionNodeBinaryOperator(QgsExpressionNodeBinaryOperator::BinaryOperator op, QgsExpressionNode *opLeft, QgsExpressionNode *opRight)
Binary combination of the left and the right with op.
 
BinaryOperator
list of binary operators
 
An expression node which takes its 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 & operator=(const WhenThen &rh)=delete
 
WhenThen(const WhenThen &rh)=delete
 
QgsExpressionNode * thenExp() const
The expression node that makes the THEN result part of the condition.
 
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
 
QgsExpressionNode * elseExp() const
The ELSE expression used for the condition.
 
WhenThenList conditions() const
The list of WHEN THEN expression parts of the expression.
 
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.
 
QgsExpressionNodeInOperator(QgsExpressionNode *node, QgsExpressionNode::NodeList *list, bool notin=false)
This node tests if the result of node is in the result of list.
 
QgsExpressionNode::NodeList * list() const
Returns the list of nodes to search for matching values within.
 
bool isNotIn() const
Returns true if this node is a "NOT IN" operator, or false if the node is a normal "IN" operator.
 
An indexing expression operator, which allows use of square brackets [] to reference map and array it...
 
QgsExpressionNodeIndexOperator(QgsExpressionNode *container, QgsExpressionNode *index)
Constructor for QgsExpressionNodeIndexOperator.
 
QgsExpressionNode * index() const
Returns the index node, representing an array element index or map key.
 
QgsExpressionNode * container() const
Returns the container node, representing an array or map value.
 
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::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.
 
QgsExpressionNode * operand() const
Returns the node the operator will operate upon.
 
UnaryOperator
list of unary operators
 
A list of expression nodes.
 
Abstract base class for all nodes that can appear in an expression.
 
virtual QString dump() const =0
Dump this node into a serialized (part) of an expression.
 
virtual QgsExpressionNode * clone() const =0
Generate a clone of this node.
 
virtual QSet< QString > referencedColumns() const =0
Abstract virtual method which returns a list of columns required to evaluate this node.
 
virtual QgsExpressionNode::NodeType nodeType() const =0
Gets the type of this node.
 
virtual QSet< QString > referencedVariables() const =0
Returns a set of all variables which are used in this expression.
 
NodeType
Known node types.
 
virtual bool needsGeometry() const =0
Abstract virtual method which returns if the geometry is required to evaluate this expression.
 
virtual QList< const QgsExpressionNode * > nodes() const =0
Returns a list of all nodes which are used in this expression.
 
virtual QSet< QString > referencedFunctions() const =0
Returns a set of all functions which are used in this expression.
 
Handles parsing and evaluation of expressions (formerly called "search strings").
 
A representation of the interval between two datetime values.