Browse Source

KWSys: Fix using long long and __int64 with hash_(set|map)

Added hash function for types long long and __int64, conditional on
detection by FundamentalType.

Author: Bradley Lowekamp <[email protected]>
Change-Id: Ie273f55cd4387ca3dbbe00b9d96ad4935e456c9e
Brad King 14 years ago
parent
commit
867c3dcd24
1 changed files with 24 additions and 1 deletions
  1. 24 1
      Source/kwsys/hash_fun.hxx.in

+ 24 - 1
Source/kwsys/hash_fun.hxx.in

@@ -38,7 +38,7 @@
 #define @KWSYS_NAMESPACE@_hash_fun_hxx
 
 #include <@KWSYS_NAMESPACE@/Configure.hxx>
-
+#include <@KWSYS_NAMESPACE@/FundamentalType.h>
 #include <@KWSYS_NAMESPACE@/cstddef>        // size_t
 
 namespace @KWSYS_NAMESPACE@
@@ -110,6 +110,29 @@ struct hash<unsigned long> {
   size_t operator()(unsigned long __x) const { return __x; }
 };
 
+#if @KWSYS_NAMESPACE@_USE_LONG_LONG
+@KWSYS_NAMESPACE@_CXX_DEFINE_SPECIALIZATION
+struct hash<long long> {
+  size_t operator()(long long __x) const { return __x; }
+};
+
+@KWSYS_NAMESPACE@_CXX_DEFINE_SPECIALIZATION
+struct hash<unsigned long long> {
+  size_t operator()(unsigned long long __x) const { return __x; }
+};
+#endif
+
+#if @KWSYS_NAMESPACE@_USE___INT64
+@KWSYS_NAMESPACE@_CXX_DEFINE_SPECIALIZATION
+struct hash<__int64> {
+  size_t operator()(__int64 __x) const { return __x; }
+};
+@KWSYS_NAMESPACE@_CXX_DEFINE_SPECIALIZATION
+struct hash<unsigned __int64> {
+  size_t operator()(unsigned __int64 __x) const { return __x; }
+};
+#endif
+
 } // namespace @KWSYS_NAMESPACE@
 
 #endif