From 222a8ae4f91faedf7d1bd9e9cdd28f48b1a7319e Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 18 Dec 2019 11:51:58 -0600 Subject: [PATCH 1/5] Added explicit constructor for MultiProgress to remove insert API --- include/indicators/multi_progress.hpp | 31 ++++++++++++++++----------- samples/multi_block_progress_bar.cpp | 5 +---- samples/multi_progress_bar.cpp | 5 +---- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/include/indicators/multi_progress.hpp b/include/indicators/multi_progress.hpp index 2dbb9c9..c643133 100644 --- a/include/indicators/multi_progress.hpp +++ b/include/indicators/multi_progress.hpp @@ -36,29 +36,36 @@ namespace indicators { template class MultiProgress { public: - MultiProgress() { _bars.reserve(count); } - template - typename std::enable_if<(index < count), void>::type insert(Indicator &bar) { - _bars.insert(_bars.begin() + index, 1, bar); - bar._multi_progress_mode = true; + template ::type + > + explicit MultiProgress(Indicators&... bars) { + _bars = {bars...}; } template - typename std::enable_if<(index < count), void>::type set_progress(float value) { - if (!_bars[index].get().is_completed()) - _bars[index].get().set_progress(value); + typename std::enable_if<(index >=0 && index < count), void>::type set_progress(float value) { + { + std::unique_lock lock{_mutex}; + if (!_bars[index].get().is_completed()) + _bars[index].get().set_progress(value); + } _print_progress(); } - template typename std::enable_if<(index < count), void>::type tick() { - if (!_bars[index].get().is_completed()) - _bars[index].get().tick(); + template typename std::enable_if<(index >=0 && index < count), void>::type tick() { + { + std::unique_lock lock{_mutex}; + if (!_bars[index].get().is_completed()) + _bars[index].get().tick(); + } _print_progress(); } template - typename std::enable_if<(index < count), bool>::type is_completed() const { + typename std::enable_if<(index >=0 && index < count), bool>::type is_completed() { + std::unique_lock lock{_mutex}; return _bars[index].get().is_completed(); } diff --git a/samples/multi_block_progress_bar.cpp b/samples/multi_block_progress_bar.cpp index d43aabb..de53051 100644 --- a/samples/multi_block_progress_bar.cpp +++ b/samples/multi_block_progress_bar.cpp @@ -24,10 +24,7 @@ int main() { bar3.show_remaining_time(); bar3.set_prefix_text("Progress Bar #3 "); - indicators::MultiProgress bars; - bars.insert<0>(bar1); - bars.insert<1>(bar2); - bars.insert<2>(bar3); + indicators::MultiProgress bars(bar1, bar2, bar3); std::cout << "Multiple Progress Bars:\n"; diff --git a/samples/multi_progress_bar.cpp b/samples/multi_progress_bar.cpp index dc71c41..78360ec 100644 --- a/samples/multi_progress_bar.cpp +++ b/samples/multi_progress_bar.cpp @@ -39,10 +39,7 @@ int main() { bar3.show_remaining_time(); bar3.set_prefix_text("Progress Bar #3 "); - indicators::MultiProgress bars; - bars.insert<0>(bar1); - bars.insert<1>(bar2); - bars.insert<2>(bar3); + indicators::MultiProgress bars(bar1, bar2, bar3); std::cout << "Multiple Progress Bars:\n"; From 72644e513415a0c82dddc062d25dc29d3aad3c32 Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 18 Dec 2019 11:55:56 -0600 Subject: [PATCH 2/5] Setting multiprogress mode in MultiProgress constructor --- include/indicators/multi_progress.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/indicators/multi_progress.hpp b/include/indicators/multi_progress.hpp index c643133..12e506b 100644 --- a/include/indicators/multi_progress.hpp +++ b/include/indicators/multi_progress.hpp @@ -42,6 +42,9 @@ public: > explicit MultiProgress(Indicators&... bars) { _bars = {bars...}; + for (auto& bar: _bars) { + bar.get()._multi_progress_mode = true; + } } template From 8190a1e513c9b153d2a448568c5259fd599da28a Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 18 Dec 2019 11:57:07 -0600 Subject: [PATCH 3/5] Minor update --- include/indicators/multi_progress.hpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/include/indicators/multi_progress.hpp b/include/indicators/multi_progress.hpp index 12e506b..8121ee9 100644 --- a/include/indicators/multi_progress.hpp +++ b/include/indicators/multi_progress.hpp @@ -49,26 +49,19 @@ public: template typename std::enable_if<(index >=0 && index < count), void>::type set_progress(float value) { - { - std::unique_lock lock{_mutex}; - if (!_bars[index].get().is_completed()) - _bars[index].get().set_progress(value); - } + if (!_bars[index].get().is_completed()) + _bars[index].get().set_progress(value); _print_progress(); } template typename std::enable_if<(index >=0 && index < count), void>::type tick() { - { - std::unique_lock lock{_mutex}; - if (!_bars[index].get().is_completed()) - _bars[index].get().tick(); - } + if (!_bars[index].get().is_completed()) + _bars[index].get().tick(); _print_progress(); } template - typename std::enable_if<(index >=0 && index < count), bool>::type is_completed() { - std::unique_lock lock{_mutex}; + typename std::enable_if<(index >=0 && index < count), bool>::type is_completed() const { return _bars[index].get().is_completed(); } From 502ce33af489e7641a8e23171e71a775b1731fae Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 18 Dec 2019 11:57:50 -0600 Subject: [PATCH 4/5] Updated README w/ new MultiProgress API --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index a0618eb..46bcf71 100644 --- a/README.md +++ b/README.md @@ -295,10 +295,7 @@ int main() { bar3.set_prefix_text("Progress Bar #3 "); // Construct MultiProgress object - indicators::MultiProgress bars; - bars.insert<0>(bar1); - bars.insert<1>(bar2); - bars.insert<2>(bar3); + indicators::MultiProgress bars(bar1, bar2, bar3); std::cout << "Multiple Progress Bars:\n"; From 9786633eba5a5c779eec1421c2ffc1bc2c8c9529 Mon Sep 17 00:00:00 2001 From: Pranav Srinivas Kumar Date: Wed, 18 Dec 2019 11:59:20 -0600 Subject: [PATCH 5/5] Bumped version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 46bcf71..d6548cf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ license - version + version