void getNames(_InsertIterator inserter) const { if (_instance == NULL) return; if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); if (_instance == NULL) return; typename StringTypeMap::const_iterator iter = _instance->begin(); for(; iter != _instance->end(); ++iter, ++inserter) inserter = iter->first; }
void forEachValue(_Predicate predicate) const { if (_instance == NULL) return; if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); if (_instance == NULL) return; typename StringTypeMap::const_iterator iter = _instance->begin(); for(; iter != _instance->end(); ++iter) predicate(*(iter->second)); }
inline Event::type_t CommandMap::to_type_t (std::string tp) { StringTypeMap::iterator result = _str_type_map.find(tp); if (result == _str_type_map.end()) { return Event::type_cmd_hit; // arbitrary } return (*result).second; }
_Type* find(std::string const& key) const { _Type * result = NULL; if (_instance == NULL) return result; if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); if (_instance == NULL) return result; typename StringTypeMap::const_iterator iter= _instance->find(key); if (iter != _instance->end()) result = iter->second; return result; }
void insert(std::pair<std::string, _Type*>&& item) { createCache(); if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); _instance->insert(std::move(item)); }
void cleanCache(void) { if (_instance == NULL) return; if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); if (_instance == NULL) return; #if defined(_DEBUG) || defined(DEBUG) std::cout << "Clean instance map of " << _Name <<" - Number object: " << _instance->size() << std::endl; #endif StringTypeMap * instance = _instance; _instance = NULL; typename StringTypeMap::iterator result = instance->begin(); for(; result != instance->end(); ++result) delete result->second; instance->clear(); delete instance; }
void insert(std::string const& key, _Type* const& value) { createCache(); std::pair<std::string, _Type*> item(key, value); if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); _instance->insert(item); }
void insert(std::string&& key, _Type*&& value) { createCache(); std::pair<std::string, _Type*> item(std::move(key), std::move(value)); value = NULL; if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); _instance->insert(item); }
void insert(_Type* const& value) { createCache(); char buff[20] = { 0 }; sprintf(buff, "%lx", (unsigned long)value); std::pair<std::string, _Type*> item(buff, value); if (!_mutex) _mutex = new FastMutex(); FastMutex::ScopedLock _(*_mutex); _instance->insert(item); }