 BuildConfig | Options (e.g. verbosity, parallelism) passed to a build |
 Builder | Builder wraps the build process: starting commands, updating status |
 BuildLog | Store a log of every command ran for every build |
 BuildStatus | Tracks the status of a build: completion fraction, printing updates |
 Cleaner | |
 CLParser | Visual Studio's cl.exe requires some massaging to work with Ninja; for example, it emits include information on stderr in a funny format when building with /showIncludes |
 CLWrapper | Wraps a synchronous execution of a CL subprocess |
 CommandRunner | CommandRunner is an interface that wraps running the build subcommands |
  FakeCommandRunner | Fake implementation of CommandRunner, useful for tests |
  RealCommandRunner | |
 DependencyScan | DependencyScan manages the process of scanning the files in a graph and updating the dirty/outputs_ready state of all the nodes and edges |
 DepfileParser | Parser for the dependency information emitted by gcc's -M flags |
 DepfileParserTest | |
 DepsLog::Deps | |
 DepsLog | As build commands run they can output extra dependency information (e.g |
 DiskInterface | Interface for accessing the disk |
  RealDiskInterface | Implementation of DiskInterface that actually hits the disk |
  VirtualFileSystem | An implementation of DiskInterface that uses an in-memory representation of disk state |
 Edge | An edge in the dependency graph; links between Nodes using Rules |
 VirtualFileSystem::Entry | An entry for a single in-memory file |
 Env | An interface for a scope for variable (e.g. "$foo") lookups |
  BindingEnv | An Env which contains a mapping of variables to values as well as a pointer to a parent scope |
  EdgeEnv | An Env for an Edge, providing $in and $out |
 EvalString | A tokenized string that contains variable references |
 ExternalStringHashMap< V > | A template for hash_maps keyed by a StringPiece whose string is owned externally (typically by the values) |
 ManifestParser::FileReader | |
  ParserTest | |
 GETOPT_LONG_OPTION_T | |
 GraphViz | Runs the process of creating GraphViz .dot file output |
 __gnu_cxx::hash< std::string > | |
 __gnu_cxx::hash< StringPiece > | |
 ImplicitDepLoader | ImplicitDepLoader loads implicit dependencies, as referenced via the "depfile" attribute in build files |
 IncludesNormalize | Utility functions for normalizing include paths on Windows |
 LaconicPrinter | A test result printer that's less wordy than gtest's default |
 Lexer | |
 LinePrinter | Prints lines of text, possibly overprinting previously printed lines if the terminal supports it |
 LineReader | |
 BuildLog::LogEntry | |
 ManifestParser | Parses .ninja files |
 Metric | The Metrics module is used for the debug mode that dumps timing stats of various actions |
 Metrics | The singleton that stores metrics and prints the report |
 Node | Information about a node in the dependency graph: the file, whether it's dirty, mtime, etc |
 Plan | Plan stores the state of a build plan: what we intend to build, which steps we're ready to execute |
 Pool | A pool for delayed edges |
 BuildStatus::RateInfo | |
 CommandRunner::Result | The result of waiting for a command |
 Rule | An invokable build command and associated metadata (description, etc.) |
 ScopedMetric | A scoped object for recording a metric across the body of a function |
 ScopedTempDir | |
 BuildStatus::SlidingRateInfo | |
 State | Global state (file status, loaded rules) for a single run |
 StateTestWithBuiltinRules | A base test fixture that includes a State object with a builtin "cat" rule |
  BuildTest | |
   BuildWithDepsLogTest | Tests of builds involving deps logs necessarily must span multiple builds |
   BuildWithLogTest | |
    BuildDryRun | |
  CleanTest | |
  GraphTest | |
  PlanTest | Fixture for tests involving Plan |
 Stopwatch | A simple stopwatch which returns the time in seconds since Restart() was called |
 StringPiece | StringPiece represents a slice of a string whose memory is managed externally |
 Subprocess | Subprocess wraps a single async subprocess |
 SubprocessSet | SubprocessSet runs a ppoll/pselect() loop around a set of Subprocesses |