Exemple #1
0
/** A node to be added to the tree must not belong to any tree (including this one). */
void
Tree::add (Tree::Node* n)
  throw (Tree::DuplicateNode, Tree::NodeInUse, Tree::EmptyNode)
{
  if (n == 0)
    throw EmptyNode();
  if (node_set.find(n) != node_set.end())
    throw DuplicateNode(n);
  if (n->in_use)
    throw NodeInUse(n);
  if (root_node == 0)
    root_node = n;
  n->in_use = true;
  node_set.insert(n);
  preorder_needed = postorder_needed = rpostorder_needed = true;
}
Exemple #2
0
/*! A node to be added to the tree must not belong to any tree (including this one). */
void
Tree::addNode(OA_ptr<Tree::Node>  n)
  throw (Tree::DuplicateNode, Tree::NodeInUse, Tree::EmptyNode)
{
  if (n.ptrEqual(0)) {
    throw EmptyNode();
  }
  if (node_set->find(n) != node_set->end()) {
    throw DuplicateNode(n);
  }
  if (n->in_use) {
    throw NodeInUse(n);
  }
  if (root_node.ptrEqual(0)) {
    root_node = n;
  }
  n->in_use = true;
  node_set->insert(n);
  preorder_needed = postorder_needed = rpostorder_needed = true;
}