aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2009-11-20 10:35:43 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2009-11-20 10:35:43 +0000
commit3d68714e229aefd3a91ad16e169f600abca1653d (patch)
tree7b42142e3353fc0d0297dda7bca34ee45f644084
parentc86818cfbeed504a781e22aa7bf36a12c7fa62a9 (diff)
downloadgcc-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
-rw-r--r--libstdc++-v3/ChangeLog4
-rw-r--r--libstdc++-v3/src/compatibility-c++0x.cc33
2 files changed, 37 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 83e740d..3ae6304 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+2009-11-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * src/compatibility-c++0x.cc (_Fnv_hash<4>, _Fnv_hash<8>): Add.
+
2009-11-19 Benjamin Kosnik <bkoz@redhat.com>
* src/pool_allocator.cc: Adjust catch blocks.
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<>