mirror of
https://github.com/p-ranav/indicators.git
synced 2025-12-07 12:58:54 +08:00
Added explicit constructor for MultiProgress to remove insert API
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user