Hasher.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 InNamespace
27  Foam
28 
29 Description
30  Miscellaneous hashing functions, mostly from Bob Jenkins.
31 
32  The Jenkins hashing function(s) is similar in speed to Paul Hsieh's
33  SuperFast hash, but is public domain, supports incremental hashing
34  and has been reported to have better characteristics.
35  It is also what postgresql seems to be using.
36 
37 See also
38  http://burtleburtle.net/bob/c/lookup3.c
39  and HasherInt.H for a specialized version
40 
41 SourceFiles
42  Hasher.C
43 
44 \*---------------------------------------------------------------------------*/
45 
46 #ifndef Hasher_H
47 #define Hasher_H
48 
49 #include <cstddef>
50 
51 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 
53 namespace Foam
54 {
55 
56 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
57 
58 //- Bob Jenkins's 96-bit mixer hashing function (lookup3)
59 // \param[in] data - a character stream
60 // \param[in] len - the number of bytes
61 // \param[in] seed - the previous hash, or an arbitrary value
62 unsigned Hasher(const void* data, size_t len, unsigned seed = 0);
63 
64 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
65 
66 } // End namespace Foam
67 
68 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
69 
70 #endif
71 
72 // ************************************************************************* //
Foam::Hasher
unsigned Hasher(const void *data, size_t len, unsigned seed=0)
Bob Jenkins's 96-bit mixer hashing function (lookup3)
Definition: Hasher.C:581
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33