当前位置: 首页>>代码示例>>C++>>正文


C++ HeapVector::appendVector方法代码示例

本文整理汇总了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);
}
开发者ID:,项目名称:,代码行数:38,代码来源:

示例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();
}
开发者ID:mirror,项目名称:chromium,代码行数:64,代码来源:InspectorResourceContentLoader.cpp


注:本文中的HeapVector::appendVector方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。