From bad6337f7cd39c557c392b19f8ac89e8ce190e2a Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Mon, 13 Dec 2010 12:16:55 -0800 Subject: [PATCH] use separate config object --- src/build.cc | 17 ++++++----------- src/build.h | 12 ++++++++---- src/build_test.cc | 4 +++- src/ninja.cc | 11 +++++------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/build.cc b/src/build.cc index 0666f8e..c160dc3 100644 --- a/src/build.cc +++ b/src/build.cc @@ -235,20 +235,15 @@ struct DryRunCommandRunner : public CommandRunner { queue finished_; }; -Builder::Builder(State* state) +Builder::Builder(State* state, const BuildConfig& config) : state_(state) { disk_interface_ = new RealDiskInterface; - command_runner_ = new RealCommandRunner; - log_ = new BuildStatusLog; -} - -void Builder::SetVerbose(bool verbose) { - log_->verbose_ = verbose; -} - -void Builder::SetDryRun(bool on) { - if (on) + if (config.dry_run) command_runner_ = new DryRunCommandRunner; + else + command_runner_ = new RealCommandRunner; + log_ = new BuildStatusLog; + log_->verbose_ = config.verbose; } Node* Builder::AddTarget(const string& name, string* err) { diff --git a/src/build.h b/src/build.h index caadb85..b79ffae 100644 --- a/src/build.h +++ b/src/build.h @@ -57,11 +57,15 @@ struct CommandRunner { virtual Edge* NextFinishedCommand(bool* success) = 0; }; -struct Builder { - Builder(State* state); +struct BuildConfig { + BuildConfig() : verbose(false), dry_run(false) {} + + bool verbose; + bool dry_run; +}; - void SetVerbose(bool verbose); - void SetDryRun(bool on); +struct Builder { + Builder(State* state, const BuildConfig& config); Node* AddTarget(const string& name, string* err); bool Build(string* err); diff --git a/src/build_test.cc b/src/build_test.cc index 2ded588..b8f1887 100644 --- a/src/build_test.cc +++ b/src/build_test.cc @@ -160,7 +160,8 @@ TEST_F(PlanTest, DependencyCycle) { struct BuildTest : public StateTestWithBuiltinRules, public CommandRunner, public DiskInterface { - BuildTest() : builder_(&state_), now_(1), last_command_(NULL) { + BuildTest() : config_(), builder_(&state_, config_), now_(1), + last_command_(NULL) { builder_.disk_interface_ = this; builder_.command_runner_ = this; AssertParse(&state_, @@ -196,6 +197,7 @@ struct BuildTest : public StateTestWithBuiltinRules, return ""; } + BuildConfig config_; Builder builder_; int now_; map file_contents_; diff --git a/src/ninja.cc b/src/ninja.cc index 0b2af68..3c09bcd 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -32,10 +32,11 @@ struct RealFileReader : public ManifestParser::FileReader { }; int main(int argc, char** argv) { + BuildConfig config; const char* input_file = "build.ninja"; + bool graph = false; int opt; - bool dry_run = false, graph = false, verbose = false; while ((opt = getopt_long(argc, argv, "ghi:nv", options, NULL)) != -1) { switch (opt) { case 'g': @@ -45,10 +46,10 @@ int main(int argc, char** argv) { input_file = optarg; break; case 'n': - dry_run = true; + config.dry_run = true; break; case 'v': - verbose = true; + config.verbose = true; break; case 'h': default: @@ -89,9 +90,7 @@ int main(int argc, char** argv) { return 0; } - Builder builder(&state); - builder.SetVerbose(verbose); - builder.SetDryRun(dry_run); + Builder builder(&state, config); for (int i = 0; i < argc; ++i) { if (!builder.AddTarget(argv[i], &err)) { if (!err.empty()) { -- 2.7.4