#include "storm/modelchecker/results/CheckResult.h" #include "storm-config.h" #include "storm/adapters/RationalFunctionAdapter.h" #include "storm/modelchecker/results/ExplicitQualitativeCheckResult.h" #include "storm/modelchecker/results/ExplicitQuantitativeCheckResult.h" #include "storm/modelchecker/results/ExplicitParetoCurveCheckResult.h" #include "storm/modelchecker/results/SymbolicQualitativeCheckResult.h" #include "storm/modelchecker/results/SymbolicQuantitativeCheckResult.h" #include "storm/modelchecker/results/SymbolicParetoCurveCheckResult.h" #include "storm/modelchecker/results/HybridQuantitativeCheckResult.h" #include "storm/utility/macros.h" #include "storm/exceptions/InvalidOperationException.h" namespace storm { namespace modelchecker { bool CheckResult::isExplicit() const { return false; } bool CheckResult::isSymbolic() const { return false; } bool CheckResult::isHybrid() const { return false; } bool CheckResult::isQuantitative() const { return false; } bool CheckResult::isQualitative() const { return false; } bool CheckResult::isParetoCurveCheckResult() const { return false; } bool CheckResult::isResultForAllStates() const { return false; } std::ostream& operator<<(std::ostream& out, CheckResult const& checkResult) { checkResult.writeToStream(out); return out; } bool CheckResult::isExplicitQualitativeCheckResult() const { return false; } bool CheckResult::isExplicitQuantitativeCheckResult() const { return false; } bool CheckResult::isExplicitParetoCurveCheckResult() const { return false; } bool CheckResult::isSymbolicQualitativeCheckResult() const { return false; } bool CheckResult::isSymbolicQuantitativeCheckResult() const { return false; } bool CheckResult::isSymbolicParetoCurveCheckResult() const { return false; } bool CheckResult::isHybridQuantitativeCheckResult() const { return false; } ExplicitQualitativeCheckResult& CheckResult::asExplicitQualitativeCheckResult() { return dynamic_cast(*this); } ExplicitQualitativeCheckResult const& CheckResult::asExplicitQualitativeCheckResult() const { return dynamic_cast(*this); } template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult() { return dynamic_cast&>(*this); } template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const { return dynamic_cast const&>(*this); } template ExplicitParetoCurveCheckResult& CheckResult::asExplicitParetoCurveCheckResult() { return dynamic_cast&>(*this); } template ExplicitParetoCurveCheckResult const& CheckResult::asExplicitParetoCurveCheckResult() const { return dynamic_cast const&>(*this); } QualitativeCheckResult& CheckResult::asQualitativeCheckResult() { return dynamic_cast(*this); } QualitativeCheckResult const& CheckResult::asQualitativeCheckResult() const { return dynamic_cast(*this); } template QuantitativeCheckResult& CheckResult::asQuantitativeCheckResult() { return static_cast &>(*this); } template QuantitativeCheckResult const& CheckResult::asQuantitativeCheckResult() const { return static_cast const&>(*this); } template SymbolicQualitativeCheckResult& CheckResult::asSymbolicQualitativeCheckResult() { return dynamic_cast&>(*this); } template SymbolicQualitativeCheckResult const& CheckResult::asSymbolicQualitativeCheckResult() const { return dynamic_cast const&>(*this); } template SymbolicQuantitativeCheckResult& CheckResult::asSymbolicQuantitativeCheckResult() { return dynamic_cast&>(*this); } template SymbolicQuantitativeCheckResult const& CheckResult::asSymbolicQuantitativeCheckResult() const { return dynamic_cast const&>(*this); } template HybridQuantitativeCheckResult& CheckResult::asHybridQuantitativeCheckResult() { return dynamic_cast&>(*this); } template HybridQuantitativeCheckResult const& CheckResult::asHybridQuantitativeCheckResult() const { return dynamic_cast const&>(*this); } template SymbolicParetoCurveCheckResult& CheckResult::asSymbolicParetoCurveCheckResult() { return dynamic_cast&>(*this); } template SymbolicParetoCurveCheckResult const& CheckResult::asSymbolicParetoCurveCheckResult() const { return dynamic_cast const&>(*this); } bool CheckResult::hasScheduler() const { return false; } bool CheckResult::hasShield() const { return false; } // Explicitly instantiate the template functions. template QuantitativeCheckResult& CheckResult::asQuantitativeCheckResult(); template QuantitativeCheckResult const& CheckResult::asQuantitativeCheckResult() const; template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult(); template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const; template ExplicitParetoCurveCheckResult& CheckResult::asExplicitParetoCurveCheckResult(); template ExplicitParetoCurveCheckResult const& CheckResult::asExplicitParetoCurveCheckResult() const; template SymbolicQualitativeCheckResult& CheckResult::asSymbolicQualitativeCheckResult(); template SymbolicQualitativeCheckResult const& CheckResult::asSymbolicQualitativeCheckResult() const; template SymbolicQuantitativeCheckResult& CheckResult::asSymbolicQuantitativeCheckResult(); template SymbolicQuantitativeCheckResult const& CheckResult::asSymbolicQuantitativeCheckResult() const; template SymbolicParetoCurveCheckResult& CheckResult::asSymbolicParetoCurveCheckResult(); template SymbolicParetoCurveCheckResult const& CheckResult::asSymbolicParetoCurveCheckResult() const; template HybridQuantitativeCheckResult& CheckResult::asHybridQuantitativeCheckResult(); template HybridQuantitativeCheckResult const& CheckResult::asHybridQuantitativeCheckResult() const; template SymbolicQualitativeCheckResult& CheckResult::asSymbolicQualitativeCheckResult(); template SymbolicQualitativeCheckResult const& CheckResult::asSymbolicQualitativeCheckResult() const; template SymbolicQuantitativeCheckResult& CheckResult::asSymbolicQuantitativeCheckResult(); template SymbolicQuantitativeCheckResult const& CheckResult::asSymbolicQuantitativeCheckResult() const; template SymbolicQuantitativeCheckResult& CheckResult::asSymbolicQuantitativeCheckResult(); template SymbolicQuantitativeCheckResult const& CheckResult::asSymbolicQuantitativeCheckResult() const; template SymbolicQuantitativeCheckResult& CheckResult::asSymbolicQuantitativeCheckResult(); template SymbolicQuantitativeCheckResult const& CheckResult::asSymbolicQuantitativeCheckResult() const; template SymbolicParetoCurveCheckResult& CheckResult::asSymbolicParetoCurveCheckResult(); template SymbolicParetoCurveCheckResult const& CheckResult::asSymbolicParetoCurveCheckResult() const; template HybridQuantitativeCheckResult& CheckResult::asHybridQuantitativeCheckResult(); template HybridQuantitativeCheckResult const& CheckResult::asHybridQuantitativeCheckResult() const; #ifdef STORM_HAVE_CARL template QuantitativeCheckResult& CheckResult::asQuantitativeCheckResult(); template QuantitativeCheckResult const& CheckResult::asQuantitativeCheckResult() const; template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult(); template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const; template QuantitativeCheckResult& CheckResult::asQuantitativeCheckResult(); template QuantitativeCheckResult const& CheckResult::asQuantitativeCheckResult() const; template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult(); template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const; template ExplicitParetoCurveCheckResult& CheckResult::asExplicitParetoCurveCheckResult(); template ExplicitParetoCurveCheckResult const& CheckResult::asExplicitParetoCurveCheckResult() const; #endif } }