#include "src/storage/expressions/VariableExpression.h" #include "src/exceptions/ExceptionMacros.h" namespace storm { namespace expressions { VariableExpression::VariableExpression(ExpressionReturnType returnType, std::string const& variableName) : BaseExpression(returnType), variableName(variableName) { // Intentionally left empty. } std::string const& VariableExpression::getVariableName() const { return this->variableName; } int_fast64_t VariableExpression::evaluateAsInt(Valuation const& evaluation) const { LOG_ASSERT((this->getReturnType() == ExpressionReturnType::int_), "Cannot evaluate expression as integer: return type is not an integer."); return evaluation.getIntegerValue(this->getVariableName()); } bool VariableExpression::evaluateAsBool(Valuation const& evaluation) const { LOG_ASSERT((this->getReturnType() == ExpressionReturnType::bool_), "Cannot evaluate expression as integer: return type is not an integer."); return evaluation.getBooleanValue(this->getVariableName()); } double VariableExpression::evaluateAsDouble(Valuation const& evaluation) const { LOG_ASSERT((this->getReturnType() == ExpressionReturnType::double_), "Cannot evaluate expression as integer: return type is not an integer."); return evaluation.getDoubleValue(this->getVariableName()); } std::unique_ptr VariableExpression::operator+(BaseExpression const& other) const { // FIXME return nullptr; } std::unique_ptr operator-(BaseExpression const& other) const; std::unique_ptr operator-() const; std::unique_ptr operator*(BaseExpression const& other) const; std::unique_ptr operator/(BaseExpression const& other) const; std::unique_ptr operator&(BaseExpression const& other) const; std::unique_ptr operator|(BaseExpression const& other) const; std::unique_ptr operator~() const; std::unique_ptr equals(BaseExpression const& other) const; std::unique_ptr notEquals(BaseExpression const& other) const; std::unique_ptr greater(BaseExpression const& other) const; std::unique_ptr greaterOrEqual(BaseExpression const& other) const; std::unique_ptr less(BaseExpression const& other) const; std::unique_ptr lessOrEqual(BaseExpression const& other) const; std::unique_ptr minimum(BaseExpression const& other) const; std::unique_ptr maximum(BaseExpression const& other) const; std::unique_ptr mod(BaseExpression const& other) const; std::unique_ptr floor() const; std::unique_ptr ceil() const; void visit(ExpressionVisitor* visitor) const; } }