6 void Progress_Bar::print_progress() noexcept
13 const auto now = std::chrono::steady_clock::now();
14 std::chrono::duration<double> duration_since_last = now - last_print_time;
15 if (done == total || duration_since_last.count() >= gap)
17 std::chrono::duration<double> duration_since_start = now - start;
18 last_print_time = now;
20 const auto done_string = std::to_string(done);
21 const auto total_string = std::to_string(total);
22 const auto padding = std::string(total_string.size() - done_string.size(),
' ');
23 const int permil = int((1000.0 *
double(done)) /
double(total));
29 padding + done_string +
" / " + total_string +
" " +
30 std::to_string(permil / 10) +
"." + std::to_string(permil % 10) +
31 "% in " + std::to_string(duration_since_start.count()) +
"s"
58 start(std::chrono::steady_clock::now()),
59 last_print_time(start)
virtual void log(const std::string &message) noexcept
void print(int64_t current)
Progress_Bar(int64_t total, Logger &logger)