Lines Matching defs:node

44 void Graph::insert(Node *node)
47 root = node;
49 node->graph = this;
95 void Graph::Node::attach(Node *node, Edge::Type kind)
97 Edge *edge = new Edge(this, node, kind);
108 if (node->in) {
109 edge->next[1] = node->in;
110 edge->prev[1] = node->in->prev[1];
112 node->in->prev[1] = edge;
114 node->in = edge;
117 ++node->inCount;
119 assert(graph || node->graph);
120 if (!node->graph)
121 graph->insert(node);
123 node->graph->insert(this);
129 bool Graph::Node::detach(Graph::Node *node)
133 if (ei.getNode() == node)
136 ERROR("no such node attached\n");
143 // Cut a node from the graph, deleting all attached edges.
169 Graph::Node::reachableBy(const Node *node, const Node *term) const
175 stack.push(node);
220 void search(Graph::Node *node, const bool preorder, const int sequence)
223 nodes[count++] = node;
225 for (Graph::EdgeIterator ei = node->outgoing(); !ei.end(); ei.next())
230 nodes[count++] = node;
284 void search(Graph::Node *node, const int sequence)
288 bb.push(node);
294 node = reinterpret_cast<Graph::Node *>(bb.pop().u.p);
295 assert(node);
296 if (!node->visit(sequence))
298 node->tag = 0;
300 for (Graph::EdgeIterator ei = node->outgoing(); !ei.end(); ei.next()) {
318 nodes[count++] = node;
343 * - FORWARD: edges from a node to a descendent in the spanning tree
344 * - BACK: edges from a node to a parent (or itself) in the spanning tree
353 Node *node = reinterpret_cast<Node *>(it->get());
354 node->visit(0);
355 node->tag = 0;
366 Graph::Node *node;
372 node = edge->target;
374 if (node->getSequence() == 0) {
376 classifyDFS(node, seq);
378 if (node->getSequence() > curr->getSequence()) {
381 edge->type = node->tag ? Edge::BACK : Edge::CROSS;
386 node = edge->origin;
388 if (node->getSequence() == 0) {
390 classifyDFS(node, seq);
392 if (node->getSequence() > curr->getSequence()) {
395 edge->type = node->tag ? Edge::BACK : Edge::CROSS;