Node* HTMLAllCollection::namedItemWithIndex(const AtomicString& name, unsigned index) const { updateNameCache(); if (Vector<Element*>* cache = idCache(name)) { if (index < cache->size()) return cache->at(index); index -= cache->size(); } if (Vector<Element*>* cache = nameCache(name)) { if (index < cache->size()) return cache->at(index); } return 0; }
Node* HTMLAllCollection::namedItemWithIndex(const AtomicString& name, unsigned index) const { invalidateCacheIfNeeded(); updateNameCache(); if (Vector<Element*>* idCache = m_cache.idCache.get(name.impl())) { if (index < idCache->size()) return idCache->at(index); index -= idCache->size(); } if (Vector<Element*>* nameCache = m_cache.nameCache.get(name.impl())) { if (index < nameCache->size()) return nameCache->at(index); } return 0; }
void HTMLCollection::namedItems(const AtomicString& name, Vector<RefPtr<Node> >& result) const { ASSERT(result.isEmpty()); if (name.isEmpty()) return; resetCollectionInfo(); updateNameCache(); m_info->checkConsistency(); Vector<Element*>* idResults = m_info->idCache.get(name.impl()); Vector<Element*>* nameResults = m_info->nameCache.get(name.impl()); for (unsigned i = 0; idResults && i < idResults->size(); ++i) result.append(idResults->at(i)); for (unsigned i = 0; nameResults && i < nameResults->size(); ++i) result.append(nameResults->at(i)); }