spot  0.9.2
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 2 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 Spot; see the file COPYING. If not, write to the Free
19 // Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 // 02111-1307, USA.
21 
22 #ifndef SPOT_MISC_HASHFUNC_HH
23 # define SPOT_MISC_HASHFUNC_HH
24 # include <cstddef>
25 
26 namespace spot
27 {
31 
36  inline size_t
37  wang32_hash(size_t key)
38  {
39  // We assume that size_t has at least 32bits.
40  key += ~(key << 15);
41  key ^= (key >> 10);
42  key += (key << 3);
43  key ^= (key >> 6);
44  key += ~(key << 11);
45  key ^= (key >> 16);
46  return key;
47  }
48 
55  inline size_t
56  knuth32_hash(size_t key)
57  {
58  // 2654435761 is the golden ratio of 2^32. The right shift of 3
59  // bits assumes that all objects are aligned on a 8 byte boundary.
60  return (key >> 3) * 2654435761U;
61  }
63 }
64 
65 #endif // SPOT_MISC_HASHFUNC_HH

Please comment this page and report errors about it on the RefDocComments page.
Generated on Mon Jul 2 2012 17:35:47 for spot by doxygen 1.8.1.1