You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.7 KiB
84 lines
1.7 KiB
/*
|
|
* BooleanConstantExpression.h
|
|
*
|
|
* Created on: 04.01.2013
|
|
* Author: chris
|
|
*/
|
|
|
|
#ifndef BOOLEANCONSTANTEXPRESSION_H_
|
|
#define BOOLEANCONSTANTEXPRESSION_H_
|
|
|
|
#include "ConstantExpression.h"
|
|
|
|
#include "src/utility/CuddUtility.h"
|
|
|
|
#include <boost/lexical_cast.hpp>
|
|
|
|
namespace storm {
|
|
|
|
namespace ir {
|
|
|
|
namespace expressions {
|
|
|
|
class BooleanConstantExpression : public ConstantExpression {
|
|
public:
|
|
BooleanConstantExpression(std::string constantName) : ConstantExpression(bool_, constantName) {
|
|
defined = false;
|
|
value = false;
|
|
}
|
|
|
|
virtual ~BooleanConstantExpression() {
|
|
|
|
}
|
|
|
|
virtual bool getValueAsBool(std::pair<std::vector<bool>, std::vector<int_fast64_t>> const* variableValues) const {
|
|
if (!defined) {
|
|
throw storm::exceptions::ExpressionEvaluationException() << "Cannot evaluate expression: "
|
|
<< "Boolean constant '" << this->getConstantName() << "' is undefined.";
|
|
} else {
|
|
return value;
|
|
}
|
|
}
|
|
|
|
virtual ADD* toAdd() const {
|
|
if (!defined) {
|
|
throw storm::exceptions::ExpressionEvaluationException() << "Cannot evaluate expression: "
|
|
<< "Boolean constant '" << this->getConstantName() << "' is undefined.";
|
|
}
|
|
|
|
storm::utility::CuddUtility* cuddUtility = storm::utility::cuddUtilityInstance();
|
|
return new ADD(*cuddUtility->getConstant(value ? 1 : 0));
|
|
}
|
|
|
|
virtual std::string toString() const {
|
|
std::string result = this->constantName;
|
|
if (defined) {
|
|
result += "[" + boost::lexical_cast<std::string>(value) + "]";
|
|
}
|
|
return result;
|
|
}
|
|
|
|
bool isDefined() {
|
|
return defined;
|
|
}
|
|
|
|
bool getValue() {
|
|
return value;
|
|
}
|
|
|
|
void define(bool value) {
|
|
defined = true;
|
|
this->value = value;
|
|
}
|
|
|
|
bool value;
|
|
bool defined;
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif /* BOOLEANCONSTANTEXPRESSION_H_ */
|