#ifndef STORM_STORAGE_PRISM_BOOLEANVARIABLE_H_ #define STORM_STORAGE_PRISM_BOOLEANVARIABLE_H_ #include <map> #include "src/storage/prism/Variable.h" #include "src/utility/OsDetection.h" namespace storm { namespace prism { class BooleanVariable : public Variable { public: // Create default implementations of constructors/assignment. BooleanVariable() = default; BooleanVariable(BooleanVariable const& other) = default; BooleanVariable& operator=(BooleanVariable const& other)= default; #ifndef WINDOWS BooleanVariable(BooleanVariable&& other) = default; BooleanVariable& operator=(BooleanVariable&& other) = default; #endif /*! * Creates a boolean variable with the given constant initial value expression. * * @param variable The expression variable associated with this variable. * @param initialValueExpression The constant expression that defines the initial value of the variable. * @param filename The filename in which the variable is defined. * @param lineNumber The line number in which the variable is defined. */ BooleanVariable(storm::expressions::Variable const& variable, storm::expressions::Expression const& initialValueExpression, std::string const& filename = "", uint_fast64_t lineNumber = 0); /*! * Substitutes all identifiers in the boolean variable according to the given map. * * @param substitution The substitution to perform. * @return The resulting boolean variable. */ BooleanVariable substitute(std::map<storm::expressions::Variable, storm::expressions::Expression> const& substitution) const; virtual void createMissingInitialValue() override; friend std::ostream& operator<<(std::ostream& stream, BooleanVariable const& variable); }; } // namespace prism } // namespace storm #endif /* STORM_STORAGE_PRISM_BOOLEANVARIABLE_H_ */