80 lines
3.1 KiB
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;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|