Added explicit constructor for MultiProgress to remove insert API

This commit is contained in:
Pranav Srinivas Kumar
2019-12-18 11:51:58 -06:00
parent 2694badc93
commit 222a8ae4f9
3 changed files with 21 additions and 20 deletions

View File

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

View File

@@ -24,10 +24,7 @@ int main() {
bar3.show_remaining_time();
bar3.set_prefix_text("Progress Bar #3 ");
indicators::MultiProgress<indicators::BlockProgressBar, 3> bars;
bars.insert<0>(bar1);
bars.insert<1>(bar2);
bars.insert<2>(bar3);
indicators::MultiProgress<indicators::BlockProgressBar, 3> bars(bar1, bar2, bar3);
std::cout << "Multiple Progress Bars:\n";

View File

@@ -39,10 +39,7 @@ int main() {
bar3.show_remaining_time();
bar3.set_prefix_text("Progress Bar #3 ");
indicators::MultiProgress<indicators::ProgressBar, 3> bars;
bars.insert<0>(bar1);
bars.insert<1>(bar2);
bars.insert<2>(bar3);
indicators::MultiProgress<indicators::ProgressBar, 3> bars(bar1, bar2, bar3);
std::cout << "Multiple Progress Bars:\n";