Use hash<long> instead of hash<wxLongLong_t> when they are the same size
since even some 64-bit compilers have a problem with it, it seems. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
01df01eb19
commit
b158be6e47
@ -465,14 +465,16 @@ 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)
|
||||
// hash<wxLongLong_t> ought to work but doesn't on some compilers
|
||||
#if (!defined SIZEOF_LONG_LONG && SIZEOF_LONG == 4) \
|
||||
|| (defined SIZEOF_LONG_LONG && SIZEOF_LONG_LONG == SIZEOF_LONG * 2)
|
||||
size_t longlongHash( wxLongLong_t x ) const
|
||||
{
|
||||
return longHash( wx_truncate_cast(long, x) ) ^
|
||||
longHash( wx_truncate_cast(long, x >> (sizeof(long) * 8)) );
|
||||
}
|
||||
#elif defined SIZEOF_LONG_LONG && SIZEOF_LONG_LONG == SIZEOF_LONG
|
||||
WX_HASH_MAP_NAMESPACE::hash<long> longlongHash;
|
||||
#else
|
||||
WX_HASH_MAP_NAMESPACE::hash<wxLongLong_t> longlongHash;
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user