68 lines
1.4 KiB
C++
68 lines
1.4 KiB
C++
#include <WString.h>
|
|
#include "KeyValuePair.hpp"
|
|
#include "GenericArray.hpp"
|
|
#include "logger.hpp"
|
|
|
|
template <typename K, typename V>
|
|
class Dictionary : public GenericArray<KeyValuePair<K, V>>
|
|
{
|
|
public:
|
|
void Set(K key, V value)
|
|
{
|
|
if (!ContainsKey(key))
|
|
{
|
|
this->Append(KeyValuePair<K, V>(key, value));
|
|
return;
|
|
}
|
|
this->data[IndexOf(key)] = new KeyValuePair<K, V>(key, value);
|
|
}
|
|
|
|
KeyValuePair<K, V> Get(int index)
|
|
{
|
|
if (this->Count() > index)
|
|
return *this->data[index];
|
|
return KeyValuePair<K, V>();
|
|
}
|
|
|
|
KeyValuePair<K, V> Get(K key)
|
|
{
|
|
int index = this->IndexOf(key);
|
|
if (index >= 0)
|
|
return this->Get(index);
|
|
return KeyValuePair<K, V>();
|
|
}
|
|
|
|
bool ContainsKey(K key)
|
|
{
|
|
return this->IndexOf(key) >= 0;
|
|
}
|
|
|
|
int IndexOf(K Key)
|
|
{
|
|
for (size_t i = 0; i < this->Count(); i++)
|
|
{
|
|
if ((*this->data[i]).GetKey() == Key)
|
|
return i;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
V &operator[](K key)
|
|
{
|
|
int index = this->IndexOf(key);
|
|
if (index >= 0)
|
|
{
|
|
return this->Get(index).GetValue();
|
|
}
|
|
return KeyValuePair<K, V>();
|
|
}
|
|
|
|
KeyValuePair<K, V> &operator[](int index)
|
|
{
|
|
if (index >= 0)
|
|
{
|
|
return this->Get(index).GetValue();
|
|
}
|
|
return KeyValuePair<K, V>();
|
|
}
|
|
}; |