Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Hash.h
1 #ifndef HASH_INCLUDED
2 #define HASH_INCLUDED
3 #ifdef WIN32
4 
5  #if _MSC_VER >= 1900
6  #include <unordered_map>
7  #define hash_map std::unordered_map
8  #else
9  #include <hash_map>
10  using stdext::hash_map;
11  #endif
12 
13 #else // !WIN32
14 
15  #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)>= 40300 //gcc >= 4.3
16  #include <tr1/unordered_map>
17  #define hash_map std::tr1::unordered_map
18 
19  #else //GCC_VERSION < 40300
20  #include <ext/hash_map>
21  using namespace __gnu_cxx;
22 
23  namespace __gnu_cxx
24  {
25  template<> struct hash<long long> {
26  size_t operator()(long long __x) const { return __x; }
27  };
28  template<> struct hash<const long long> {
29  size_t operator()(const long long __x) const { return __x; }
30  };
31 
32 
33  template<> struct hash<unsigned long long> {
34  size_t operator()(unsigned long long __x) const { return __x; }
35  };
36  template<> struct hash<const unsigned long long> {
37  size_t operator()(const unsigned long long __x) const { return __x; }
38  };
39  }
40  #endif // gcc >= 4.3
41 #endif // WIN32
42 #endif // HASH_INCLUDED
43 
Definition: Hash.h:23