#include "src/modelchecker/results/CheckResult.h" #include "storm-config.h" #include "src/adapters/CarlAdapter.h" #include "src/modelchecker/results/ExplicitQualitativeCheckResult.h" #include "src/modelchecker/results/ExplicitQuantitativeCheckResult.h" #include "src/modelchecker/results/SymbolicQualitativeCheckResult.h" #include "src/modelchecker/results/SymbolicQuantitativeCheckResult.h" #include "src/modelchecker/results/HybridQuantitativeCheckResult.h" #include "src/utility/macros.h" #include "src/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::isResultForAllStates() const { return false; } std::ostream& operator<<(std::ostream& out, CheckResult& checkResult) { checkResult.writeToStream(out); return out; } bool CheckResult::isExplicitQualitativeCheckResult() const { return false; } bool CheckResult::isExplicitQuantitativeCheckResult() const { return false; } bool CheckResult::isSymbolicQualitativeCheckResult() const { return false; } bool CheckResult::isSymbolicQuantitativeCheckResult() 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); } QualitativeCheckResult& CheckResult::asQualitativeCheckResult() { return dynamic_cast(*this); } QualitativeCheckResult const& CheckResult::asQualitativeCheckResult() const { return dynamic_cast(*this); } QuantitativeCheckResult& CheckResult::asQuantitativeCheckResult() { return dynamic_cast(*this); } QuantitativeCheckResult const& CheckResult::asQuantitativeCheckResult() const { return dynamic_cast(*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); } // Explicitly instantiate the template functions. template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult(); template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const; template SymbolicQualitativeCheckResult& CheckResult::asSymbolicQualitativeCheckResult(); template SymbolicQualitativeCheckResult const& CheckResult::asSymbolicQualitativeCheckResult() const; template SymbolicQuantitativeCheckResult& CheckResult::asSymbolicQuantitativeCheckResult(); template SymbolicQuantitativeCheckResult const& CheckResult::asSymbolicQuantitativeCheckResult() 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 HybridQuantitativeCheckResult& CheckResult::asHybridQuantitativeCheckResult(); template HybridQuantitativeCheckResult const& CheckResult::asHybridQuantitativeCheckResult() const; #ifdef STORM_HAVE_CARL template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult(); template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const; template ExplicitQuantitativeCheckResult& CheckResult::asExplicitQuantitativeCheckResult(); template ExplicitQuantitativeCheckResult const& CheckResult::asExplicitQuantitativeCheckResult() const; #endif } }