1.1 --- a/epoc32/include/stdapis/stlport/stl/_string_hash.h Tue Nov 24 13:55:44 2009 +0000
1.2 +++ b/epoc32/include/stdapis/stlport/stl/_string_hash.h Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -1,1 +1,70 @@
1.4 -_string_hash.h
1.5 +/*
1.6 + * Copyright (c) 1997-1999
1.7 + * Silicon Graphics Computer Systems, Inc.
1.8 + *
1.9 + * Copyright (c) 1999
1.10 + * Boris Fomitchev
1.11 + *
1.12 + * This material is provided "as is", with absolutely no warranty expressed
1.13 + * or implied. Any use is at your own risk.
1.14 + *
1.15 + * Permission to use or copy this software for any purpose is hereby granted
1.16 + * without fee, provided the above notices are retained on all copies.
1.17 + * Permission to modify the code and to distribute modified code is granted,
1.18 + * provided the above notices are retained, and a notice that the code was
1.19 + * modified is included with the above copyright notice.
1.20 + *
1.21 + */
1.22 +
1.23 +#ifndef _STLP_STRING_HASH_H
1.24 +# define _STLP_STRING_HASH_H
1.25 +
1.26 +#ifndef _STLP_HASH_FUN_H
1.27 +# include <stl/_hash_fun.h>
1.28 +#endif
1.29 +
1.30 +#ifndef _STLP_STRING_H
1.31 +# include <stl/_string.h>
1.32 +#endif
1.33 +
1.34 +_STLP_BEGIN_NAMESPACE
1.35 +
1.36 +template <class _CharT, class _Traits, class _Alloc>
1.37 +_STLP_INLINE_LOOP size_t
1.38 +__stl_string_hash(const basic_string<_CharT,_Traits,_Alloc>& __s) {
1.39 + unsigned long __h = 0;
1.40 + typedef typename basic_string<_CharT,_Traits,_Alloc>::const_pointer const_ptr;
1.41 + size_t __len = __s.size();
1.42 + const _CharT* __data = __s.data();
1.43 + for ( size_t __i = 0; __i < __len; ++__i)
1.44 + __h = 5*__h + __data[__i];
1.45 + return size_t(__h);
1.46 +}
1.47 +
1.48 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1.49 +
1.50 +template <class _CharT, class _Traits, class _Alloc>
1.51 +struct hash<basic_string<_CharT,_Traits,_Alloc> > {
1.52 + size_t operator()(const basic_string<_CharT,_Traits,_Alloc>& __s) const
1.53 + { return __stl_string_hash(__s); }
1.54 +};
1.55 +
1.56 +#else
1.57 +
1.58 +_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC hash<string> {
1.59 + size_t operator()(const string& __s) const
1.60 + { return __stl_string_hash(__s); }
1.61 +};
1.62 +
1.63 +# if defined (_STLP_HAS_WCHAR_T)
1.64 +_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC hash<wstring> {
1.65 + size_t operator()(const wstring& __s) const
1.66 + { return __stl_string_hash(__s); }
1.67 +};
1.68 +# endif
1.69 +
1.70 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1.71 +
1.72 +_STLP_END_NAMESPACE
1.73 +
1.74 +#endif