typedef std::pair<unsigned,T*> PtrValue;
typedef stlplus::hash<std::string,PtrValue,getHash> PtrMap;
- static PtrMap ptrs_;
- std::string name_;
+ static PtrMap mPtrMap;
+ std::string mName;
static T* retain(const std::string& name)
{
- typename PtrMap::iterator it = ptrs_.find(name);
+ typename PtrMap::iterator it = mPtrMap.find(name);
- if (it != ptrs_.end())
+ if (it != mPtrMap.end())
{
++((*it).second.first);
return (*it).second.second;
else
{
T* newObj = new T(name);
- ptrs_.insert(std::make_pair(name, std::make_pair(1, newObj)));
+ mPtrMap.insert(std::make_pair(name, std::make_pair(1, newObj)));
return newObj;
}
}
static void release(T* obj)
{
- releaseByName(obj->name_);
+ releaseByName(obj->mName);
}
static void releaseByName(const std::string& name)
{
typename PtrMap::iterator it;
- if ((it = ptrs_.find(name)) != ptrs_.end() && --(*it).second.first == 0)
+ if ((it = mPtrMap.find(name)) != mPtrMap.end() && --(*it).second.first == 0)
{
delete (*it).second.second;
- ptrs_.erase((*it).first);
+ mPtrMap.erase((*it).first);
}
}
public:
explicit Mippleton(const std::string& name) :
- name_(name) {}
+ mName(name) {}
const std::string& getName() const
{
- return name_;
+ return mName;
}
static boost::shared_ptr<T> getInstance(const std::string& name)
template <class T>
stlplus::hash< std::string,std::pair<unsigned,T*>,getHash >
- Mippleton<T>::ptrs_;
+ Mippleton<T>::mPtrMap;
} // namespace Mf