41 template <
typename K,
typename V>
class HashMap
46 using Value =
typename std::conditional<is_const, const V, V>::type;
119 using Map =
typename std::conditional<is_const, const HashMap, HashMap>::type;
120 using Value =
typename std::conditional<is_const, const V, V>::type;
224 const K&
keyAt(
unsigned int idx)
const
303 return keys.allocate(newSize) &&
values.allocate(newSize);
392 (*this)[e.key()] = e.value();
438 int i = indexOf(
key);
442 if(currentIndex >= values.size) {
443 allocate(currentIndex + ((values.size < 16) ? 4 : 16));
445 keys[currentIndex] =
key;
446 values[currentIndex] = nil;
448 return values[currentIndex - 1];
454 for(
unsigned i = 0; i < n - 1; ++i) {
455 for(
unsigned j = 0; j < n - i - 1; ++j) {
458 if(compare(e1, e2)) {
459 std::swap(keys[j], keys[j + 1]);
460 std::swap(values[j], values[j + 1]);
long map(long, long, long, long, long)
void size_t const void * key
Definition: blake2s.h:33
Definition: WHashMap.h:111
std::random_access_iterator_tag iterator_category
Definition: WHashMap.h:113
ElementConst operator*() const
Definition: WHashMap.h:163
unsigned index
Definition: WHashMap.h:170
Iterator & operator++()
Definition: WHashMap.h:128
BaseElement< is_const > operator*()
Definition: WHashMap.h:158
std::ptrdiff_t difference_type
Definition: WHashMap.h:115
Iterator(Map &map, unsigned index)
Definition: WHashMap.h:124
bool operator==(const Iterator &rhs) const
Definition: WHashMap.h:148
Iterator operator++(int)
Definition: WHashMap.h:134
Iterator operator+=(size_t distance)
Definition: WHashMap.h:141
bool operator!=(const Iterator &rhs) const
Definition: WHashMap.h:153
Map & map
Definition: WHashMap.h:169
Iterator(const Iterator &)=default
typename std::conditional< is_const, const V, V >::type Value
Definition: WHashMap.h:120
typename std::conditional< is_const, const HashMap, HashMap >::type Map
Definition: WHashMap.h:119
HashMap class template.
Definition: WHashMap.h:42
Iterator< true > begin() const
Definition: WHashMap.h:411
Iterator< false > begin()
Definition: WHashMap.h:401
const V & valueAt(unsigned int idx) const
Definition: WHashMap.h:249
void removeAt(unsigned index)
Definition: WHashMap.h:355
bool contains(const K &key) const
Definition: WHashMap.h:343
const K & keyAt(unsigned int idx) const
Definition: WHashMap.h:224
KeyList keys
Definition: WHashMap.h:425
unsigned int count() const
Definition: WHashMap.h:210
ValueList values
Definition: WHashMap.h:426
const V & operator[](const K &key) const
Definition: WHashMap.h:281
unsigned currentIndex
Definition: WHashMap.h:428
void setNullValue(const V &nullv)
Definition: WHashMap.h:396
Comparator cb_comparator
Definition: WHashMap.h:427
wiring_private::List< V > ValueList
Definition: WHashMap.h:423
void remove(const K &key)
Definition: WHashMap.h:374
void sort(SortCompare compare)
Sort map entries.
Definition: WHashMap.h:451
Iterator< true > end() const
Definition: WHashMap.h:416
wiring_private::List< K > KeyList
Definition: WHashMap.h:422
HashMap()
Definition: WHashMap.h:188
void clear()
Definition: WHashMap.h:382
bool allocate(unsigned int newSize)
Definition: WHashMap.h:301
HashMap(Comparator compare)
Definition: WHashMap.h:199
int indexOf(const K &key) const
Definition: WHashMap.h:320
K & keyAt(unsigned int idx)
Definition: WHashMap.h:232
Iterator< false > end()
Definition: WHashMap.h:406
void setMultiple(const HashMap< K, V > &map)
Definition: WHashMap.h:389
bool(*)(const K &, const K &) Comparator
Compare two keys for equality.
Definition: WHashMap.h:176
bool(*)(const ElementConst &e1, const ElementConst &e2) SortCompare
Return true if key1 < key2.
Definition: WHashMap.h:181
V & valueAt(unsigned int idx)
Definition: WHashMap.h:257
V nil
Definition: WHashMap.h:429
V & operator[](const K &key)
Definition: WHashMap.h:436
Provides formatted output to stream.
Definition: Print.h:37
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:97
typename std::conditional< std::is_scalar< T >::value, ScalarList< T >, ObjectList< T > >::type List
Definition: WiringList.h:182
Definition: WHashMap.h:44
BaseElement & operator=(const V &value)
Definition: WHashMap.h:67
BaseElement(const K &key, Value &value)
Definition: WHashMap.h:48
const V & value() const
Definition: WHashMap.h:62
Value & value()
Definition: WHashMap.h:57
const K & key() const
Definition: WHashMap.h:52
Value * operator->()
Definition: WHashMap.h:83
typename std::conditional< is_const, const V, V >::type Value
Definition: WHashMap.h:46
const Value * operator->() const
Definition: WHashMap.h:88
size_t printTo(Print &p) const
Definition: WHashMap.h:93
Value & operator*()
Definition: WHashMap.h:73
const Value & operator*() const
Definition: WHashMap.h:78