Esempio n. 1
0
void copyTree(VisualNode* node_t, NodeTree& tree_t,
              const VisualNode* node_s, const NodeTree& tree_s) {

  auto& na_t = tree_t.getNA();
  const auto& na_s = tree_s.getNA();

  stack<VisualNode*> stk_t;
  stack<const VisualNode*> stk_s;

  stk_s.push(node_s);
  stk_t.push(node_t);

  while (stk_s.size() > 0) {

      const VisualNode* n = stk_s.top(); stk_s.pop();
      VisualNode*    next = stk_t.top(); stk_t.pop();

      auto kids = n->getNumberOfChildren();
      next->setNumberOfChildren(kids, na_t);

      next->setStatus(n->getStatus());
      next->dirtyUp(na_t);

      for (auto i = 0u; i < kids; ++i) {
          stk_s.push(n->getChild(na_s, i));
          stk_t.push(next->getChild(na_t, i));
      }
  }

}
 forceinline void
 UnstopAllCursor::processCurrentNode(void) {
   VisualNode* n = node();
   if (n->getStatus() == STOP) {
     n->setStop(false);
     n->dirtyUp(na);
   }
 }
 forceinline void
 UnhideAllCursor::processCurrentNode(void) {
   VisualNode* n = node();
   if (n->isHidden()) {
     n->setHidden(false);
     n->dirtyUp(na);
   }
 }
 forceinline void
 HideFailedCursor::processCurrentNode(void) {
   VisualNode* n = node();
   if (n->getStatus() == BRANCH &&
       !n->hasSolvedChildren() &&
       n->getNoOfOpenChildren(na) == 0) {
     n->setHidden(true);
     n->setChildrenLayoutDone(false);
     n->dirtyUp(na);
   }
 }