50 lines
1.8 KiB

#include "src/logic/InstantaneousRewardFormula.h"
namespace storm {
namespace logic {
InstantaneousRewardFormula::InstantaneousRewardFormula(uint_fast64_t timeBound) : timeBound(timeBound) {
// Intentionally left empty.
}
InstantaneousRewardFormula::InstantaneousRewardFormula(double timeBound) : timeBound(timeBound) {
// Intentionally left empty.
}
bool InstantaneousRewardFormula::isInstantaneousRewardFormula() const {
return true;
}
bool InstantaneousRewardFormula::hasDiscreteTimeBound() const {
return timeBound.which() == 0;
}
uint_fast64_t InstantaneousRewardFormula::getDiscreteTimeBound() const {
return boost::get<uint_fast64_t>(timeBound);
}
bool InstantaneousRewardFormula::hasContinuousTimeBound() const {
return timeBound.which() == 1;
}
double InstantaneousRewardFormula::getContinuousTimeBound() const {
if (this->hasDiscreteTimeBound()) {
return this->getDiscreteTimeBound();
} else {
return boost::get<double>(timeBound);
}
}
std::shared_ptr<Formula> InstantaneousRewardFormula::substitute(std::map<storm::expressions::Variable, storm::expressions::Expression> const& substitution) const {
return std::make_shared<InstantaneousRewardFormula>(*this);
}
std::ostream& InstantaneousRewardFormula::writeToStream(std::ostream& out) const {
if (this->hasDiscreteTimeBound()) {
out << "I=" << this->getDiscreteTimeBound();
} else {
out << "I=" << this->getContinuousTimeBound();
}
return out;
}
}
}