ompl::tools::SelfConfig::SelfConfig(const base::SpaceInformationPtr &si, const std::string &context) : context_(context.empty() ? "" : context + ": ") { typedef std::map<base::SpaceInformation*, boost::shared_ptr<SelfConfigImpl> > ConfigMap; static ConfigMap SMAP; static boost::mutex LOCK; boost::mutex::scoped_lock smLock(LOCK); // clean expired entries from the map ConfigMap::iterator dit = SMAP.begin(); while (dit != SMAP.end()) { if (dit->second->expired()) SMAP.erase(dit++); else ++dit; } ConfigMap::const_iterator it = SMAP.find(si.get()); if (it != SMAP.end()) impl_ = it->second.get(); else { impl_ = new SelfConfigImpl(si); SMAP[si.get()].reset(impl_); } }
ompl::tools::SelfConfig::SelfConfig(const base::SpaceInformationPtr &si, const std::string &context) : context_(context) { typedef std::map<base::SpaceInformation*, boost::shared_ptr<SelfConfigImpl> > ConfigMap; static ConfigMap SMAP; static boost::mutex LOCK; boost::mutex::scoped_lock smLock(LOCK); ConfigMap::const_iterator it = SMAP.find(si.get()); if (it != SMAP.end()) impl_ = it->second.get(); else { impl_ = new SelfConfigImpl(si); SMAP[si.get()].reset(impl_); } }