Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // Creator - MatthewGolder
  2. #include "Map.h"
  3. #include <assert.h>
  4.  
  5. template<typename K, typename V>
  6. MapEntry<K, V>::MapEntry(void):
  7. _key(K()),
  8. _value(V())
  9. {
  10. }
  11. template<typename K, typename V>
  12. MapEntry<K, V>::MapEntry(const K& key, const V& value):
  13. _key(key),
  14. _value(value)
  15. {
  16. }
  17. template<typename K, typename V>
  18. K& MapEntry<K, V>::First(void)
  19. {
  20.     return _key;
  21. }
  22. template<typename K, typename V>
  23. const K& MapEntry<K, V>::First(void)const
  24. {
  25.     return _key;
  26. }
  27. template<typename K, typename V>
  28. void MapEntry<K, V>::First(const K& key)
  29. {
  30.     _key = key;
  31. }
  32. template<typename K, typename V>
  33. V& MapEntry<K, V>::Second(void)
  34. {
  35.     return _value;
  36. }
  37. template<typename K, typename V>
  38. const V& MapEntry<K,V>::Second(void)const
  39. {
  40.     return _value;
  41. }
  42. template<typename K, typename V>
  43. void MapEntry<K, V>::Second(const V& value)
  44. {
  45.     _value = value;
  46. }
  47. template<typename K, typename V>
  48. Map<K, V>::Map(void)
  49. {
  50. }
  51. template<typename K, typename V>
  52. Map<K, V>::~Map(void)
  53. {
  54. }
  55. template<typename K, typename V>
  56. MapEntry<K, V>& Map<K, V>::operator[](unsigned int i)
  57. {
  58.     return _mapTable[i];
  59. }
  60. template<typename K, typename V>
  61. const MapEntry<K, V>& Map<K, V>::operator[](unsigned int i)const
  62. {
  63.     return _mapTable[i];
  64. }
  65. template<typename K, typename V>
  66. MapEntry<K, V>& Map<K, V>::Element(unsigned int i)
  67. {
  68.     return _mapTable[i];
  69. }
  70. template<typename K, typename V>
  71. const MapEntry<K, V>& Map<K, V>::Element(unsigned int i)const
  72. {
  73.     return _mapTable[i];
  74. }
  75. template<typename K, typename V>
  76. void Map<K, V>::Insert(const MapEntry<K, V> entry)
  77. {
  78.     if(FindKey(entry.First()) == -1)
  79.     {
  80.         _mapTable.PushTail(entry);
  81.     }
  82. }
  83. template<typename K, typename V>
  84. void Map<K, V>::Insert(const K& key, const V& value)
  85. {
  86.     MapEntry<K, V> entry(key, value);
  87.     if(FindKey(entry.First()) == -1)
  88.     {
  89.         _mapTable.PushTail(entry);
  90.     }
  91. }
  92. template<typename K, typename V>
  93. int Map<K, V>::FindKey(const K& key)const
  94. {
  95.     unsigned int count = _mapTable.Count();
  96.     FOR_EACH_VEC(_mapTable, count, c)
  97.     {
  98.         if(_mapTable[c].First() == key)
  99.         {
  100.             return c;
  101.         }
  102.     }
  103.     return -1;
  104. }
  105. template<typename K, typename V>
  106. bool Map<K, V>::Contains(const K& key)const
  107. {
  108.     return (FindKey(key) >= 0);
  109. }
  110. template<typename K, typename V>
  111. bool Map<K, V>::Compare(const MapElements& lhs, const MapElements& rhs)const
  112. {
  113.     return (lhs == rhs);
  114. }
  115. template<typename K, typename V>
  116. bool Map<K, V>::CompareKey(const K& lhs, const K& rhs)const
  117. {
  118.     return (lhs == rhs);
  119. }
  120. template<typename K, typename V>
  121. bool Map<K, V>::CompareValue(const V& lhs, const V& rhs)const
  122. {
  123.     return (lhs == rhs);
  124. }
  125. template<typename K, typename V>
  126. void Map<K, V>::Remove(unsigned int elem)
  127. {
  128.     _mapTable.Remove(elem);
  129. }
  130. template<typename K, typename V>
  131. void Map<K, V>::Remove(const K& key)
  132. {
  133.     _mapTable.Remove(FindKey(key));
  134. }
  135. template<typename K, typename V>
  136. void Map<K, V>::Clear(void)
  137. {
  138.     _mapTable.Clear();
  139. }
  140.