raSystem  1.0 bata
raMap.h
Go to the documentation of this file.
1 #pragma once
2 
3  template <typename T, typename TM> class raMap
4  {
5  public:
6  raMap();
7  ~raMap();
8 
9  void AddItem(T what, TM white);
10  bool GetItem(T what, TM& white);
11  void DeleteItem(T what);
12  void Clear();
13 
14  protected:
15  struct raMapItem
16  {
17  T m_what;
18  TM m_white;
19  };
20 
22  size_t nItems;
23 
24  int FindItem(T known);
25  };
26  template <typename T, typename TM>
28  {
29  pItems = NULL;
30  nItems = 0;
31  }
32  template <typename T, typename TM>
34  {
35  Clear();
36  }
37  template <typename T, typename TM>
39  {
40  if (pItems)
41  {
42  delete [] pItems;
43  pItems = NULL;
44  }
45  nItems = 0;
46  }
47 
48  template <typename T, typename TM>
50  {
51  if (!pItems) return -1;
52  for (size_t i = 0; i < nItems; i++)
53  {
54  if (pItems[i].m_what == what)
55  return static_cast<int>(i);
56  }
57  return -1;
58  }
59 
60  template <typename T, typename TM>
61  void raMap<T, TM>::AddItem(T what, TM white)
62  {
63  raMapItem* pNewItems = new raMapItem[nItems + 1];
64 
65  if (pItems) memcpy(pNewItems, pItems, nItems * sizeof(raMapItem));
66  pNewItems[nItems].m_what = what;
67  pNewItems[nItems].m_white = white;
68 
69  if (pItems) delete [] pItems;
70  pItems = pNewItems;
71  nItems++;
72  }
73 
74  template <typename T, typename TM>
75  bool raMap<T, TM>::GetItem(T what, TM& white)
76  {
77  int iIndex = FindItem(known);
78  if (iIndex < 0) return false;
79  white = pItems[iIndex].m_white;
80  return true;
81  }
82 
83  template <typename T, typename TM>
85  {
86  int iIndex = FindItem(what);
87  if (iIndex == -1) return;
88  if (nItems == 1)
89  {
90  Clear();
91  return;
92  }
93 
94  raMapItem* pNewItems = new ITEM[nItems - 1];
95 
96  memcpy(pNewItems, pItems, iIndex * sizeof(raMapItem));
97  memcpy(&pNewItems[iIndex], pItems, (nItems - iIndex - 1) * sizeof(raMapItem));
98 
99  delete [] pItems;
100  pItems = pNewItems;
101  nItems--;
102  }
void AddItem(T what, TM white)
Definition: raMap.h:61
bool GetItem(T what, TM &white)
Definition: raMap.h:75
size_t nItems
Definition: raMap.h:22
~raMap()
Definition: raMap.h:33
raMapItem * pItems
Definition: raMap.h:21
Definition: raMap.h:3
int FindItem(T known)
Definition: raMap.h:49
void Clear()
Definition: raMap.h:38
raMap()
Definition: raMap.h:27
void DeleteItem(T what)
Definition: raMap.h:84