#include "storm/shields/AbstractShield.h" #include namespace tempest { namespace shields { template AbstractShield::AbstractShield(std::vector const& rowGroupIndices, std::shared_ptr const& shieldingExpression, storm::OptimizationDirection optimizationDirection, storm::storage::BitVector relevantStates, boost::optional coalitionStates) : rowGroupIndices(rowGroupIndices), shieldingExpression(shieldingExpression), optimizationDirection(optimizationDirection), relevantStates(relevantStates), coalitionStates(coalitionStates) { // Intentionally left empty. } template AbstractShield::~AbstractShield() { // Intentionally left empty. } template std::vector AbstractShield::computeRowGroupSizes() { std::vector rowGroupSizes(this->rowGroupIndices.size() - 1); for(uint rowGroupStartIndex = 0; rowGroupStartIndex < rowGroupSizes.size(); rowGroupStartIndex++) { rowGroupSizes.at(rowGroupStartIndex) = this->rowGroupIndices[rowGroupStartIndex + 1] - this->rowGroupIndices[rowGroupStartIndex]; } return rowGroupSizes; } template storm::OptimizationDirection AbstractShield::getOptimizationDirection() { return optimizationDirection; } template std::string AbstractShield::getClassName() const { return std::string(boost::core::demangled_name(BOOST_CORE_TYPEID(*this))); } // Explicitly instantiate appropriate template class AbstractShield::index_type>; #ifdef STORM_HAVE_CARL template class AbstractShield::index_type>; #endif } }