15 #ifndef NINJA_MISSING_DEPS_H_ 16 #define NINJA_MISSING_DEPS_H_ 22 #if __cplusplus >= 201103L 23 #include <unordered_map> 37 const Rule& generator) = 0;
42 void OnStats(
int nodes_processed,
int nodes_missing_deps,
43 int missing_dep_path_count,
int generated_nodes,
71 #if __cplusplus >= 201103L 73 using AdjacencyMap = std::unordered_map<Edge*, InnerAdjacencyMap>;
81 #endif // NINJA_MISSING_DEPS_H_
void OnMissingDep(Node *node, const std::string &path, const Rule &generator)
void ProcessNodeDeps(Node *node, Node **dep_nodes, int dep_nodes_count)
virtual void OnMissingDep(Node *node, const std::string &path, const Rule &generator)=0
std::set< Node * > nodes_missing_deps_
MissingDependencyScanner(MissingDependencyScannerDelegate *delegate, DepsLog *deps_log, State *state, DiskInterface *disk_interface)
Information about a node in the dependency graph: the file, whether it's dirty, mtime, etc.
Interface for accessing the disk.
An edge in the dependency graph; links between Nodes using Rules.
virtual ~MissingDependencyScannerDelegate()
As build commands run they can output extra dependency information (e.g.
AdjacencyMap adjacency_map_
void ProcessNode(Node *node)
std::set< Node * > generated_nodes_
An invocable build command and associated metadata (description, etc.).
std::map< Edge *, bool > InnerAdjacencyMap
void OnStats(int nodes_processed, int nodes_missing_deps, int missing_dep_path_count, int generated_nodes, int generator_rules)
std::map< Edge *, InnerAdjacencyMap > AdjacencyMap
std::set< const Rule * > generator_rules_
DiskInterface * disk_interface_
Global state (file status) for a single run.
bool PathExistsBetween(Edge *from, Edge *to)
int missing_dep_path_count_
MissingDependencyScannerDelegate * delegate_