diff --git a/README.md b/README.md index a0618eb..d6548cf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ license - version + version

@@ -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"; diff --git a/include/indicators/multi_progress.hpp b/include/indicators/multi_progress.hpp index 2dbb9c9..8121ee9 100644 --- a/include/indicators/multi_progress.hpp +++ b/include/indicators/multi_progress.hpp @@ -36,29 +36,32 @@ 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...}; + for (auto& bar: _bars) { + bar.get()._multi_progress_mode = true; + } } template - typename std::enable_if<(index < count), void>::type set_progress(float value) { + typename std::enable_if<(index >=0 && index < count), void>::type set_progress(float value) { if (!_bars[index].get().is_completed()) _bars[index].get().set_progress(value); _print_progress(); } - template typename std::enable_if<(index < count), void>::type tick() { + template typename std::enable_if<(index >=0 && index < count), void>::type tick() { 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() const { 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";