33 template<
class T,
class Key,
class Hash>
38 return Hash()(key) & (keys_.size() - 1);
44 template<
class T,
class Key,
class Hash>
51 template<
class T,
class Key,
class Hash>
58 template<
class T,
class Key,
class Hash>
65 return set(key, newEntry,
true);
69 template<
class T,
class Key,
class Hash>
76 return set(key, newEntry,
false);
80 template<
class T,
class Key,
class Hash>
90 template<
class T,
class Key,
class Hash>
97 FatalErrorIn(
"StaticHashTable<T, Key, Hash>::operator[](const Key&)")
98 << key <<
" not found in table. Valid entries: "
107 template<
class T,
class Key,
class Hash>
119 "StaticHashTable<T, Key, Hash>::operator[](const Key&) const"
120 ) << key <<
" not found in table. Valid entries: "
129 template<
class T,
class Key,
class Hash>
148 template<
class T,
class Key,
class Hash>
149 template<
class TRef,
class TableRef>
158 hashIndex_(hashIndex),
159 elemIndex_(elemIndex)
163 template<
class T,
class Key,
class Hash>
164 template<
class TRef,
class TableRef>
170 hashTable_(iter.hashTable_),
171 hashIndex_(iter.hashIndex_),
172 elemIndex_(iter.elemIndex_)
176 template<
class T,
class Key,
class Hash>
177 template<
class TRef,
class TableRef>
184 this->hashIndex_ = iter.hashIndex_;
185 this->elemIndex_ = iter.elemIndex_;
189 template<
class T,
class Key,
class Hash>
190 template<
class TRef,
class TableRef>
197 return hashIndex_ == iter.hashIndex_ && elemIndex_ == iter.elemIndex_;
201 template<
class T,
class Key,
class Hash>
202 template<
class TRef,
class TableRef>
209 return hashIndex_ == iter.hashIndex_ && elemIndex_ == iter.elemIndex_;
213 template<
class T,
class Key,
class Hash>
214 template<
class TRef,
class TableRef>
225 template<
class T,
class Key,
class Hash>
226 template<
class TRef,
class TableRef>
237 template<
class T,
class Key,
class Hash>
238 template<
class TRef,
class TableRef>
242 return hashTable_.objects_[hashIndex_][elemIndex_];
246 template<
class T,
class Key,
class Hash>
247 template<
class TRef,
class TableRef>
255 template<
class T,
class Key,
class Hash>
256 template<
class TRef,
class TableRef>
275 if (elemIndex_ < hashTable_.objects_[hashIndex_].size())
286 ++hashIndex_ < hashTable_.objects_.size()
287 && !hashTable_.objects_[hashIndex_].size()
292 if (hashIndex_ >= hashTable_.objects_.size())
295 hashIndex_ = hashTable_.keys_.size();
302 template<
class T,
class Key,
class Hash>
303 template<
class TRef,
class TableRef>
325 template<
class T,
class Key,
class Hash>
326 template<
class TRef,
class TableRef>
330 return hashTable_.keys_[hashIndex_][elemIndex_];
334 template<
class T,
class Key,
class Hash>
341 if (keys_[hashIdx].size())
350 Info<<
"StaticHashTable is empty\n";
358 template<
class T,
class Key,
class Hash>
366 template<
class T,
class Key,
class Hash>
373 if (keys_[hashIdx].size())
382 Info<<
"StaticHashTable is empty\n";
390 template<
class T,
class Key,
class Hash>
398 template<
class T,
class Key,
class Hash>
402 return this->cbegin();
406 template<
class T,
class Key,
class Hash>