Rudiments
dictionary.h
1 // Copyright (c) 2003 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_DICTIONARY_H
5 #define RUDIMENTS_DICTIONARY_H
6 
7 #include <rudiments/private/dictionaryincludes.h>
8 
9 #ifdef RUDIMENTS_NAMESPACE
10 namespace rudiments {
11 #endif
12 
15 template <class keytype, class datatype>
17  public:
20 
24  virtual ~dictionarynode();
25 
27  void setKey(keytype key);
28 
30  void setData(datatype data);
31 
33  keytype getKey() const;
34 
36  datatype getData() const;
37 
41  int32_t compare(keytype testkey) const;
42 
45  void print() const;
46 
47  #include <rudiments/private/dictionarynode.h>
48 };
49 
50 template <class keytype, class datatype>
52  public linkedlistnode< dictionarynode<keytype,datatype> * > {};
53 
54 template <class keytype, class datatype>
56  public linkedlist< dictionarynode<keytype,datatype> *,
57  dictionarylistnode<keytype,datatype> > {};
58 
68 template <class keytype, class datatype,
69  class dictionarynodetype=dictionarynode<keytype,datatype>,
70  class dictionarylistnodetype=dictionarylistnode<keytype,datatype>,
71  class dictionarylisttype=dictionarylist<keytype,datatype> >
72 class dictionary {
73  public:
75  dictionary();
76 
81  virtual ~dictionary();
82 
86  void setData(keytype key, datatype data);
87 
91  bool getData(keytype key, datatype *data);
92 
96  bool removeData(keytype key);
97 
99  dictionarylisttype *getList();
100 
102  void clear();
103 
105  void print();
106 
107  #include <rudiments/private/dictionary.h>
108 };
109 
110 template <class datatype>
112  public dictionarynode< char *,datatype > {
113  public:
114  virtual ~stringdictionarynode();
115 };
116 
117 template <class datatype>
119  public dictionarylistnode< char *, datatype > {
120  public:
121  virtual ~stringdictionarylistnode();
122 };
123 
124 template <class datatype>
125 class stringdictionarylist : public dictionarylist< char *, datatype > {
126  public:
127  virtual ~stringdictionarylist();
128 };
129 
130 template <class datatype>
131 class stringdictionary : public dictionary< char *, datatype,
132  stringdictionarynode<datatype>,
133  stringdictionarylistnode<datatype>,
134  stringdictionarylist<datatype> > {
135  public:
136  virtual ~stringdictionary();
137 };
138 
139 template <class datatype>
141  public dictionarynode< const char *,datatype > {
142  public:
143  virtual ~conststringdictionarynode();
144 };
145 
146 template <class datatype>
148  public dictionarylistnode< const char *, datatype > {
149  public:
151 };
152 
153 template <class datatype>
155  public dictionarylist< const char *, datatype > {
156  public:
157  virtual ~conststringdictionarylist();
158 };
159 
160 template <class datatype>
161 class conststringdictionary : public dictionary< const char *, datatype,
162  conststringdictionarynode<datatype>,
163  conststringdictionarylistnode<datatype>,
164  conststringdictionarylist<datatype> > {
165  public:
166  virtual ~conststringdictionary();
167 };
168 
169 template <class datatype>
171  public dictionarynode< int32_t, datatype > {
172  public:
173  virtual ~numericdictionarynode();
174 };
175 
176 template <class datatype>
178  public dictionarylistnode< int32_t, datatype > {
179  public:
180  virtual ~numericdictionarylistnode();
181 };
182 
183 template <class datatype>
184 class numericdictionarylist : public dictionarylist< int32_t, datatype > {
185  public:
186  virtual ~numericdictionarylist();
187 };
188 
189 template <class datatype>
190 class numericdictionary : public dictionary< int32_t, datatype,
191  numericdictionarynode<datatype>,
192  numericdictionarylistnode<datatype>,
193  numericdictionarylist<datatype> > {
194  public:
195  virtual ~numericdictionary();
196 };
197 
202 
211 
212 #ifdef RUDIMENTS_NAMESPACE
213 }
214 #endif
215 
216 #include <rudiments/private/dictionarynodeinlines.h>
217 #include <rudiments/private/dictionaryinlines.h>
218 
219 #endif