Lines Matching refs: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);
291 node = reinterpret_cast<Graph::Node *>(bb.pop().u.p);
292 assert(node);
293 if (!node->visit(sequence))
295 node->tag = 0;
297 for (Graph::EdgeIterator ei = node->outgoing(); !ei.end(); ei.next()) {
316 nodes[count++] = node;
344 Node *node = reinterpret_cast<Node *>(it->get());
345 node->visit(0);
346 node->tag = 0;
357 Graph::Node *node;
363 node = edge->target;
367 if (node->getSequence() == 0) {
369 classifyDFS(node, seq);
371 if (node->getSequence() > curr->getSequence()) {
374 edge->type = node->tag ? Edge::BACK : Edge::CROSS;
379 node = edge->origin;
383 if (node->getSequence() == 0) {
385 classifyDFS(node, seq);
387 if (node->getSequence() > curr->getSequence()) {
390 edge->type = node->tag ? Edge::BACK : Edge::CROSS;