24template <
class Type>
class BDict :
public BList<BDictItem<Type> > {
28 BDict(
int hashSize = 100);
68 ohashLists.resize(ohashSize);
72 ohashSize = dict.ohashSize;
73 ohashLists.resize(ohashSize);
78 BIter i = this->find(k);
79 return !this->isEnd(i);
83 return this->get(i).key;
90 for(i = 0; i < ohashLists.size(); i++){
91 ohashLists[i].clear();
125 for(this->start(i); !this->isEnd(i); this->next(i)){
126 if(this->get(i).key == k)
139 BIter i = this->find(k);
146 return this->get(i).value;
150 BIter i = this->find(k);
153 fprintf(stderr,
"BDict over range\n");
157 return this->get(i).value;
161 return this->get(i).value;
165 return this->get(i).value;
192 append(this->get(i));
202 pos = k.
hash() % ohashSize;
203 ohashLists[pos].append(iter);
210 pos = k.
hash() % ohashSize;
211 for(ohashLists[pos].start(i); !ohashLists[pos].isEnd(i); ohashLists[pos].next(i)){
212 if(ohashLists[pos][i] == iter){
213 ohashLists[pos].del(i);
223 pos = k.
hash() % ohashSize;
224 for(ohashLists[pos].start(i); !ohashLists[pos].isEnd(i); ohashLists[pos].next(i)){
225 if(key(ohashLists[pos][i]) == k){
226 iter = ohashLists[pos][i];
237 for(i = 0; i < ohashLists.size(); i++){
238 n += ohashLists[i].number();
void toBString(const BDictString &v, BString &s)
Definition BDict.cpp:10
BDict< BString > BDictString
Definition BDict.h:60
BString bdictStringToString(const BDictString &dict)
Definition BDict.cpp:29
void fromBString(const BString &s, BDictString &v)
Definition BDict.cpp:20
BUInt32 BUInt
Definition BTypes.h:33
BInt16 number
The error number.
Definition BoapMc1.h:0
Template based Array class.
Definition BArray.h:23
Template based Dictionary classes item.
Definition BDict.h:14
BDictItem(BString k="", Type v=Type())
Definition BDict.h:16
BString key
Definition BDict.h:17
Type value
Definition BDict.h:18
Dictionary list class using templates.
Definition BDict.h:24
void append(const BDictItem< Type > &item)
Definition BDict.h:100
BDict< Type > operator+(const BDict< Type > &dict) const
Definition BDict.h:176
void insert(BIter &i, const BDictItem< Type > &item)
Definition BDict.h:95
BDict(int hashSize=100)
Definition BDict.h:66
BIter find(const BString &k) const
Definition BDict.h:121
void hashPrint()
Definition BDict.h:233
Type & operator[](const BString &i)
Definition BDict.h:138
void clear()
Clear the list.
Definition BDict.h:86
BIter iterator
Definition BDict.h:26
int hasKey(const BString &k) const
Definition BDict.h:77
BDict< Type > & operator=(const BDict< Type > &dict)
Definition BDict.h:186
void del(const BString &k)
Definition BDict.h:108
BString key(const BIter &i) const
Definition BDict.h:82
Iterator for BLists.
Definition BList.h:20
Template based list class.
Definition BList.h:31
void next(BIter &i) const
Iterator for next item in list.
Definition BList_func.h:60
int isEnd(BIter &i) const
True if iterator refers to last item.
Definition BList_func.h:109
void start(BIter &i) const
Iterator to start of list.
Definition BList_func.h:43
This class stores and manipulates ASCII strings.
Definition BString.h:20
BUInt32 hash() const
Create a 32bit hash number for the string.
Definition BString.cpp:1200