ImageDataCache::Ptr ImageDataCachePrivate::lookup(ImageDataMetadata::Ptr metadata) { if (cache.contains(metadata)) { WeakPtr weakPtr = cache[metadata]; ImageDataCache::Ptr ptr = weakPtr.toStrongRef(); if (ptr.isNull()) { cache.remove(metadata); } else { return ptr; } } ImageDataCache::Ptr ptr(new ImageDataCache::CacheEntry()); cache.insert(metadata, ptr.toWeakRef()); return ptr; }
const SymbolPath SymbolNode::getSymPath() const { SymbolPath path; const SymbolNode* curNode = this; for (WeakPtr wpParent = m_parent; !wpParent.isNull();) { Ptr pParent = wpParent.toStrongRef(); for (ConstChildIterator pChild = pParent->childConstBegin(); pChild != pParent->childConstEnd(); ++pChild) { if (pChild.value().data() == curNode) { path.addParentSymbol(pChild.key()); break; } } wpParent = pParent->m_parent; } return path; }