#ifndef STATEACTIONPAIR_H #define STATEACTIONPAIR_H #include namespace storm { namespace storage { class StateActionPair { std::pair stateActionPair; public: StateActionPair(std::pair 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; } friend bool operator<(StateActionPair const& p1, StateActionPair const& p2) { return p1.getState() < p2.getState() || (p1.getState() == p2.getState() && p1.getAction() < p2.getAction()); } }; } } namespace std { template<> struct hash { size_t operator()(storm::storage::StateActionPair const& sap) const { return (sap.getState() << 3 ^ sap.getAction()); } }; } #endif /* STATEACTIONPAIR_H */