11 #include "RNPlatform/Inc/MemoryTracking.h"
12 #ifndef __REGISTRYMANAGERMAP_H__
13 #define __REGISTRYMANAGERMAP_H__
19 namespace RNReplicaNet
40 mDirection = kUndefined;
55 bool AddItem(
const I &index,
const T *item)
57 typedef typename std::map<I,T*,C>::iterator theIter;
58 typename std::pair<theIter,bool> aMapResult;
59 aMapResult = mItems.insert(std::pair<I,T*>(index,(T*)item));
60 return aMapResult.second;
71 typename std::map<I,T*,C>::iterator found;
73 found = mItems.find(index);
75 if (found != mItems.end())
78 mDirection = kUndefined;
79 return (*found).second;
91 typename std::map<I,T*,C>::iterator found;
93 found = mItems.find(index);
95 if (found != mItems.end())
97 return (*found).second;
109 typename std::map<I,T*,C>::iterator found;
111 found = mItems.find(index);
113 if (found != mItems.end())
115 if (mDirection != kUndefined)
119 if (mDirection == kForward)
126 if (mDirection == kBackward)
150 assert(
false &&
"Undefined direction state");
164 typename std::map<I,T*,C>::iterator tst;
174 typename std::map<I,T*,C>::iterator tst;
188 mDirection = kForward;
197 mDirection = kBackward;
208 assert(mDirection != kUndefined &&
"RegistryManagerList::Iterate() used when BeginIterate() or EndIterate() not used or Iterate() reached the end of the list");
210 if (mDirection == kForward)
212 if (st != mItems.end())
214 T *tclass = (*st).second;
217 *index = (*st).first;
224 if (mDirection == kBackward)
226 if (st != mItems.begin())
229 T *tclass = (*st).second;
232 *index = (*st).first;
239 mDirection = kUndefined;
249 return mItems.empty();
254 return mItems.empty();
268 std::map<I,T*,C> mItems;
269 typename std::map<I,T*,C>::iterator st;
270 Direction mDirection;
void EndIterate(void)
Definition: RegistryManagerMap.h:195
T * FindItem(const I &index)
Definition: RegistryManagerMap.h:69
void RemoveItem(void)
Definition: RegistryManagerMap.h:144
bool RemoveItem(const I &index)
Definition: RegistryManagerMap.h:107
bool IsEmpty(void)
Definition: RegistryManagerMap.h:247
T * FindItemNoIterator(const I &index)
Definition: RegistryManagerMap.h:89
T * Iterate(I *index=0)
Definition: RegistryManagerMap.h:206
RegistryManagerMap()
Definition: RegistryManagerMap.h:38
Definition: RegistryManagerMap.h:25
void BeginIterate(void)
Definition: RegistryManagerMap.h:186
virtual ~RegistryManagerMap()
Definition: RegistryManagerMap.h:47
void Clear(void)
Definition: RegistryManagerMap.h:260
bool AddItem(const I &index, const T *item)
Definition: RegistryManagerMap.h:55