22 #ifndef _cmnNamedMap_h
23 #define _cmnNamedMap_h
53 template <
class _elementType>
58 typedef std::map<std::string, _elementType *>
MapType;
119 cmnNamedMap(
const std::string & mapName,
bool takesOwnership =
false):
132 bool takesOwnership =
false):
153 bool AddItem(
const std::string & name,
161 bool FindItem(
const std::string & itemName)
const;
170 void GetNames(std::vector<std::string> & placeHolder)
const;
171 std::vector<std::string>
GetNames(
void)
const;
191 void ToStream(std::ostream & outputStream)
const;
201 return this->
Map.size();
205 return this->
Map.empty();
213 return this->
Map.begin();
217 return this->
Map.begin();
221 return this->
Map.end();
225 return this->
Map.end();
231 template <
class _elementType>
235 const typename MapType::const_iterator
iterator = Map.find(name);
236 if (iterator != Map.end()) {
237 if (this->Services()) {
238 CMN_LOG_CLASS(lod) <<
"AddItem: map \"" << MapName <<
"\" already contains an item named \""
239 << name <<
"\"." << std::endl;
241 CMN_LOG(lod) <<
"cmnNamedMap::AddItem: map \"" << MapName <<
"\" already contains an item named \""
242 << name <<
"\"." << std::endl;
250 template <
class _elementType>
252 const typename MapType::const_iterator iter = Map.find(itemName);
253 if (iter != Map.end()) {
256 if (this->Services()) {
257 CMN_LOG_CLASS(lod) <<
"GetItem: can't find \"" << itemName <<
"\" in map \"" << MapName <<
"\"" << std::endl;
259 CMN_LOG(lod) <<
"cmnNamedMap::GetItem: can't find \"" << itemName <<
"\" in map \"" << MapName <<
"\"" << std::endl;
265 template <
class _elementType>
267 const typename MapType::const_iterator iter = Map.find(itemName);
269 return (iter != Map.end());
272 template <
class _elementType>
276 const typename MapType::iterator
iterator = Map.find(itemName);
277 if (iterator == Map.end()) {
278 if (this->Services()) {
279 CMN_LOG_CLASS(lod) <<
"RemoveItem: can't find \"" << itemName <<
"\" in map \"" << MapName <<
"\"" << std::endl;
281 CMN_LOG(lod) <<
"cmnNamedMap::RemoveItem: can't find \"" << itemName <<
"\" in map \"" << MapName <<
"\"" << std::endl;
286 if (this->TakesOwnership) {
287 delete iterator->second;
294 template <
class _elementType>
297 typename MapType::const_iterator iter = Map.begin();
298 const typename MapType::const_iterator end = Map.end();
302 placeHolder.push_back(iter->first);
307 template <
class _elementType>
309 std::vector<std::string> names;
315 template <
class _elementType>
318 typename MapType::iterator iter;
319 const typename MapType::iterator end = Map.end();
320 for (iter = Map.begin(); iter != end; iter++) {
321 (iter->second->*method)();
326 template <
class _elementType>
329 unsigned int counter = 0;
330 typename MapType::const_iterator iter = Map.begin();
331 const typename MapType::const_iterator end = Map.end();
335 outputStream <<
"- " << MapName <<
"[" << counter <<
"] (\""
336 << iter->first <<
"\"): " << *(iter->second) << std::endl;
341 template <
class _elementType>
343 if (Map.empty())
return;
345 if (this->TakesOwnership) {
346 typename MapType::iterator
iterator = Map.begin();
347 const typename MapType::iterator end = Map.end();
351 delete iterator->second;
357 #endif // _cmnNamedMap_h
cmnNamedMap(const std::string &mapName, const cmnGenericObject &owner, bool takesOwnership=false)
Definition: cmnNamedMap.h:131
#define CMN_LOG_LEVEL_RUN_ERROR
Definition: cmnLogLoD.h:62
void(_elementType::* VoidMethodPointer)(void)
Definition: cmnNamedMap.h:175
const MapType & GetMap(void) const
Definition: cmnNamedMap.h:182
void ForEachVoid(VoidMethodPointer method)
Definition: cmnNamedMap.h:316
bool RemoveItem(const std::string &name, cmnLogLevel lod=CMN_LOG_LEVEL_RUN_ERROR)
Definition: cmnNamedMap.h:273
size_t size_type
Definition: vctContainerTraits.h:35
MapType::const_reverse_iterator const_reverse_iterator
Definition: cmnNamedMap.h:63
cmnLogger::StreamBufType * GetLogMultiplexer(void) const
Definition: cmnNamedMap.h:94
Base class for high level objects.
Definition: cmnGenericObject.h:51
virtual const cmnClassServicesBase * Services(void) const =0
const cmnClassServicesBase * Services(void) const
Definition: cmnNamedMap.h:90
cmnNamedMap(const char *mapName, bool takesOwnership=false)
Definition: cmnNamedMap.h:112
bool empty(void) const
Definition: cmnNamedMap.h:204
short cmnLogLevel
Definition: cmnLogLoD.h:55
iterator begin(void)
Definition: cmnNamedMap.h:212
_elementType element_type
Definition: cmnNamedMap.h:66
std::string MapName
Definition: cmnNamedMap.h:79
Definition: cmnNamedMap.h:54
const_iterator end(void) const
Definition: cmnNamedMap.h:224
Declaration of cmnLogger amd macros for human readable logging.
std::map< std::string, _elementType * > MapType
Definition: cmnNamedMap.h:58
bool TakesOwnership
Definition: cmnNamedMap.h:76
void clear(void)
Definition: cmnNamedMap.h:208
bool AddItem(const std::string &name, _elementType *item, cmnLogLevel lod=CMN_LOG_LEVEL_RUN_ERROR)
Definition: cmnNamedMap.h:232
MapType Map
Definition: cmnNamedMap.h:70
const cmnClassServicesBase * OwnerServices
Definition: cmnNamedMap.h:85
MapType::size_type size_type
Definition: cmnNamedMap.h:65
#define CMN_LOG(lod)
Definition: cmnLogger.h:150
Defines cmnGenericObject.
size_type size(void) const
Definition: cmnNamedMap.h:200
const_iterator begin(void) const
Definition: cmnNamedMap.h:216
MapType::const_iterator const_iterator
Definition: cmnNamedMap.h:61
cmnNamedMap(const std::string &mapName, bool takesOwnership=false)
Definition: cmnNamedMap.h:119
static StreamBufType * GetMultiplexer(void)
Definition: cmnLogger.h:413
_elementType * GetItem(const std::string &name, cmnLogLevel lod=CMN_LOG_LEVEL_RUN_DEBUG) const
Definition: cmnNamedMap.h:251
bool FindItem(const std::string &itemName) const
Definition: cmnNamedMap.h:266
MapType & GetMap(void)
Definition: cmnNamedMap.h:185
MapType::reverse_iterator reverse_iterator
Definition: cmnNamedMap.h:62
Base class for class services.
Definition: cmnClassServicesBase.h:45
cmnNamedMap(bool takesOwnership=false)
Definition: cmnNamedMap.h:102
#define CMN_LOG_LEVEL_RUN_DEBUG
Definition: cmnLogLoD.h:65
~cmnNamedMap()
Definition: cmnNamedMap.h:140
MapType::iterator iterator
Definition: cmnNamedMap.h:60
#define CMN_LOG_CLASS(lod)
Definition: cmnLogger.h:95
std::vector< std::string > GetNames(void) const
Definition: cmnNamedMap.h:308
iterator end(void)
Definition: cmnNamedMap.h:220
void ToStream(std::ostream &outputStream) const
Definition: cmnNamedMap.h:327
void SetOwner(const cmnGenericObject &owner)
Definition: cmnNamedMap.h:145
void DeleteAll(void)
Definition: cmnNamedMap.h:342