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;
222 const K&
keyAt(
unsigned int idx)
const
301 return keys.allocate(newSize) &&
values.allocate(newSize);
390 (*this)[e.key()] = e.value();
436 int i = indexOf(
key);
440 if(currentIndex >= values.size) {
441 allocate(currentIndex + ((values.size < 16) ? 4 : 16));
443 keys[currentIndex] =
key;
444 values[currentIndex] = nil;
446 return values[currentIndex - 1];
452 for(
unsigned i = 0; i < n - 1; ++i) {
453 for(
unsigned j = 0; j < n - i - 1; ++j) {
457 std::swap(keys[j], keys[j + 1]);
458 std::swap(values[j], values[j + 1]);
CompareResult compare(JsonVariantConst lhs, const FSTR::String &rhs)
Definition: FlashStringRefAdapter.hpp:23
long map(long x, long in_min, long in_max, long out_min, long out_max)
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:409
Iterator< false > begin()
Definition: WHashMap.h:399
const V & valueAt(unsigned int idx) const
Definition: WHashMap.h:247
void removeAt(unsigned index)
Definition: WHashMap.h:353
bool contains(const K &key) const
Definition: WHashMap.h:341
const K & keyAt(unsigned int idx) const
Definition: WHashMap.h:222
KeyList keys
Definition: WHashMap.h:423
unsigned int count() const
Definition: WHashMap.h:208
ValueList values
Definition: WHashMap.h:424
const V & operator[](const K &key) const
Definition: WHashMap.h:279
unsigned currentIndex
Definition: WHashMap.h:426
void setNullValue(const V &nullv)
Definition: WHashMap.h:394
Comparator cb_comparator
Definition: WHashMap.h:425
wiring_private::List< V > ValueList
Definition: WHashMap.h:421
void remove(const K &key)
Definition: WHashMap.h:372
void sort(SortCompare compare)
Sort map entries.
Definition: WHashMap.h:449
Iterator< true > end() const
Definition: WHashMap.h:414
wiring_private::List< K > KeyList
Definition: WHashMap.h:420
void clear()
Definition: WHashMap.h:380
bool allocate(unsigned int newSize)
Definition: WHashMap.h:299
HashMap(Comparator compare)
Definition: WHashMap.h:197
int indexOf(const K &key) const
Definition: WHashMap.h:318
K & keyAt(unsigned int idx)
Definition: WHashMap.h:230
Iterator< false > end()
Definition: WHashMap.h:404
void setMultiple(const HashMap< K, V > &map)
Definition: WHashMap.h:387
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:255
V nil
Definition: WHashMap.h:427
V & operator[](const K &key)
Definition: WHashMap.h:434
Provides formatted output to stream.
Definition: Print.h:37
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:103
typename std::conditional< std::is_scalar< T >::value, ScalarList< T >, ObjectList< T > >::type List
Definition: WiringList.h:197
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