#ifndef STORM_STORAGE_EXPRESSIONS_CONSTANTEXPRESSION_H_ #define STORM_STORAGE_EXPRESSIONS_CONSTANTEXPRESSION_H_ #include "src/storage/expressions/BaseExpression.h" namespace storm { namespace expressions { class ConstantExpression : public BaseExpression { public: /*! * Creates a constant expression with the given return type and constant name. * * @param returnType The return type of the expression. * @param constantName The name of the constant associated with this expression. */ ConstantExpression(ExpressionReturnType returnType, std::string const& constantName); // Instantiate constructors and assignments with their default implementations. ConstantExpression(ConstantExpression const& other) = default; ConstantExpression& operator=(ConstantExpression const& other) = default; ConstantExpression(ConstantExpression&&) = default; ConstantExpression& operator=(ConstantExpression&&) = default; virtual ~ConstantExpression() = default; // Override base class methods. virtual std::set getVariables() const override; virtual std::set getConstants() const override; virtual std::unique_ptr simplify() const override; /*! * Retrieves the name of the constant. * * @return The name of the constant. */ std::string const& getConstantName() const; private: // The name of the constant. std::string constantName; }; } } #endif /* STORM_STORAGE_EXPRESSIONS_CONSTANTEXPRESSION_H_ */