예제 #1
0
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;
}
예제 #2
0
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;
}