You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.5 KiB
78 lines
3.5 KiB
#ifndef STORM_MODELCHECKER_EXPLICITQUANTITATIVECHECKRESULT_H_
|
|
#define STORM_MODELCHECKER_EXPLICITQUANTITATIVECHECKRESULT_H_
|
|
|
|
#include <vector>
|
|
#include <map>
|
|
#include <boost/variant.hpp>
|
|
#include <boost/optional.hpp>
|
|
|
|
#include "storm/modelchecker/results/QuantitativeCheckResult.h"
|
|
#include "storm/storage/sparse/StateType.h"
|
|
#include "storm/storage/Scheduler.h"
|
|
#include "storm/utility/OsDetection.h"
|
|
|
|
namespace storm {
|
|
namespace modelchecker {
|
|
template<typename ValueType>
|
|
class ExplicitQuantitativeCheckResult : public QuantitativeCheckResult<ValueType> {
|
|
public:
|
|
typedef std::vector<ValueType> vector_type;
|
|
typedef std::map<storm::storage::sparse::state_type, ValueType> map_type;
|
|
|
|
ExplicitQuantitativeCheckResult();
|
|
ExplicitQuantitativeCheckResult(map_type const& values);
|
|
ExplicitQuantitativeCheckResult(map_type&& values);
|
|
ExplicitQuantitativeCheckResult(storm::storage::sparse::state_type const& state, ValueType const& value);
|
|
ExplicitQuantitativeCheckResult(vector_type const& values);
|
|
ExplicitQuantitativeCheckResult(vector_type&& values);
|
|
|
|
ExplicitQuantitativeCheckResult(ExplicitQuantitativeCheckResult const& other) = default;
|
|
ExplicitQuantitativeCheckResult& operator=(ExplicitQuantitativeCheckResult const& other) = default;
|
|
#ifndef WINDOWS
|
|
ExplicitQuantitativeCheckResult(ExplicitQuantitativeCheckResult&& other) = default;
|
|
ExplicitQuantitativeCheckResult& operator=(ExplicitQuantitativeCheckResult&& other) = default;
|
|
#endif
|
|
virtual ~ExplicitQuantitativeCheckResult() = default;
|
|
|
|
ValueType& operator[](storm::storage::sparse::state_type state);
|
|
ValueType const& operator[](storm::storage::sparse::state_type state) const;
|
|
|
|
virtual std::unique_ptr<CheckResult> compareAgainstBound(storm::logic::ComparisonType comparisonType, ValueType const& bound) const override;
|
|
|
|
virtual bool isExplicit() const override;
|
|
virtual bool isResultForAllStates() const override;
|
|
|
|
virtual bool isExplicitQuantitativeCheckResult() const override;
|
|
|
|
vector_type const& getValueVector() const;
|
|
vector_type& getValueVector();
|
|
map_type const& getValueMap() const;
|
|
|
|
virtual std::ostream& writeToStream(std::ostream& out) const override;
|
|
|
|
virtual void filter(QualitativeCheckResult const& filter) override;
|
|
|
|
virtual void oneMinus() override;
|
|
|
|
|
|
virtual ValueType getMin() const override;
|
|
virtual ValueType getMax() const override;
|
|
virtual std::pair<ValueType, ValueType> getMinMax() const;
|
|
virtual ValueType average() const override;
|
|
virtual ValueType sum() const override;
|
|
|
|
bool hasScheduler() const;
|
|
void setScheduler(std::unique_ptr<storm::storage::Scheduler>&& scheduler);
|
|
storm::storage::Scheduler const& getScheduler() const;
|
|
|
|
private:
|
|
// The values of the quantitative check result.
|
|
boost::variant<vector_type, map_type> values;
|
|
|
|
// An optional scheduler that accompanies the values.
|
|
boost::optional<std::shared_ptr<storm::storage::Scheduler>> scheduler;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif /* STORM_MODELCHECKER_EXPLICITQUANTITATIVECHECKRESULT_H_ */
|