47 lines
1.4 KiB
47 lines
1.4 KiB
#ifndef STATEACTIONPAIR_H
|
|
#define STATEACTIONPAIR_H
|
|
|
|
#include <memory>
|
|
|
|
namespace storm {
|
|
namespace storage {
|
|
class StateActionPair {
|
|
std::pair<uint_fast64_t, uint_fast64_t> stateActionPair;
|
|
|
|
public:
|
|
StateActionPair(std::pair<uint_fast64_t, uint_fast64_t> const& sap) : stateActionPair(sap) {}
|
|
StateActionPair(uint_fast64_t state, uint_fast64_t action) : stateActionPair(std::make_pair(state, action)) {}
|
|
|
|
uint_fast64_t getState() const {
|
|
return stateActionPair.first;
|
|
}
|
|
|
|
uint_fast64_t getAction() const {
|
|
return stateActionPair.second;
|
|
}
|
|
|
|
friend bool operator==(StateActionPair const& p1, StateActionPair const& p2) {
|
|
return p1.stateActionPair == p2.stateActionPair;
|
|
}
|
|
|
|
friend bool operator!=(StateActionPair const& p1, StateActionPair const& p2) {
|
|
return p1.stateActionPair != p2.stateActionPair;
|
|
}
|
|
|
|
|
|
};
|
|
}
|
|
}
|
|
|
|
namespace std {
|
|
template<>
|
|
struct hash<storm::storage::StateActionPair> {
|
|
size_t operator()(storm::storage::StateActionPair const& sap) {
|
|
return (sap.getState() << 3 ^ sap.getAction());
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
#endif /* STATEACTIONPAIR_H */
|
|
|