Changed MultiProgress into a template container class

This commit is contained in:
Pranav Srinivas Kumar
2019-12-17 20:14:05 -06:00
parent 92725d6cb2
commit 03000c8493
3 changed files with 6 additions and 6 deletions

View File

@@ -27,14 +27,13 @@ SOFTWARE.
#pragma once #pragma once
#define NOMINMAX #define NOMINMAX
#include <functional> #include <functional>
#include <indicators/progress_bar.hpp>
#include <vector> #include <vector>
namespace indicators { namespace indicators {
template <size_t count> class MultiProgress { template <typename Indicator, size_t count> class MultiProgress {
public: public:
void add_progress_bar(ProgressBar &bar) { void add_progress_bar(Indicator &bar) {
_bars.push_back(bar); _bars.push_back(bar);
bar._multi_progress_mode = true; bar._multi_progress_mode = true;
} }
@@ -60,7 +59,7 @@ public:
private: private:
std::atomic<bool> _started{false}; std::atomic<bool> _started{false};
std::mutex _mutex; std::mutex _mutex;
std::vector<std::reference_wrapper<ProgressBar>> _bars; std::vector<std::reference_wrapper<Indicator>> _bars;
bool _all_completed() { bool _all_completed() {
bool result{true}; bool result{true};

View File

@@ -147,7 +147,7 @@ private:
std::mutex _mutex; std::mutex _mutex;
Color _foreground_color{indicators::Color::WHITE}; Color _foreground_color{indicators::Color::WHITE};
template <size_t count> friend class MultiProgress; template <typename Indicator, size_t count> friend class MultiProgress;
std::atomic<bool> _multi_progress_mode{false}; std::atomic<bool> _multi_progress_mode{false};
std::ostream &_print_duration(std::ostream &os, std::chrono::nanoseconds ns) { std::ostream &_print_duration(std::ostream &os, std::chrono::nanoseconds ns) {

View File

@@ -1,3 +1,4 @@
#include <indicators/progress_bar.hpp>
#include <indicators/multi_progress.hpp> #include <indicators/multi_progress.hpp>
int main() { int main() {
@@ -38,7 +39,7 @@ int main() {
bar3.show_remaining_time(); bar3.show_remaining_time();
bar3.set_prefix_text("Progress Bar #3 "); bar3.set_prefix_text("Progress Bar #3 ");
indicators::MultiProgress<3> bars; indicators::MultiProgress<indicators::ProgressBar, 3> bars;
bars.add_progress_bar(bar1); bars.add_progress_bar(bar1);
bars.add_progress_bar(bar2); bars.add_progress_bar(bar2);
bars.add_progress_bar(bar3); bars.add_progress_bar(bar3);