本文整理汇总了C++中WillBeHeapVector::rend方法的典型用法代码示例。如果您正苦于以下问题:C++ WillBeHeapVector::rend方法的具体用法?C++ WillBeHeapVector::rend怎么用?C++ WillBeHeapVector::rend使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WillBeHeapVector
的用法示例。
在下文中一共展示了WillBeHeapVector::rend方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: resolveAssignment
void SlotAssignment::resolveAssignment(const ShadowRoot& shadowRoot)
{
m_assignment.clear();
using Name2Slot = WillBeHeapHashMap<AtomicString, RefPtrWillBeMember<HTMLSlotElement>>;
Name2Slot name2slot;
HTMLSlotElement* defaultSlot = nullptr;
WillBeHeapVector<RefPtrWillBeMember<HTMLSlotElement>> slots;
// TODO(hayato): Cache slots elements so that we do not have to travese the shadow tree. See ShadowRoot::descendantInsertionPoints()
for (HTMLSlotElement& slot : Traversal<HTMLSlotElement>::descendantsOf(shadowRoot)) {
slot.clearDistribution();
slots.append(&slot);
AtomicString name = slot.fastGetAttribute(HTMLNames::nameAttr);
if (name.isNull() || name.isEmpty()) {
if (!defaultSlot)
defaultSlot = &slot;
} else {
name2slot.add(name, &slot);
}
}
for (Node& child : NodeTraversal::childrenOf(*shadowRoot.host())) {
if (child.isElementNode()) {
if (isActiveInsertionPoint(child)) {
// TODO(hayato): Support re-distribution across v0 and v1 shadow trees
detachNotAssignedNode(child);
continue;
}
AtomicString slotName = toElement(child).fastGetAttribute(HTMLNames::slotAttr);
if (slotName.isNull() || slotName.isEmpty()) {
if (defaultSlot)
assign(child, *defaultSlot);
else
detachNotAssignedNode(child);
} else {
HTMLSlotElement* slot = name2slot.get(slotName);
if (slot)
assign(child, *slot);
else
detachNotAssignedNode(child);
}
} else if (defaultSlot) {
assign(child, *defaultSlot);
} else {
detachNotAssignedNode(child);
}
}
// Update each slot's distribution in reverse tree order so that a child slot is visited before its parent slot.
for (auto slot = slots.rbegin(); slot != slots.rend(); ++slot)
(*slot)->updateDistributedNodesWithFallback();
}