Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ChoiceLabeling.cpp
Go to the documentation of this file.
2
3namespace storm {
4namespace models {
5namespace sparse {
6ChoiceLabeling::ChoiceLabeling(uint_fast64_t choiceCount) : ItemLabeling(choiceCount) {
7 // Intentionally left empty.
8}
9
11 // Intentionally left empty.
12}
13
15 // Intentionally left empty.
16}
17
19 return true;
20}
21
23 if (itemCount != other.itemCount) {
24 return false;
25 }
26 if (this->getNumberOfLabels() != other.getNumberOfLabels()) {
27 return false;
28 }
29 for (auto const& labelIndexPair : this->nameToLabelingIndexMap) {
30 if (!other.containsLabel(labelIndexPair.first)) {
31 return false;
32 }
33 if (labelings[labelIndexPair.second] != other.getChoices(labelIndexPair.first)) {
34 return false;
35 }
36 }
37 return true;
38}
39
43
44std::set<std::string> ChoiceLabeling::getLabelsOfChoice(uint64_t choice) const {
45 return this->getLabelsOfItem(choice);
46}
47
48void ChoiceLabeling::addLabelToChoice(std::string const& label, uint64_t choice) {
49 return ItemLabeling::addLabelToItem(label, choice);
50}
51
52bool ChoiceLabeling::getChoiceHasLabel(std::string const& label, uint64_t choice) const {
53 return this->getItemHasLabel(label, choice);
54}
55
56storm::storage::BitVector const& ChoiceLabeling::getChoices(std::string const& label) const {
57 return this->getItems(label);
58}
59
60void ChoiceLabeling::setChoices(std::string const& label, storage::BitVector const& labeling) {
61 this->setItems(label, labeling);
62}
63
64void ChoiceLabeling::setChoices(std::string const& label, storage::BitVector&& labeling) {
65 this->setItems(label, labeling);
66}
67
68std::ostream& operator<<(std::ostream& out, ChoiceLabeling const& labeling) {
69 out << "Choice ";
71 return out;
72}
73
74} // namespace sparse
75} // namespace models
76} // namespace storm
This class manages the labeling of the choice space with a number of (atomic) labels.
virtual bool isChoiceLabeling() const override
storm::storage::BitVector const & getChoices(std::string const &label) const
Returns the labeling of choices associated with the given label.
bool getChoiceHasLabel(std::string const &label, uint64_t choice) const
Checks whether a given choice is labeled with the given label.
ChoiceLabeling(uint_fast64_t choiceCount=0)
Constructs an empty labeling for the given number of choices.
void addLabelToChoice(std::string const &label, uint64_t choice)
Adds a label to a given choice.
ChoiceLabeling getSubLabeling(storm::storage::BitVector const &choices) const
Retrieves the sub labeling that represents the same labeling as the current one for all selected choi...
void setChoices(std::string const &label, storage::BitVector const &labeling)
Sets the labeling of choices associated with the given label.
std::set< std::string > getLabelsOfChoice(uint64_t choice) const
Retrieves the set of labels attached to the given choice.
bool operator==(ChoiceLabeling const &other) const
Checks whether the two labelings are equal.
A base class managing the labeling of items with a number of (atomic) labels.
virtual std::set< std::string > getLabelsOfItem(uint64_t item) const
Retrieves the set of labels attached to the given item.
virtual void setItems(std::string const &label, storage::BitVector const &labeling)
Sets the labeling of items associated with the given label.
virtual bool getItemHasLabel(std::string const &label, uint64_t item) const
Checks whether a given item is labeled with the given label.
ItemLabeling getSubLabeling(storm::storage::BitVector const &items) const
Retrieves the sub labeling that represents the same labeling as the current one for all selected item...
bool containsLabel(std::string const &label) const
Checks whether a label is registered within this labeling.
std::unordered_map< std::string, uint64_t > nameToLabelingIndexMap
virtual storm::storage::BitVector const & getItems(std::string const &label) const
Returns the labeling of items associated with the given label.
virtual void addLabelToItem(std::string const &label, uint64_t item)
Adds a label to a given item.
void printLabelingInformationToStream(std::ostream &out=std::cout) const
Prints information about the labeling to the specified stream.
std::vector< storm::storage::BitVector > labelings
std::size_t getNumberOfLabels() const
Returns the number of labels managed by this object.
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16