sjunges
10 years ago
2 changed files with 82 additions and 0 deletions
@ -0,0 +1,47 @@ |
|||
#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 */ |
|||
|
@ -0,0 +1,35 @@ |
|||
|
|||
#ifndef STATEACTIONTARGETTUPLE_H |
|||
#define STATEACTIONTARGETTUPLE_H |
|||
|
|||
#include <memory> |
|||
|
|||
namespace storm { |
|||
namespace storage { |
|||
struct StateActionTarget { |
|||
uint_fast64_t state; |
|||
uint_fast64_t action; |
|||
uint_fast64_t target; |
|||
|
|||
}; |
|||
|
|||
inline std::string to_string(StateActionTarget const& sat) { |
|||
return std::to_string(sat.state) + "_" + std::to_string(sat.action) + "_" + std::to_string(sat.target); |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
namespace std { |
|||
template<> |
|||
struct hash<storm::storage::StateActionTarget> { |
|||
bool operator()(storm::storage::StateActionTarget const& sat) const { |
|||
return (sat.state ^ sat.target) << 3 | sat.action; |
|||
} |
|||
}; |
|||
|
|||
} |
|||
|
|||
|
|||
#endif /* STATEACTIONTARGETTUPLE_H */ |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue