18#ifndef QGSMESHCALCNODE_H
19#define QGSMESHCALCNODE_H
43class CORE_EXPORT QgsMeshCalcNode
92 QgsMeshCalcNode(
double number );
100 QgsMeshCalcNode( Operator op, QgsMeshCalcNode *left, QgsMeshCalcNode *right );
108 QgsMeshCalcNode( QgsMeshCalcNode *condition ,
109 QgsMeshCalcNode *left ,
110 QgsMeshCalcNode *right );
116 QgsMeshCalcNode(
const QString &datasetGroupName );
124 void setLeft( QgsMeshCalcNode *left );
127 void setRight( QgsMeshCalcNode *right );
135 bool calculate(
const QgsMeshCalcUtils &dsu, QgsMeshMemoryDatasetGroup &result,
bool isAggregate =
false )
const;
138 QStringList usedDatasetGroupNames()
const;
141 QStringList aggregatedUsedDatasetGroupNames()
const;
144 QStringList notAggregatedUsedDatasetGroupNames()
const;
152 static QgsMeshCalcNode *parseMeshCalcString(
const QString &str, QString &parserErrorMsg );
158 bool isNonTemporal()
const;
161 Q_DISABLE_COPY( QgsMeshCalcNode )
163 Type mType = tNoData;
164 std::unique_ptr<QgsMeshCalcNode> mLeft;
165 std::unique_ptr<QgsMeshCalcNode> mRight;
166 std::unique_ptr<QgsMeshCalcNode> mCondition;
167 double mNumber = std::numeric_limits<double>::quiet_NaN();
168 QString mDatasetGroupName;
169 Operator mOperator = opNONE;