spot
1.0.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
misc
hashfunc.hh
Go to the documentation of this file.
1
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
2
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
3
// et Marie Curie.
4
//
5
// This file is part of Spot, a model checking library.
6
//
7
// Spot is free software; you can redistribute it and/or modify it
8
// under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 3 of the License, or
10
// (at your option) any later version.
11
//
12
// Spot is distributed in the hope that it will be useful, but WITHOUT
13
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15
// License for more details.
16
//
17
// You should have received a copy of the GNU General Public License
18
// along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20
#ifndef SPOT_MISC_HASHFUNC_HH
21
# define SPOT_MISC_HASHFUNC_HH
22
# include <cstddef>
23
24
namespace
spot
25
{
29
34
inline
size_t
35
wang32_hash
(
size_t
key)
36
{
37
// We assume that size_t has at least 32bits.
38
key += ~(key << 15);
39
key ^= (key >> 10);
40
key += (key << 3);
41
key ^= (key >> 6);
42
key += ~(key << 11);
43
key ^= (key >> 16);
44
return
key;
45
}
46
53
inline
size_t
54
knuth32_hash
(
size_t
key)
55
{
56
// 2654435761 is the golden ratio of 2^32. The right shift of 3
57
// bits assumes that all objects are aligned on a 8 byte boundary.
58
return
(key >> 3) * 2654435761U;
59
}
61
}
62
63
#endif // SPOT_MISC_HASHFUNC_HH
Please
comment
this page and
report errors
about it on
the RefDocComments page
.
Generated on Wed Mar 6 2013 09:25:14 for spot by
1.8.1.2