#include "storm/modelchecker/hints/ExplicitModelCheckerHint.h" #include "storm/adapters/RationalFunctionAdapter.h" #include "storm/utility/macros.h" #include "storm/exceptions/InvalidOperationException.h" namespace storm { namespace modelchecker { template bool ExplicitModelCheckerHint::isEmpty() const { return !hasResultHint() && !hasSchedulerHint() && !hasMaybeStates(); } template bool ExplicitModelCheckerHint::isExplicitModelCheckerHint() const { return true; } template bool ExplicitModelCheckerHint::hasResultHint() const { return resultHint.is_initialized(); } template std::vector const& ExplicitModelCheckerHint::getResultHint() const { return *resultHint; } template std::vector& ExplicitModelCheckerHint::getResultHint() { return *resultHint; } template void ExplicitModelCheckerHint::setResultHint(boost::optional> const& resultHint) { this->resultHint = resultHint; } template void ExplicitModelCheckerHint::setResultHint(boost::optional>&& resultHint) { this->resultHint = resultHint; } template bool ExplicitModelCheckerHint::getComputeOnlyMaybeStates() const { STORM_LOG_THROW(!computeOnlyMaybeStates || (hasMaybeStates() && hasResultHint()), storm::exceptions::InvalidOperationException, "Computing only maybestates is activated but no maybestates or no result hint is specified."); return computeOnlyMaybeStates; } template void ExplicitModelCheckerHint::setComputeOnlyMaybeStates(bool value) { STORM_LOG_THROW(!value || (hasMaybeStates() && hasResultHint()), storm::exceptions::InvalidOperationException, "Tried to activate that only maybestates need to be computed, but no maybestates or no result hint was given before."); this->computeOnlyMaybeStates = value; } template bool ExplicitModelCheckerHint::hasMaybeStates() const { return maybeStates.is_initialized(); } template storm::storage::BitVector const& ExplicitModelCheckerHint::getMaybeStates() const { return maybeStates.get(); } template storm::storage::BitVector& ExplicitModelCheckerHint::getMaybeStates() { return maybeStates.get(); } template void ExplicitModelCheckerHint::setMaybeStates(storm::storage::BitVector const& newMaybeStates) { this->maybeStates = newMaybeStates; } template void ExplicitModelCheckerHint::setMaybeStates(storm::storage::BitVector&& newMaybeStates) { this->maybeStates = std::move(newMaybeStates); } template bool ExplicitModelCheckerHint::hasSchedulerHint() const { return schedulerHint.is_initialized(); } template storm::storage::Scheduler const& ExplicitModelCheckerHint::getSchedulerHint() const { return *schedulerHint; } template storm::storage::Scheduler& ExplicitModelCheckerHint::getSchedulerHint() { return *schedulerHint; } template void ExplicitModelCheckerHint::setSchedulerHint(boost::optional> const& schedulerHint) { this->schedulerHint = schedulerHint; } template void ExplicitModelCheckerHint::setSchedulerHint(boost::optional>&& schedulerHint) { this->schedulerHint = schedulerHint; } template bool ExplicitModelCheckerHint::getNoEndComponentsInMaybeStates() const { return noEndComponentsInMaybeStates; } template void ExplicitModelCheckerHint::setNoEndComponentsInMaybeStates(bool value) { noEndComponentsInMaybeStates = value; } template class ExplicitModelCheckerHint; template class ExplicitModelCheckerHint; template class ExplicitModelCheckerHint; } }