common.h 567 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef __COMMON_H
  2. #define __COMMON_H
  3. #include <functional>
  4. #include <string>
  5. #include <unordered_map>
  6. namespace std {
  7. template <typename A, typename B>
  8. struct hash< pair<A,B> > {
  9. size_t operator()(const pair<A,B>& p) const {
  10. return hash<A>()(p.first) + hash<B>()(p.second);
  11. }
  12. };
  13. }
  14. namespace serialize {
  15. template <>
  16. struct reader<tag_t> {
  17. void read(Source& s, tag_t& t) {
  18. serialize::read(s, t.v);
  19. }
  20. };
  21. template <>
  22. struct writer<tag_t> {
  23. void write(Sink& s, tag_t t) {
  24. serialize::write(s, t.v);
  25. }
  26. };
  27. }
  28. #endif