Merge branch 'feature/multiprogress_api'

This commit is contained in:
Pranav Srinivas Kumar
2019-12-18 11:59:33 -06:00
4 changed files with 15 additions and 21 deletions

View File

@@ -9,7 +9,7 @@
<a href="https://github.com/p-ranav/indicators/blob/master/LICENSE"> <a href="https://github.com/p-ranav/indicators/blob/master/LICENSE">
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="license"/> <img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="license"/>
</a> </a>
<img src="https://img.shields.io/badge/version-1.4-blue.svg?cacheSeconds=2592000" alt="version"/> <img src="https://img.shields.io/badge/version-1.5-blue.svg?cacheSeconds=2592000" alt="version"/>
</p> </p>
<p align="center"> <p align="center">
@@ -295,10 +295,7 @@ int main() {
bar3.set_prefix_text("Progress Bar #3 "); bar3.set_prefix_text("Progress Bar #3 ");
// Construct MultiProgress object // Construct MultiProgress object
indicators::MultiProgress<indicators::ProgressBar, 3> bars; indicators::MultiProgress<indicators::ProgressBar, 3> bars(bar1, bar2, bar3);
bars.insert<0>(bar1);
bars.insert<1>(bar2);
bars.insert<2>(bar3);
std::cout << "Multiple Progress Bars:\n"; std::cout << "Multiple Progress Bars:\n";

View File

@@ -36,29 +36,32 @@ namespace indicators {
template <typename Indicator, size_t count> class MultiProgress { template <typename Indicator, size_t count> class MultiProgress {
public: public:
MultiProgress() { _bars.reserve(count); }
template <size_t index> template <typename... Indicators,
typename std::enable_if<(index < count), void>::type insert(Indicator &bar) { typename = typename std::enable_if<(sizeof...(Indicators) == count)>::type
_bars.insert(_bars.begin() + index, 1, bar); >
bar._multi_progress_mode = true; explicit MultiProgress(Indicators&... bars) {
_bars = {bars...};
for (auto& bar: _bars) {
bar.get()._multi_progress_mode = true;
}
} }
template <size_t index> template <size_t index>
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()) if (!_bars[index].get().is_completed())
_bars[index].get().set_progress(value); _bars[index].get().set_progress(value);
_print_progress(); _print_progress();
} }
template <size_t index> typename std::enable_if<(index < count), void>::type tick() { template <size_t index> typename std::enable_if<(index >=0 && index < count), void>::type tick() {
if (!_bars[index].get().is_completed()) if (!_bars[index].get().is_completed())
_bars[index].get().tick(); _bars[index].get().tick();
_print_progress(); _print_progress();
} }
template <size_t index> template <size_t index>
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(); return _bars[index].get().is_completed();
} }

View File

@@ -24,10 +24,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<indicators::BlockProgressBar, 3> bars; indicators::MultiProgress<indicators::BlockProgressBar, 3> bars(bar1, bar2, bar3);
bars.insert<0>(bar1);
bars.insert<1>(bar2);
bars.insert<2>(bar3);
std::cout << "Multiple Progress Bars:\n"; std::cout << "Multiple Progress Bars:\n";

View File

@@ -39,10 +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<indicators::ProgressBar, 3> bars; indicators::MultiProgress<indicators::ProgressBar, 3> bars(bar1, bar2, bar3);
bars.insert<0>(bar1);
bars.insert<1>(bar2);
bars.insert<2>(bar3);
std::cout << "Multiple Progress Bars:\n"; std::cout << "Multiple Progress Bars:\n";