Ninja
Public Member Functions | Private Member Functions | Private Attributes
ImplicitDepLoader Struct Reference

ImplicitDepLoader loads implicit dependencies, as referenced via the "depfile" attribute in build files. More...

#include <graph.h>

List of all members.

Public Member Functions

DepsLogdeps_log () const
 ImplicitDepLoader (State *state, DepsLog *deps_log, DiskInterface *disk_interface)
bool LoadDeps (Edge *edge, TimeStamp *mtime, string *err)
 Load implicit dependencies for edge.

Private Member Functions

void CreatePhonyInEdge (Node *node)
 If we don't have a edge that generates this input already, create one; this makes us not abort if the input is missing, but instead will rebuild in that circumstance.
bool LoadDepFile (Edge *edge, const string &path, string *err)
 Load implicit dependencies for edge from a depfile attribute.
bool LoadDepsFromLog (Edge *edge, TimeStamp *mtime, string *err)
 Load implicit dependencies for edge from the DepsLog.
vector< Node * >::iterator PreallocateSpace (Edge *edge, int count)
 Preallocate count spaces in the input array on edge, returning an iterator pointing at the first new space.

Private Attributes

DepsLogdeps_log_
DiskInterfacedisk_interface_
Statestate_

Detailed Description

ImplicitDepLoader loads implicit dependencies, as referenced via the "depfile" attribute in build files.

Definition at line 190 of file graph.h.


Constructor & Destructor Documentation

ImplicitDepLoader::ImplicitDepLoader ( State state,
DepsLog deps_log,
DiskInterface disk_interface 
) [inline]

Definition at line 191 of file graph.h.


Member Function Documentation

void ImplicitDepLoader::CreatePhonyInEdge ( Node node) [private]

If we don't have a edge that generates this input already, create one; this makes us not abort if the input is missing, but instead will rebuild in that circumstance.

Definition at line 435 of file graph.cc.

References State::AddEdge(), Node::in_edge(), State::kPhonyRule, Edge::outputs_, Edge::outputs_ready_, Node::set_in_edge(), and state_.

Referenced by LoadDepFile(), and LoadDepsFromLog().

DepsLog* ImplicitDepLoader::deps_log ( ) const [inline]

Definition at line 200 of file graph.h.

bool ImplicitDepLoader::LoadDepFile ( Edge edge,
const string &  path,
string *  err 
) [private]

Load implicit dependencies for edge from a depfile attribute.

Returns:
false on error (without filling err if info is just missing).

Definition at line 362 of file graph.cc.

References Node::AddOutEdge(), StringPiece::AsString(), CanonicalizePath(), CreatePhonyInEdge(), disk_interface_, State::GetNode(), DepfileParser::ins_, METRIC_RECORD, DepfileParser::out_, Edge::outputs_, DepfileParser::Parse(), Node::path(), PreallocateSpace(), DiskInterface::ReadFile(), and state_.

Referenced by LoadDeps().

bool ImplicitDepLoader::LoadDeps ( Edge edge,
TimeStamp mtime,
string *  err 
)

Load implicit dependencies for edge.

May fill in mtime with the timestamp of the loaded information.

Returns:
false on error (without filling err if info is just missing).

Definition at line 335 of file graph.cc.

References EXPLAIN, Edge::GetBinding(), LoadDepFile(), LoadDepsFromLog(), and Edge::outputs_.

Referenced by DependencyScan::RecomputeDirty().

bool ImplicitDepLoader::LoadDepsFromLog ( Edge edge,
TimeStamp mtime,
string *  err 
) [private]

Load implicit dependencies for edge from the DepsLog.

Returns:
false on error (without filling err if info is just missing).

Definition at line 409 of file graph.cc.

References Node::AddOutEdge(), CreatePhonyInEdge(), deps_log_, DepsLog::GetDeps(), DepsLog::Deps::mtime, DepsLog::Deps::node_count, DepsLog::Deps::nodes, Edge::outputs_, and PreallocateSpace().

Referenced by LoadDeps().

vector< Node * >::iterator ImplicitDepLoader::PreallocateSpace ( Edge edge,
int  count 
) [private]

Preallocate count spaces in the input array on edge, returning an iterator pointing at the first new space.

Definition at line 427 of file graph.cc.

References Edge::implicit_deps_, Edge::inputs_, and Edge::order_only_deps_.

Referenced by LoadDepFile(), and LoadDepsFromLog().


Member Data Documentation

Definition at line 224 of file graph.h.

Referenced by LoadDepsFromLog().

Definition at line 223 of file graph.h.

Referenced by LoadDepFile().

Definition at line 222 of file graph.h.

Referenced by CreatePhonyInEdge(), and LoadDepFile().


The documentation for this struct was generated from the following files: