You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.8 KiB
101 lines
3.8 KiB
#include "storm/storage/bisimulation/DeterministicBlockData.h"
|
|
|
|
#include <iostream>
|
|
|
|
#include "storm/exceptions/InvalidOperationException.h"
|
|
#include "storm/utility/macros.h"
|
|
|
|
namespace storm {
|
|
namespace storage {
|
|
namespace bisimulation {
|
|
|
|
DeterministicBlockData::DeterministicBlockData() : DeterministicBlockData(0, 0) {
|
|
// Intentionally left empty.
|
|
}
|
|
|
|
DeterministicBlockData::DeterministicBlockData(uint_fast64_t marker1, uint_fast64_t marker2) : valMarker1(marker1), valMarker2(marker2), splitterFlag(false), needsRefinementFlag(false), absorbingFlag(false), valRepresentativeState() {
|
|
// Intentionally left empty.
|
|
}
|
|
|
|
uint_fast64_t DeterministicBlockData::marker1() const {
|
|
return valMarker1;
|
|
}
|
|
|
|
void DeterministicBlockData::setMarker1(uint_fast64_t newMarker1) {
|
|
valMarker1 = newMarker1;
|
|
}
|
|
|
|
void DeterministicBlockData::incrementMarker1() {
|
|
++valMarker1;
|
|
}
|
|
|
|
void DeterministicBlockData::decrementMarker1() {
|
|
--valMarker1;
|
|
}
|
|
|
|
uint_fast64_t DeterministicBlockData::marker2() const {
|
|
return valMarker2;
|
|
}
|
|
|
|
void DeterministicBlockData::setMarker2(uint_fast64_t newMarker2) {
|
|
valMarker2 = newMarker2;
|
|
}
|
|
|
|
void DeterministicBlockData::incrementMarker2() {
|
|
++valMarker2;
|
|
}
|
|
|
|
void DeterministicBlockData::decrementMarker2() {
|
|
--valMarker2;
|
|
}
|
|
|
|
bool DeterministicBlockData::resetMarkers(Block<DeterministicBlockData> const& block) {
|
|
bool result = block.getBeginIndex() != this->valMarker1 || block.getBeginIndex() != this->valMarker2;
|
|
this->valMarker1 = this->valMarker2 = block.getBeginIndex();
|
|
return result;
|
|
}
|
|
|
|
bool DeterministicBlockData::splitter() const {
|
|
return this->splitterFlag;
|
|
}
|
|
|
|
void DeterministicBlockData::setSplitter(bool value) {
|
|
this->splitterFlag = value;
|
|
}
|
|
|
|
void DeterministicBlockData::setAbsorbing(bool absorbing) {
|
|
this->absorbingFlag = absorbing;
|
|
}
|
|
|
|
bool DeterministicBlockData::absorbing() const {
|
|
return this->absorbingFlag;
|
|
}
|
|
|
|
void DeterministicBlockData::setRepresentativeState(storm::storage::sparse::state_type representativeState) {
|
|
this->valRepresentativeState = representativeState;
|
|
}
|
|
|
|
bool DeterministicBlockData::hasRepresentativeState() const {
|
|
return static_cast<bool>(valRepresentativeState);
|
|
}
|
|
|
|
storm::storage::sparse::state_type DeterministicBlockData::representativeState() const {
|
|
STORM_LOG_THROW(valRepresentativeState, storm::exceptions::InvalidOperationException, "Unable to retrieve representative state for block.");
|
|
return valRepresentativeState.get();
|
|
}
|
|
|
|
bool DeterministicBlockData::needsRefinement() const {
|
|
return needsRefinementFlag;
|
|
}
|
|
|
|
void DeterministicBlockData::setNeedsRefinement(bool value) {
|
|
needsRefinementFlag = value;
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& out, DeterministicBlockData const& data) {
|
|
out << "m1: " << data.marker1() << ", m2: " << data.marker2();
|
|
return out;
|
|
}
|
|
}
|
|
}
|
|
}
|