void Profile::focus(const ProfileNode* profileNode) { if (!profileNode || !m_head) return; bool processChildren; const CallIdentifier& callIdentifier = profileNode->callIdentifier(); for (ProfileNode* currentNode = m_head.get(); currentNode; currentNode = currentNode->traverseNextNodePreOrder(processChildren)) processChildren = currentNode->focus(callIdentifier); // Set the visible time of all nodes so that the %s display correctly. forEach(&ProfileNode::calculateVisibleTotalTime); }
void ProfileNode::setTreeVisible(ProfileNode* node, bool visible) { ProfileNode* nodeParent = node->parent(); ProfileNode* nodeSibling = node->nextSibling(); node->setParent(0); node->setNextSibling(0); for (ProfileNode* currentNode = node; currentNode; currentNode = currentNode->traverseNextNodePreOrder()) currentNode->setVisible(visible); node->setParent(nodeParent); node->setNextSibling(nodeSibling); }
void Profile::exclude(const ProfileNode* profileNode) { if (!profileNode || !m_head) return; const CallIdentifier& callIdentifier = profileNode->callIdentifier(); for (ProfileNode* currentNode = m_head.get(); currentNode; currentNode = currentNode->traverseNextNodePreOrder()) currentNode->exclude(callIdentifier); // Set the visible time of the head so the %s display correctly. m_head->setVisibleTotalTime(m_head->totalTime() - m_head->selfTime()); m_head->setVisibleSelfTime(0.0); }