Permalink
Browse files

remove some code duplication

  • Loading branch information...
1 parent d95fcb0 commit de6ec48d80879ce9279b3e13c24787e9054d942f @syntheticpp syntheticpp committed Sep 18, 2012
Showing with 15 additions and 18 deletions.
  1. +3 −2 src/build.cc
  2. +12 −16 src/build.h
View
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <stdlib.h>
+
#ifdef _WIN32
#include <windows.h>
#else
@@ -180,14 +181,14 @@ string BuildStatus::FormatProgressStatus(
// Overall finished edges per second.
case 'o':
overall_rate_.UpdateRate(finished_edges_);
- overall_rate_.snprinfRate(buf, "%.1f");
+ snprinfRate(overall_rate_.rate(), buf, "%.1f");
out += buf;
break;
// Current rate, average over the last '-j' jobs.
case 'c':
current_rate_.UpdateRate(finished_edges_);
- current_rate_.snprinfRate(buf, "%.1f");
+ snprinfRate(current_rate_.rate(), buf, "%.1f");
out += buf;
break;
View
@@ -200,31 +200,33 @@ struct BuildStatus {
/// The custom progress status format to use.
const char* progress_status_format_;
+ template<class T>
+ void snprinfRate(double rate, T buf, const char* format) const {
+ if (rate == -1) snprintf(buf, sizeof(buf), "?");
+ else snprintf(buf, sizeof(buf), format, rate);
+ }
+
struct RateInfo {
RateInfo() : rate_(-1) {}
void Restart() { stopwatch_.Restart(); }
+ double rate() { return rate_; }
void UpdateRate(int edges) {
if (edges && stopwatch_.Elapsed())
rate_ = edges / stopwatch_.Elapsed();
}
- template<class T>
- void snprinfRate(T buf, const char* format) {
- if (rate_ == -1) snprintf(buf, sizeof(buf), "?");
- else snprintf(buf, sizeof(buf), format, rate_);
- }
-
private:
- Stopwatch stopwatch_;
double rate_;
+ Stopwatch stopwatch_;
};
struct SlidingRateInfo {
- SlidingRateInfo(int n) : N(n), last_update_(-1), rate_(-1) {}
+ SlidingRateInfo(int n) : rate_(-1), N(n), last_update_(-1) {}
void Restart() { stopwatch_.Restart(); }
+ double rate() { return rate_; }
void UpdateRate(int update_hint) {
if (update_hint == last_update_)
@@ -238,18 +240,12 @@ struct BuildStatus {
rate_ = times_.size() / (times_.back() - times_.front());
}
- template<class T>
- void snprinfRate(T buf, const char* format) {
- if (rate_ == -1) snprintf(buf, sizeof(buf), "?");
- else snprintf(buf, sizeof(buf), format, rate_);
- }
-
private:
+ double rate_;
+ Stopwatch stopwatch_;
const size_t N;
std::queue<double> times_;
- Stopwatch stopwatch_;
int last_update_;
- double rate_;
};
mutable RateInfo overall_rate_;

0 comments on commit de6ec48

Please sign in to comment.