本文整理汇总了C++中HeapVector::appendVector方法的典型用法代码示例。如果您正苦于以下问题:C++ HeapVector::appendVector方法的具体用法?C++ HeapVector::appendVector怎么用?C++ HeapVector::appendVector使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HeapVector
的用法示例。
在下文中一共展示了HeapVector::appendVector方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: tryToEnsureNoahsArkConditionQuickly
void HTMLFormattingElementList::tryToEnsureNoahsArkConditionQuickly(
HTMLStackItem* newItem,
HeapVector<Member<HTMLStackItem>>& remainingCandidates) {
ASSERT(remainingCandidates.isEmpty());
if (m_entries.size() < kNoahsArkCapacity)
return;
// Use a vector with inline capacity to avoid a malloc in the common case of a
// quickly ensuring the condition.
HeapVector<Member<HTMLStackItem>, 10> candidates;
size_t newItemAttributeCount = newItem->attributes().size();
for (size_t i = m_entries.size(); i;) {
--i;
Entry& entry = m_entries[i];
if (entry.isMarker())
break;
// Quickly reject obviously non-matching candidates.
HTMLStackItem* candidate = entry.stackItem();
if (newItem->localName() != candidate->localName() ||
newItem->namespaceURI() != candidate->namespaceURI())
continue;
if (candidate->attributes().size() != newItemAttributeCount)
continue;
candidates.append(candidate);
}
// There's room for the new element in the ark. There's no need to copy out
// the remainingCandidates.
if (candidates.size() < kNoahsArkCapacity)
return;
remainingCandidates.appendVector(candidates);
}
示例2: start
void InspectorResourceContentLoader::start() {
m_started = true;
HeapVector<Member<Document>> documents;
InspectedFrames* inspectedFrames = InspectedFrames::create(m_inspectedFrame);
for (LocalFrame* frame : *inspectedFrames) {
documents.append(frame->document());
documents.appendVector(InspectorPageAgent::importsForFrame(frame));
}
for (Document* document : documents) {
HashSet<String> urlsToFetch;
ResourceRequest resourceRequest;
HistoryItem* item =
document->frame() ? document->frame()->loader().currentItem() : nullptr;
if (item) {
resourceRequest = FrameLoader::resourceRequestFromHistoryItem(
item, WebCachePolicy::ReturnCacheDataDontLoad);
} else {
resourceRequest = document->url();
resourceRequest.setCachePolicy(WebCachePolicy::ReturnCacheDataDontLoad);
}
resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
if (!resourceRequest.url().getString().isEmpty()) {
urlsToFetch.add(resourceRequest.url().getString());
FetchRequest request(resourceRequest, FetchInitiatorTypeNames::internal);
Resource* resource = RawResource::fetch(request, document->fetcher());
if (resource) {
// Prevent garbage collection by holding a reference to this resource.
m_resources.append(resource);
ResourceClient* resourceClient = new ResourceClient(this);
m_pendingResourceClients.add(resourceClient);
resourceClient->waitForResource(resource);
}
}
HeapVector<Member<CSSStyleSheet>> styleSheets;
InspectorCSSAgent::collectAllDocumentStyleSheets(document, styleSheets);
for (CSSStyleSheet* styleSheet : styleSheets) {
if (styleSheet->isInline() || !styleSheet->contents()->loadCompleted())
continue;
String url = styleSheet->href();
if (url.isEmpty() || urlsToFetch.contains(url))
continue;
urlsToFetch.add(url);
FetchRequest request(ResourceRequest(url),
FetchInitiatorTypeNames::internal);
request.mutableResourceRequest().setRequestContext(
WebURLRequest::RequestContextInternal);
Resource* resource =
CSSStyleSheetResource::fetch(request, document->fetcher());
if (!resource)
continue;
// Prevent garbage collection by holding a reference to this resource.
m_resources.append(resource);
ResourceClient* resourceClient = new ResourceClient(this);
m_pendingResourceClients.add(resourceClient);
resourceClient->waitForResource(resource);
}
}
m_allRequestsStarted = true;
checkDone();
}