// Creator - MatthewGolder
#include "Map.h"
#include <assert.h>
template<typename K, typename V>
MapEntry<K, V>::MapEntry(void):
_key(K()),
_value(V())
{
}
template<typename K, typename V>
MapEntry<K, V>::MapEntry(const K& key, const V& value):
_key(key),
_value(value)
{
}
template<typename K, typename V>
K& MapEntry<K, V>::First(void)
{
return _key;
}
template<typename K, typename V>
const K& MapEntry<K, V>::First(void)const
{
return _key;
}
template<typename K, typename V>
void MapEntry<K, V>::First(const K& key)
{
_key = key;
}
template<typename K, typename V>
V& MapEntry<K, V>::Second(void)
{
return _value;
}
template<typename K, typename V>
const V& MapEntry<K,V>::Second(void)const
{
return _value;
}
template<typename K, typename V>
void MapEntry<K, V>::Second(const V& value)
{
_value = value;
}
template<typename K, typename V>
Map<K, V>::Map(void)
{
}
template<typename K, typename V>
Map<K, V>::~Map(void)
{
}
template<typename K, typename V>
MapEntry<K, V>& Map<K, V>::operator[](unsigned int i)
{
return _mapTable[i];
}
template<typename K, typename V>
const MapEntry<K, V>& Map<K, V>::operator[](unsigned int i)const
{
return _mapTable[i];
}
template<typename K, typename V>
MapEntry<K, V>& Map<K, V>::Element(unsigned int i)
{
return _mapTable[i];
}
template<typename K, typename V>
const MapEntry<K, V>& Map<K, V>::Element(unsigned int i)const
{
return _mapTable[i];
}
template<typename K, typename V>
void Map<K, V>::Insert(const MapEntry<K, V> entry)
{
if(FindKey(entry.First()) == -1)
{
_mapTable.PushTail(entry);
}
}
template<typename K, typename V>
void Map<K, V>::Insert(const K& key, const V& value)
{
MapEntry<K, V> entry(key, value);
if(FindKey(entry.First()) == -1)
{
_mapTable.PushTail(entry);
}
}
template<typename K, typename V>
int Map<K, V>::FindKey(const K& key)const
{
unsigned int count = _mapTable.Count();
FOR_EACH_VEC(_mapTable, count, c)
{
if(_mapTable[c].First() == key)
{
return c;
}
}
return -1;
}
template<typename K, typename V>
bool Map<K, V>::Contains(const K& key)const
{
return (FindKey(key) >= 0);
}
template<typename K, typename V>
bool Map<K, V>::Compare(const MapElements& lhs, const MapElements& rhs)const
{
return (lhs == rhs);
}
template<typename K, typename V>
bool Map<K, V>::CompareKey(const K& lhs, const K& rhs)const
{
return (lhs == rhs);
}
template<typename K, typename V>
bool Map<K, V>::CompareValue(const V& lhs, const V& rhs)const
{
return (lhs == rhs);
}
template<typename K, typename V>
void Map<K, V>::Remove(unsigned int elem)
{
_mapTable.Remove(elem);
}
template<typename K, typename V>
void Map<K, V>::Remove(const K& key)
{
_mapTable.Remove(FindKey(key));
}
template<typename K, typename V>
void Map<K, V>::Clear(void)
{
_mapTable.Clear();
}