diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2009-11-20 10:35:43 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2009-11-20 10:35:43 +0000 |
commit | 3d68714e229aefd3a91ad16e169f600abca1653d (patch) | |
tree | 7b42142e3353fc0d0297dda7bca34ee45f644084 /libstdc++-v3/src | |
parent | c86818cfbeed504a781e22aa7bf36a12c7fa62a9 (diff) | |
download | gcc-3d68714e229aefd3a91ad16e169f600abca1653d.zip gcc-3d68714e229aefd3a91ad16e169f600abca1653d.tar.gz gcc-3d68714e229aefd3a91ad16e169f600abca1653d.tar.bz2 |
compatibility-c++0x.cc (_Fnv_hash<4>, [...]): Add.
2009-11-21 Paolo Carlini <paolo.carlini@oracle.com>
* src/compatibility-c++0x.cc (_Fnv_hash<4>, _Fnv_hash<8>): Add.
From-SVN: r154361
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r-- | libstdc++-v3/src/compatibility-c++0x.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libstdc++-v3/src/compatibility-c++0x.cc b/libstdc++-v3/src/compatibility-c++0x.cc index 0e92135..df28eca 100644 --- a/libstdc++-v3/src/compatibility-c++0x.cc +++ b/libstdc++-v3/src/compatibility-c++0x.cc @@ -57,6 +57,39 @@ namespace std } }; + template<> + struct _Fnv_hash<4> + { + static size_t + hash(const char* __first, size_t __length) + { + size_t __result = static_cast<size_t>(2166136261UL); + for (; __length > 0; --__length) + { + __result ^= static_cast<size_t>(*__first++); + __result *= static_cast<size_t>(16777619UL); + } + return __result; + } + }; + + template<> + struct _Fnv_hash<8> + { + static size_t + hash(const char* __first, size_t __length) + { + size_t __result = + static_cast<size_t>(14695981039346656037ULL); + for (; __length > 0; --__length) + { + __result ^= static_cast<size_t>(*__first++); + __result *= static_cast<size_t>(1099511628211ULL); + } + return __result; + } + }; + #include "hash.cc" template<> |