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 , QgsMeshCalcNode *left , QgsMeshCalcNode *right );
114 QgsMeshCalcNode(
const QString &datasetGroupName );
122 void setLeft( QgsMeshCalcNode *left );
125 void setRight( QgsMeshCalcNode *right );
133 bool calculate(
const QgsMeshCalcUtils &dsu, QgsMeshMemoryDatasetGroup &result,
bool isAggregate =
false )
const;
136 QStringList usedDatasetGroupNames()
const;
139 QStringList aggregatedUsedDatasetGroupNames()
const;
142 QStringList notAggregatedUsedDatasetGroupNames()
const;
150 static QgsMeshCalcNode *parseMeshCalcString(
const QString &str, QString &parserErrorMsg );
156 bool isNonTemporal()
const;
159 Q_DISABLE_COPY( QgsMeshCalcNode )
161 Type mType = tNoData;
162 std::unique_ptr<QgsMeshCalcNode> mLeft;
163 std::unique_ptr<QgsMeshCalcNode> mRight;
164 std::unique_ptr<QgsMeshCalcNode> mCondition;
165 double mNumber = std::numeric_limits<double>::quiet_NaN();
166 QString mDatasetGroupName;
167 Operator mOperator = opNONE;