Browse Source

wrappers for common tuples added

Former-commit-id: 47041c3641
tempestpy_adaptions
sjunges 10 years ago
parent
commit
cf8da8a8df
  1. 47
      src/storage/StateActionPair.h
  2. 35
      src/storage/StateActionTargetTuple.h

47
src/storage/StateActionPair.h

@ -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 */

35
src/storage/StateActionTargetTuple.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 */
Loading…
Cancel
Save