~ubuntu-branches/ubuntu/oneiric/blobandconquer/oneiric

« back to all changes in this revision

Viewing changes to src/util/CHashtable.h

  • Committer: Bazaar Package Importer
  • Author(s): Guus Sliepen
  • Date: 2008-06-15 12:04:29 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080615120429-5ss7cbb4z9mpywj5
Tags: 0.95-1
New upstream release. Closes: #486310

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
Copyright (C) 2006 Parallel Realities
3
 
 
4
 
This program is free software; you can redistribute it and/or
5
 
modify it under the terms of the GNU General Public License
6
 
as published by the Free Software Foundation; either version 2
7
 
of the License, or (at your option) any later version.
8
 
 
9
 
This program is distributed in the hope that it will be useful,
10
 
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
 
 
13
 
See the GNU General Public License for more details.
14
 
 
15
 
You should have received a copy of the GNU General Public License
16
 
along with this program; if not, write to the Free Software
17
 
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
 
 
19
 
*/
20
 
 
21
 
#define MULTIPLIER 65599
22
 
#define MAX_BUCKETS 256
23
 
 
24
 
struct Entry {
25
 
 
26
 
        unsigned int hash;
27
 
        
28
 
        Linkable *data;
29
 
 
30
 
        Entry *previous;
31
 
        Entry *next;
32
 
 
33
 
};
34
 
 
35
 
class Hashtable {
36
 
 
37
 
        private:
38
 
 
39
 
                Entry *bucket[MAX_BUCKETS];
40
 
 
41
 
                List list;
42
 
 
43
 
        public:
44
 
 
45
 
                String name;
46
 
 
47
 
        Hashtable();
48
 
        ~Hashtable();
49
 
 
50
 
        void put(const char *key, Linkable *data);
51
 
        void put(unsigned int hash, Linkable *data);
52
 
 
53
 
        void *get(const char *key);
54
 
        void *get(unsigned int hash);
55
 
 
56
 
        void remove(const char *key);
57
 
        void remove(unsigned int hash);
58
 
 
59
 
        Entry *getBucket(const char *key);
60
 
        Entry *getBucket(unsigned int hash);
61
 
 
62
 
        List *toList();
63
 
 
64
 
        int getSize();
65
 
 
66
 
        void clear();
67
 
 
68
 
        void printTable();
69
 
 
70
 
};