Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
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));
}