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.
 
 
 
 

45 lines
1.6 KiB

#pragma once
#include <vector>
#include <set>
#include <string>
#include "storm/storage/BitVector.h"
namespace storm {
namespace modelchecker {
namespace multiobjective {
class MemoryStateManager {
public:
typedef uint64_t MemoryState;
MemoryStateManager(uint64_t dimensionCount);
void setDimensionWithoutMemory(uint64_t dimension);
uint64_t const& getDimensionCount() const;
uint64_t const& getMemoryStateCount() const;
MemoryState const& getUpperMemoryStateBound() const; // is larger then every valid memory state m, i.e., m < getUpperMemoryStateBound() holds for all m
MemoryState getInitialMemoryState() const;
bool isRelevantDimension(MemoryState const& state, uint64_t dimension) const;
void setRelevantDimension(MemoryState& state, uint64_t dimension, bool value = true) const;
void setRelevantDimensions(MemoryState& state, storm::storage::BitVector const& dimensions, bool value = true) const;
std::string toString(MemoryState const& state) const;
private:
uint64_t const dimensionCount;
uint64_t const dimensionBitMask;
uint64_t const relevantBitsMask;
uint64_t stateCount;
uint64_t dimensionsWithoutMemoryMask;
MemoryState const upperMemoryStateBound;
};
}
}
}