80 lines
3.1 KiB

#include "storm/models/sparse/StateLabeling.h"
#include "storm/exceptions/OutOfRangeException.h"
#include "storm/exceptions/InvalidArgumentException.h"
namespace storm {
namespace models {
namespace sparse {
StateLabeling::StateLabeling(uint_fast64_t stateCount) : ItemLabeling(stateCount) {
// Intentionally left empty.
}
StateLabeling::StateLabeling(ItemLabeling const& itemLab) : ItemLabeling(itemLab) {
// Intentionally left empty.
}
StateLabeling::StateLabeling(ItemLabeling const&& itemLab) : ItemLabeling(itemLab) {
// Intentionally left empty.
}
bool StateLabeling::isStateLabeling() const {
return true;
}
bool StateLabeling::operator==(StateLabeling const& other) const {
if (itemCount != other.itemCount) {
return false;
}
if (this->getNumberOfLabels() != other.getNumberOfLabels()) {
return false;
}
for (auto const& labelIndexPair : this->nameToLabelingIndexMap) {
if (!other.containsLabel(labelIndexPair.first)) {
return false;
}
if (labelings[labelIndexPair.second] != other.getStates(labelIndexPair.first)) {
return false;
}
}
return true;
}
StateLabeling StateLabeling::getSubLabeling(storm::storage::BitVector const& states) const {
return StateLabeling(ItemLabeling::getSubLabeling(states));
}
std::set<std::string> StateLabeling::getLabelsOfState(storm::storage::sparse::state_type state) const {
return ItemLabeling::getLabelsOfItem(state);
}
void StateLabeling::addLabelToState(std::string const& label, storm::storage::sparse::state_type state) {
ItemLabeling::addLabelToItem(label, state);
}
bool StateLabeling::getStateHasLabel(std::string const& label, storm::storage::sparse::state_type state) const {
return ItemLabeling::getItemHasLabel(label, state);
}
storm::storage::BitVector const& StateLabeling::getStates(std::string const& label) const {
return ItemLabeling::getItems(label);
}
void StateLabeling::setStates(std::string const& label, storage::BitVector const& labeling) {
ItemLabeling::setItems(label, labeling);
}
void StateLabeling::setStates(std::string const& label, storage::BitVector&& labeling) {
ItemLabeling::setItems(label, labeling);
}
std::ostream& operator<<(std::ostream& out, StateLabeling const& labeling) {
labeling.printLabelingInformationToStream(out);
return out;
}
}
}
}