26 lines
882 B

#ifndef STORM_STORAGE_EXPRESSIONS_BASEEXPRESSION_H_
#define STORM_STORAGE_EXPRESSIONS_BASEEXPRESSION_H_
#include "src/storage/expressions/Valuation.h"
namespace storm {
namespace expressions {
class BaseExpression {
public:
/*!
* Each node in an expression tree has a uniquely defined type from this enum.
*/
enum ReturnType {undefined, bool_, int_, double_};
std::unique_ptr<BaseExpression> substitute() const = 0;
virtual int_fast64_t evaluateAsInt(Evaluation const& evaluation) const = 0;
virtual bool evaluateAsBool(Evaluation const& evaluation) const = 0;
virtual double evaluateAsDouble(Evaluation const& evaluation) const = 0;
};
}
}
#endif /* STORM_STORAGE_EXPRESSIONS_BASEEXPRESSION_H_ */