made wxHashMap work with any form of strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45097 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4ca056ea2b
commit
ad78ab8c50
@ -561,21 +561,29 @@ public:
|
||||
wxPointerEqual& operator=(const wxPointerEqual&) { return *this; }
|
||||
};
|
||||
|
||||
// wxString, char*, wxChar*
|
||||
// wxString, char*, wchar_t*
|
||||
class WXDLLIMPEXP_BASE wxStringHash
|
||||
{
|
||||
public:
|
||||
wxStringHash() {}
|
||||
unsigned long operator()( const wxString& x ) const
|
||||
{ return wxCharStringHash( x.c_str() ); }
|
||||
unsigned long operator()( const wxChar* x ) const
|
||||
{ return wxCharStringHash( x ); }
|
||||
static unsigned long wxCharStringHash( const wxChar* );
|
||||
#if wxUSE_UNICODE
|
||||
{ return stringHash( x.wx_str() ); }
|
||||
unsigned long operator()( const wchar_t* x ) const
|
||||
{ return stringHash( x ); }
|
||||
unsigned long operator()( const char* x ) const
|
||||
{ return charStringHash( x ); }
|
||||
static unsigned long charStringHash( const char* );
|
||||
#endif // wxUSE_UNICODE
|
||||
{ return stringHash( x ); }
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
static unsigned long wxCharStringHash( const wxChar* x )
|
||||
{ return stringHash(x); }
|
||||
#if wxUSE_UNICODE
|
||||
static unsigned long charStringHash( const char* x )
|
||||
{ return stringHash(x); }
|
||||
#endif
|
||||
#endif // WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
static unsigned long stringHash( const wchar_t* );
|
||||
static unsigned long stringHash( const char* );
|
||||
|
||||
wxStringHash& operator=(const wxStringHash&) { return *this; }
|
||||
};
|
||||
|
@ -22,7 +22,8 @@
|
||||
/* from requirements by Colin Plumb. */
|
||||
/* (http://burtleburtle.net/bob/hash/doobs.html) */
|
||||
/* adapted from Perl sources ( hv.h ) */
|
||||
unsigned long wxStringHash::wxCharStringHash( const wxChar* k )
|
||||
template<typename T>
|
||||
static unsigned long DoStringHash(T *k)
|
||||
{
|
||||
unsigned long hash = 0;
|
||||
|
||||
@ -38,23 +39,12 @@ unsigned long wxStringHash::wxCharStringHash( const wxChar* k )
|
||||
return hash + (hash << 15);
|
||||
}
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
unsigned long wxStringHash::charStringHash( const char* k )
|
||||
{
|
||||
unsigned long hash = 0;
|
||||
unsigned long wxStringHash::stringHash( const char* k )
|
||||
{ return DoStringHash(k); }
|
||||
|
||||
while( *k )
|
||||
{
|
||||
hash += *k++;
|
||||
hash += (hash << 10);
|
||||
hash ^= (hash >> 6);
|
||||
}
|
||||
hash += (hash << 3);
|
||||
hash ^= (hash >> 11);
|
||||
unsigned long wxStringHash::stringHash( const wchar_t* k )
|
||||
{ return DoStringHash(k); }
|
||||
|
||||
return hash + (hash << 15);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user