#include #include "storm/environment/Environment.h" #include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h" #include "storm/environment/modelchecker/ModelCheckerEnvironment.h" #include "storm/environment/solver/SolverEnvironment.h" #include "storm/environment/solver/EigenSolverEnvironment.h" #include "storm/environment/solver/GmmxxSolverEnvironment.h" #include "storm/environment/solver/NativeSolverEnvironment.h" #include "storm/environment/solver/MinMaxSolverEnvironment.h" #include "storm/environment/solver/MultiplierEnvironment.h" #include "storm/environment/solver/GameSolverEnvironment.h" #include "storm/environment/solver/TopologicalSolverEnvironment.h" namespace storm { template SubEnvironment::SubEnvironment() : subEnv(nullptr) { // Intentionally left empty } template SubEnvironment::SubEnvironment(SubEnvironment const& other) : subEnv(other.subEnv ? new EnvironmentType(*other.subEnv) : nullptr) { // Intentionally left empty } template SubEnvironment& SubEnvironment::operator=(SubEnvironment const& other) { if (other.subEnv) { subEnv = std::make_unique(*other.subEnv); } else { subEnv.reset(); } return *this; } template EnvironmentType const& SubEnvironment::get() const { assertInitialized(); return *subEnv; } template EnvironmentType& SubEnvironment::get() { assertInitialized(); return *subEnv; } template void SubEnvironment::assertInitialized() const { if (!subEnv) { subEnv = std::make_unique(); } } template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; template class SubEnvironment; }