cepgen is hosted by Hepforge, IPPP Durham
CepGen N/A
Central exclusive processes event generator
ProgressBar.h
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2019-2025 Laurent Forthomme
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef CepGen_Utils_ProgressBar_h
20#define CepGen_Utils_ProgressBar_h
21
22#include <memory>
23#include <string>
24
25namespace cepgen::utils {
26 class Timer;
29 public:
33 explicit ProgressBar(size_t total, size_t period = 10);
35
36 void reset();
37 inline void setTimer(bool timer_enabled = true) { timer_enabled_ = timer_enabled; }
40 void update(size_t iter) const;
41
42 private:
43 const std::unique_ptr<Timer> timer_;
44 const size_t total_;
45 const size_t period_;
46 const size_t bar_length_;
47 const std::string bar_pattern_;
48 const bool enabled_;
49
50 const size_t extra_bar_length_{40};
51
52 bool timer_enabled_{false};
53 mutable bool ended_{false};
54 };
55} // namespace cepgen::utils
56
57#endif
A simple progress indicator.
Definition ProgressBar.h:28
void update(size_t iter) const
void setTimer(bool timer_enabled=true)
Enable the timer? Broadcast the current progress to the bar.
Definition ProgressBar.h:37
ProgressBar(size_t total, size_t period=10)
Progress bar constructor.
void reset()
Reset the progress bar to its initial state.
Collection of utilities.