Go to the documentation of this file.
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;
150 return &map == &rhs.map && index == rhs.index;
165 return ElementConst{map.keyAt(index), map.valueAt(index)};
224 const K&
keyAt(
unsigned int idx)
const
303 return keys.allocate(newSize) &&
values.allocate(newSize);
392 (*this)[e.key()] = e.value();
403 return Iterator<false>(*
this, 0);
408 return Iterator<false>(*
this,
count());
413 return Iterator<true>(*
this, 0);
416 Iterator<true>
end()
const
418 return Iterator<true>(*
this,
count());
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]);
void setNullValue(const V &nullv)
Definition: WHashMap.h:396
void sort(SortCompare compare)
Sort map entries.
Definition: WHashMap.h:451
HashMap class template.
Definition: WHashMap.h:41
ValueList values
Definition: WHashMap.h:426
Iterator< true > begin() const
Definition: WHashMap.h:411
KeyList keys
Definition: WHashMap.h:425
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:97
void remove(const K &key)
Definition: WHashMap.h:374
Iterator(Map &map, unsigned index)
Definition: WHashMap.h:124
V nil
Definition: WHashMap.h:429
BaseElement(const K &key, Value &value)
Definition: WHashMap.h:48
const Value * operator->() const
Definition: WHashMap.h:88
Comparator cb_comparator
Definition: WHashMap.h:427
typename std::conditional< std::is_scalar< T >::value, ScalarList< T >, ObjectList< T > >::type List
Definition: WiringList.h:190
wiring_private::List< mqtt_type_t > KeyList
Definition: WHashMap.h:422
BaseElement< true > ElementConst
Definition: WHashMap.h:108
std::random_access_iterator_tag iterator_category
Definition: WHashMap.h:113
typename std::conditional< is_const, const HashMap, HashMap >::type Map
Definition: WHashMap.h:119
const Value & operator*() const
Definition: WHashMap.h:78
Value & operator*()
Definition: WHashMap.h:73
bool(*)(const mqtt_type_t &, const mqtt_type_t &) Comparator
Compare two keys for equality.
Definition: WHashMap.h:176
void setMultiple(const HashMap< K, V > &map)
Definition: WHashMap.h:389
unsigned currentIndex
Definition: WHashMap.h:428
const V & value() const
Definition: WHashMap.h:62
bool(*)(const ElementConst &e1, const ElementConst &e2) SortCompare
Return true if key1 < key2.
Definition: WHashMap.h:181
typename std::conditional< is_const, const V, V >::type Value
Definition: WHashMap.h:120
Iterator< false > end()
Definition: WHashMap.h:406
Iterator operator++(int)
Definition: WHashMap.h:134
long map(long, long, long, long, long)
Value & value()
Definition: WHashMap.h:57
unsigned int count() const
Definition: WHashMap.h:210
const K & key() const
Definition: WHashMap.h:52
Iterator(const Iterator &)=default
HashMap()
Definition: WHashMap.h:188
bool operator==(const Iterator &rhs) const
Definition: WHashMap.h:148
typename std::conditional< is_const, const V, V >::type Value
Definition: WHashMap.h:46
bool contains(const K &key) const
Definition: WHashMap.h:343
void removeAt(unsigned index)
Definition: WHashMap.h:355
bool allocate(unsigned int newSize)
Definition: WHashMap.h:301
std::ptrdiff_t difference_type
Definition: WHashMap.h:115
Iterator operator+=(size_t distance)
Definition: WHashMap.h:141
void size_t const void * key
Definition: blake2s.h:33
const K & keyAt(unsigned int idx) const
Definition: WHashMap.h:224
Provides formatted output to stream.
Definition: Print.h:36
BaseElement< is_const > operator*()
Definition: WHashMap.h:158
BaseElement & operator=(const V &value)
Definition: WHashMap.h:67
ElementConst operator*() const
Definition: WHashMap.h:163
Iterator< true > end() const
Definition: WHashMap.h:416
K & keyAt(unsigned int idx)
Definition: WHashMap.h:232
Definition: WHashMap.h:110
Iterator & operator++()
Definition: WHashMap.h:128
BaseElement< false > Element
Definition: WHashMap.h:107
int indexOf(const K &key) const
Definition: WHashMap.h:320
bool operator!=(const Iterator &rhs) const
Definition: WHashMap.h:153
size_t printTo(Print &p) const
Definition: WHashMap.h:93
const V & valueAt(unsigned int idx) const
Definition: WHashMap.h:249
HashMap(Comparator compare)
Definition: WHashMap.h:199
void clear()
Definition: WHashMap.h:382
V & valueAt(unsigned int idx)
Definition: WHashMap.h:257
const V & operator[](const K &key) const
Definition: WHashMap.h:281
Iterator< false > begin()
Definition: WHashMap.h:401
Definition: WHashMap.h:44
wiring_private::List< MqttDelegate > ValueList
Definition: WHashMap.h:423
Value * operator->()
Definition: WHashMap.h:83