1d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#ifndef FAKE_HASH 2d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#define FAKE_HASH 3d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott 4d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#include <hash_map> 5d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#include <hash_set> 6d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott 7d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scottnamespace __gnu_cxx { 8d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scottusing std::hash_map; 9d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scottusing std::hash_set; 10d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott 11d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scotttemplate <class _Key> struct hash { }; 12d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott 13d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#define DEFINE_HASH(_type) \ 14d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott template<> \ 15d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott struct hash<_type> { \ 16d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott std::size_t operator()(_type val) const { \ 17d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott return std::hash<_type>(val); \ 18d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott } \ 19d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott } 20d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#undef DEFINE_HASH 21d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott 22d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott} 23d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott 24d9f0c9bcce7092bf92cab485981630bd74307831Patrick Scott#endif 25