#include "src/logic/RewardOperatorFormula.h" namespace storm { namespace logic { RewardOperatorFormula::RewardOperatorFormula(boost::optional const& rewardModelName, std::shared_ptr const& subformula) : RewardOperatorFormula(rewardModelName, boost::optional(), boost::optional(), boost::optional(), subformula) { // Intentionally left empty. } RewardOperatorFormula::RewardOperatorFormula(boost::optional const& rewardModelName, ComparisonType comparisonType, double bound, std::shared_ptr const& subformula) : RewardOperatorFormula(rewardModelName, boost::optional(), boost::optional(comparisonType), boost::optional(bound), subformula) { // Intentionally left empty. } RewardOperatorFormula::RewardOperatorFormula(boost::optional const& rewardModelName, OptimizationDirection optimalityType, ComparisonType comparisonType, double bound, std::shared_ptr const& subformula) : RewardOperatorFormula(rewardModelName, boost::optional(optimalityType), boost::optional(comparisonType), boost::optional(bound), subformula) { // Intentionally left empty. } RewardOperatorFormula::RewardOperatorFormula(boost::optional const& rewardModelName, OptimizationDirection optimalityType, std::shared_ptr const& subformula) : RewardOperatorFormula(rewardModelName, boost::optional(optimalityType), boost::optional(), boost::optional(), subformula) { // Intentionally left empty. } bool RewardOperatorFormula::isRewardOperatorFormula() const { return true; } bool RewardOperatorFormula::isPctlStateFormula() const { return this->getSubformula().isRewardPathFormula(); } bool RewardOperatorFormula::containsRewardOperator() const { return true; } bool RewardOperatorFormula::containsNestedRewardOperators() const { return this->getSubformula().containsRewardOperator(); } bool RewardOperatorFormula::hasRewardModelName() const { return static_cast(this->rewardModelName); } std::string const& RewardOperatorFormula::getRewardModelName() const { return this->rewardModelName.get(); } boost::optional const& RewardOperatorFormula::getOptionalRewardModelName() const { return this->rewardModelName; } void RewardOperatorFormula::gatherReferencedRewardModels(std::set& referencedRewardModels) const { if (this->hasRewardModelName()) { referencedRewardModels.insert(this->getRewardModelName()); } else { referencedRewardModels.insert(""); } this->getSubformula().gatherReferencedRewardModels(referencedRewardModels); } RewardOperatorFormula::RewardOperatorFormula(boost::optional const& rewardModelName, boost::optional optimalityType, boost::optional comparisonType, boost::optional bound, std::shared_ptr const& subformula) : OperatorFormula(optimalityType, comparisonType, bound, subformula), rewardModelName(rewardModelName) { // Intentionally left empty. } std::ostream& RewardOperatorFormula::writeToStream(std::ostream& out) const { out << "R"; if (this->hasRewardModelName()) { out << "{\"" << this->getRewardModelName() << "\"}"; } OperatorFormula::writeToStream(out); return out; } } }