50 lines
2.1 KiB

#include "src/storage/jani/EdgeDestination.h"
#include "src/utility/macros.h"
#include "src/exceptions/WrongFormatException.h"
namespace storm {
namespace jani {
EdgeDestination::EdgeDestination(uint64_t locationId, storm::expressions::Expression const& probability, std::vector<Assignment> const& assignments, std::vector<RewardIncrement> const& rewardIncrements) : locationId(locationId), probability(probability), assignments(assignments), rewardIncrements(rewardIncrements) {
// Intentionally left empty.
}
void EdgeDestination::addAssignment(Assignment const& assignment) {
// We make sure that there are no two assignments to the same variable.
for (auto const& oldAssignment : assignments) {
STORM_LOG_THROW(oldAssignment.getExpressionVariable() != assignment.getExpressionVariable(), storm::exceptions::WrongFormatException, "Cannot add assignment '" << assignment << "', because another assignment '" << assignment << "' writes to the same target variable.");
}
assignments.push_back(assignment);
}
void EdgeDestination::addRewardIncrement(RewardIncrement const& rewardIncrement) {
rewardIncrements.push_back(rewardIncrement);
}
uint64_t EdgeDestination::getLocationId() const {
return locationId;
}
storm::expressions::Expression const& EdgeDestination::getProbability() const {
return probability;
}
void EdgeDestination::setProbability(storm::expressions::Expression const& probability) {
this->probability = probability;
}
std::vector<Assignment>& EdgeDestination::getAssignments() {
return assignments;
}
std::vector<Assignment> const& EdgeDestination::getAssignments() const {
return assignments;
}
std::vector<RewardIncrement> const& EdgeDestination::getRewardIncrements() const {
return rewardIncrements;
}
}
}