#pragma once #include "storm/shields/AbstractShield.h" #include "storm/storage/PreScheduler.h" namespace tempest { namespace shields { template class PreShield : public AbstractShield { public: PreShield(std::vector const& rowGroupIndices, std::vector const& choiceValues, std::shared_ptr const& shieldingExpression, storm::OptimizationDirection optimizationDirection, storm::storage::BitVector relevantStates, boost::optional coalitionStates); storm::storage::PreScheduler construct(); template storm::storage::PreScheduler constructWithCompareType(); void setShieldingExpression(std::shared_ptr const& shieldingExpression); std::shared_ptr> getScheduler() const; virtual bool isPreShield() const override; virtual void printToStream(std::ostream& out, std::shared_ptr> const& model) override; virtual void printJsonToStream(std::ostream& out, std::shared_ptr> const& model) override; private: std::vector choiceValues; std::shared_ptr> preScheduler; }; } }