#pragma once #include #include #include #include #include #include "storm/models/sparse/ChoiceLabeling.h" #include "storm/storage/BitVector.h" #include "storm/storage/sparse/PrismChoiceOrigins.h" #include "storm/storage/prism/Program.h" namespace storm { namespace builder { /*! * This class collects information regarding the choices */ class ChoiceInformationBuilder { public: ChoiceInformationBuilder() = default; void addLabel(std::string const& label, uint_fast64_t choiceIndex); void addOriginData(boost::any const& originData, uint_fast64_t choiceIndex); boost::optional buildChoiceLabeling(uint_fast64_t totalNumberOfChoices); std::vector buildDataOfChoiceOrigins(uint_fast64_t totalNumberOfChoices); private: std::unordered_map labels; std::vector dataOfOrigins; }; } }