本文整理汇总了C++中ProfileNode::parent方法的典型用法代码示例。如果您正苦于以下问题:C++ ProfileNode::parent方法的具体用法?C++ ProfileNode::parent怎么用?C++ ProfileNode::parent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProfileNode
的用法示例。
在下文中一共展示了ProfileNode::parent方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: removeProfileEnd
// The console.profileEnd that stopped this ProfileGenerator will be the last child.
void ProfileGenerator::removeProfileEnd()
{
ProfileNode* currentNode = nullptr;
for (ProfileNode* next = m_rootNode.get(); next; next = next->lastChild())
currentNode = next;
if (currentNode->callIdentifier().functionName() != "profileEnd")
return;
ASSERT(currentNode->callIdentifier() == (currentNode->parent()->children()[currentNode->parent()->children().size() - 1])->callIdentifier());
currentNode->parent()->removeChild(currentNode);
}
示例2: removeProfileStart
// The console.ProfileGenerator that started this ProfileGenerator will be the first child.
void ProfileGenerator::removeProfileStart()
{
ProfileNode* currentNode = 0;
for (ProfileNode* next = m_head.get(); next; next = next->firstChild())
currentNode = next;
if (currentNode->callIdentifier().m_name != "profile")
return;
// Attribute the time of the node aobut to be removed to the self time of its parent
currentNode->parent()->setSelfTime(currentNode->parent()->selfTime() + currentNode->totalTime());
currentNode->parent()->removeChild(currentNode);
}
示例3: removeProfileEnd
// The console.profileEnd that stopped this ProfileGenerator will be the last child.
void ProfileGenerator::removeProfileEnd()
{
ProfileNode* currentNode = 0;
for (ProfileNode* next = m_head.get(); next; next = next->lastChild())
currentNode = next;
if (currentNode->callIdentifier().functionName() != "profileEnd")
return;
// Attribute the time of the node aobut to be removed to the self time of its parent
currentNode->parent()->setSelfTime(currentNode->parent()->selfTime() + currentNode->totalTime());
ASSERT(currentNode->callIdentifier() == (currentNode->parent()->children()[currentNode->parent()->children().size() - 1])->callIdentifier());
currentNode->parent()->removeChild(currentNode);
}
示例4: removeProfileStart
// The console.profile that started this ProfileGenerator will be the first child.
void ProfileGenerator::removeProfileStart()
{
ProfileNode* currentNode = nullptr;
for (ProfileNode* next = m_rootNode.get(); next; next = next->firstChild())
currentNode = next;
if (currentNode->callIdentifier().functionName() != "profile")
return;
currentNode->parent()->removeChild(currentNode);
}
示例5: focus
bool ProfileNode::focus(const CallIdentifier& callIdentifier)
{
if (!m_visible)
return false;
if (m_callIdentifier != callIdentifier) {
m_visible = false;
return true;
}
for (ProfileNode* currentParent = m_parent; currentParent; currentParent = currentParent->parent())
currentParent->setVisible(true);
return false;
}
示例6: traverseNextNodePreOrder
ProfileNode* ProfileNode::traverseNextNodePreOrder(bool processChildren) const
{
if (processChildren && m_children.size())
return m_children[0].get();
if (m_nextSibling)
return m_nextSibling;
ProfileNode* nextParent = m_parent;
if (!nextParent)
return 0;
ProfileNode* next;
for (next = m_parent->nextSibling(); !next; next = nextParent->nextSibling()) {
nextParent = nextParent->parent();
if (!nextParent)
return 0;
}
return next;
}
示例7: stopProfiling
void ProfileGenerator::stopProfiling()
{
for (ProfileNode* node = m_currentNode.get(); node != m_profile->rootNode(); node = node->parent())
endCallEntry(node);
if (m_foundConsoleStartParent) {
removeProfileStart();
removeProfileEnd();
}
ASSERT(m_currentNode);
// Set the current node to the parent, because we are in a call that
// will not get didExecute call.
m_currentNode = m_currentNode->parent();
}