25 printf(
"\"%p\" [label=\"%s\"]\n", node, node->
path().c_str());
44 printf(
"\"%p\" -> \"%p\" [label=\" %s\"]\n",
47 printf(
"\"%p\" [label=\"%s\", shape=ellipse]\n",
49 for (vector<Node*>::iterator out = edge->
outputs_.begin();
50 out != edge->
outputs_.end(); ++out) {
51 printf(
"\"%p\" -> \"%p\"\n", edge, *out);
53 for (vector<Node*>::iterator in = edge->
inputs_.begin();
54 in != edge->
inputs_.end(); ++in) {
55 const char* order_only =
"";
57 order_only =
" style=dotted";
58 printf(
"\"%p\" -> \"%p\" [arrowhead=none%s]\n", (*in), edge, order_only);
62 for (vector<Node*>::iterator in = edge->
inputs_.begin();
63 in != edge->
inputs_.end(); ++in) {
69 printf(
"digraph ninja {\n");
70 printf(
"rankdir=\"LR\"\n");
71 printf(
"node [fontsize=10, shape=box, height=0.25]\n");
72 printf(
"edge [fontsize=10]\n");
Information about a node in the dependency graph: the file, whether it's dirty, mtime, etc.
set< Node * > visited_nodes_
An edge in the dependency graph; links between Nodes using Rules.
bool is_order_only(size_t index)
const string & path() const
const string & name() const
void AddTarget(Node *node)
set< Edge * > visited_edges_
vector< Node * > outputs_