Make Chris Dyer feel safer about compile time if statement handling

git-svn-id: https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk@4358 1f5c12ca-751b-0410-a591-d2e778427230
This commit is contained in:
heafield 2011-10-14 11:52:05 +00:00
parent 7b129fa461
commit 967b725d73

View File

@ -117,13 +117,18 @@ uint64_t MurmurHash64B ( const void * key, std::size_t len, unsigned int seed )
return h;
}
// Trick to test for 64-bit architecture at compile time.
namespace {
template <unsigned L> uint64_t MurmurHashNativeBackend(const void * key, std::size_t len, unsigned int seed) {
return MurmurHash64A(key, len, seed);
}
template <> uint64_t MurmurHashNativeBackend<4>(const void * key, std::size_t len, unsigned int seed) {
return MurmurHash64B(key, len, seed);
}
} // namespace
uint64_t MurmurHashNative(const void * key, std::size_t len, unsigned int seed) {
if (sizeof(int) == 4) {
return MurmurHash64B(key, len, seed);
} else {
return MurmurHash64A(key, len, seed);
}
return MurmurHashNativeBackend<sizeof(void*)>(key, len, seed);
}
} // namespace util