diff --git a/src/OpenFOAM/primitives/hashes/Hash/Hash.H b/src/OpenFOAM/primitives/hashes/Hash/Hash.H index 51c687ef6d97f40a710d791912d419d130069c58..575bae9208adc8929cfa3ffcf5c90861af91634e 100644 --- a/src/OpenFOAM/primitives/hashes/Hash/Hash.H +++ b/src/OpenFOAM/primitives/hashes/Hash/Hash.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010, 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2010, 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2012 OpenFOAM Foundation @@ -51,10 +51,10 @@ namespace Foam Class Hash Declaration \*---------------------------------------------------------------------------*/ -template<class PrimitiveType> +template<class T> struct Hash { - inline unsigned operator()(const PrimitiveType& obj, unsigned seed=0) const + inline unsigned operator()(const T& obj, unsigned seed=0) const { return Hasher(&obj, sizeof(obj), seed); } @@ -140,19 +140,18 @@ struct Hash<Foam::keyType> }; -//- Hash specialization for pointers. -// Interpret pointer as a long (works for 32-bit and 64-bit pointers). +//- Hash specialization for pointers, interpret pointer as a integer type. template<> struct Hash<void*> { inline unsigned operator()(const void* const& obj, unsigned seed) const { - return Hash<long>()(long(obj), seed); + return Hash<intptr_t>()(intptr_t(obj), seed); } inline unsigned operator()(const void* const& obj) const { - return Hash<long>()(long(obj)); + return Hash<intptr_t>()(intptr_t(obj)); } };