git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45097
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxPointerEqual& operator=(const wxPointerEqual&) { return *this; }
};
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
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
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; }
};
wxStringHash& operator=(const wxStringHash&) { return *this; }
};
/* from requirements by Colin Plumb. */
/* (http://burtleburtle.net/bob/hash/doobs.html) */
/* adapted from Perl sources ( hv.h ) */
/* 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;
{
unsigned long hash = 0;
return hash + (hash << 15);
}
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)
#if !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)