1 /* Copyright (C) 2007-2011 Vincent Ollivier
3 * Purple Haze is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
8 * Purple Haze is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
38 HashTable(int used_space
= MT_SIZE
) :
42 SIZE(used_space
/ sizeof(Entry
)),
43 entries(new Entry
[SIZE
])
49 T
lookup(Hash h
, bool* is_empty
);
50 void save(Hash h
, T v
) {
51 entries
[h
& (SIZE
- 1)].hash
= h
;
52 entries
[h
& (SIZE
- 1)].value
= v
;
56 // Used to print stats
57 int size() const { return SIZE
; };
59 T
get_value_at(int i
) const {
60 return entries
[i
].value
;
62 Hash
get_hash_at(int i
) const {
63 return entries
[i
].hash
;
66 int get_usage() const;
67 long get_nb_lookups() const { return hits
+ misses
; };
68 long get_nb_hits() const { return hits
; };
69 long get_nb_collisions() const { return collisions
; };
70 long get_nb_misses() const { return misses
; };
73 #endif /* !HASH_TABLE_H */