22 template <
class Type>
class BDict :
public BList<BDictItem<Type> > {
26 BDict(
int hashSize = 100);
66 ohashLists.resize(ohashSize);
70 ohashSize = dict.ohashSize;
71 ohashLists.resize(ohashSize);
76 BIter i = this->find(k);
77 return !this->isEnd(i);
81 return this->get(i).key;
88 for(i = 0; i < ohashLists.size(); i++){
89 ohashLists[i].clear();
123 for(this->start(i); !this->isEnd(i); this->next(i)){
124 if(this->get(i).key == k)
137 BIter i = this->find(k);
144 return this->get(i).value;
148 BIter i = this->find(k);
151 fprintf(stderr,
"BDict over range\n");
155 return this->get(i).value;
159 return this->get(i).value;
163 return this->get(i).value;
190 append(this->get(i));
200 pos = k.
hash() % ohashSize;
201 ohashLists[pos].append(iter);
208 pos = k.
hash() % ohashSize;
209 for(ohashLists[pos].start(i); !ohashLists[pos].isEnd(i); ohashLists[pos].next(i)){
210 if(ohashLists[pos][i] == iter){
211 ohashLists[pos].del(i);
221 pos = k.
hash() % ohashSize;
222 for(ohashLists[pos].start(i); !ohashLists[pos].isEnd(i); ohashLists[pos].next(i)){
223 if(key(ohashLists[pos][i]) == k){
224 iter = ohashLists[pos][i];
235 for(i = 0; i < ohashLists.size(); i++){
236 n += ohashLists[i].number();
void insert(BIter &i, const BDictItem< Type > &item)
Insert item before item.
Definition: BDict.h:93
Iterator for BList.
Definition: BList.h:18
void hashPrint()
Definition: BDict.h:231
void del(const BString &k)
Definition: BDict.h:106
Type & operator[](const BString &i)
Definition: BDict.h:136
BIter iterator
Definition: BDict.h:24
Template based list class.
Definition: BList.h:30
int isEnd(BIter &i) const
True if iterator refers to last item.
Definition: BList_func.h:98
BIter find(const BString &k) const
Definition: BDict.h:119
BString key(const BIter &i) const
Definition: BDict.h:80
void toBString(const BDictString &v, BString &s)
Definition: BDict.cpp:8
Template based Dictionary class.
Definition: BDict.h:13
BDict(int hashSize=100)
Definition: BDict.h:64
void fromBString(const BString &s, BDictString &v)
Definition: BDict.cpp:18
void append(const BDictItem< Type > &item)
Definition: BDict.h:98
BDict< Type > & operator=(const BDict< Type > &dict)
Definition: BDict.h:184
BDict< BString > BDictString
Definition: BDict.h:58
void next(BIter &i) const
Iterator for next item in list.
Definition: BList_func.h:49
BUInt32 BUInt
Definition: BTypes.h:30
void clear()
Clear the list.
Definition: BDict.h:84
BString key
Definition: BDict.h:16
void start(BIter &i) const
Iterator to start of list.
Definition: BList_func.h:32
BUInt32 hash() const
Definition: BString.cpp:1160
BDict< Type > operator+(const BDict< Type > &dict) const
Definition: BDict.h:174
Type value
Definition: BDict.h:17
BInt16 number
The error number.
Definition: BoapMc1.h:19
int hasKey(const BString &k) const
Definition: BDict.h:75
BDictItem(BString k="", Type v=Type())
Definition: BDict.h:15
BString bdictStringToString(const BDictString &dict)
Definition: BDict.cpp:27