]> git.saurik.com Git - wxWidgets.git/commitdiff
Use the standard hash<wxLongLong_t> on 64-bit machines.
authorMichael Wetherell <mike.wetherell@ntlworld.com>
Thu, 2 Nov 2006 21:48:56 +0000 (21:48 +0000)
committerMichael Wetherell <mike.wetherell@ntlworld.com>
Thu, 2 Nov 2006 21:48:56 +0000 (21:48 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42964 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/hashmap.h

index 2b3d1e665f90f60984aca1f9d8a7a7638e981637..35254a6fb9907473f64babd52ec4e91da2af4665 100644 (file)
@@ -465,11 +465,17 @@ class WXDLLIMPEXP_BASE wxIntegerHash
     WX_HASH_MAP_NAMESPACE::hash<unsigned short> ushortHash;
 
 #if defined wxLongLong_t && !defined wxLongLongIsLong
+    // hash<wxLongLong_t> ought to work, but some 32-bit compilers have been
+    // found where the hash doesn't work with 64-bit values.
+    #if SIZEOF_LONG == 4 && (!defined SIZEOF_LONG_LONG || SIZEOF_LONG_LONG == 8)
     size_t longlongHash( wxLongLong_t x ) const
     {
-        return longHash( wx_truncate_cast(wxUint32, x) ) ^
-               longHash( wx_truncate_cast(wxUint32, x >> (sizeof(wxUint32) * 8)) );
+        return longHash( wx_truncate_cast(long, x) ) ^
+               longHash( wx_truncate_cast(long, x >> (sizeof(long) * 8)) );
     }
+    #else
+    WX_HASH_MAP_NAMESPACE::hash<wxLongLong_t> longlongHash;
+    #endif
 #endif
 
 public: