MCPcopy Create free account
hub / github.com/KTH-RPL/dufomap / ProgressSpinner

Class ProgressSpinner

src/indicators.hpp:3044–3244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3042namespace indicators {
3043
3044class ProgressSpinner {
3045 using Settings =
3046 std::tuple<option::ForegroundColor, option::PrefixText, option::PostfixText,
3047 option::ShowPercentage, option::ShowElapsedTime, option::ShowRemainingTime,
3048 option::ShowSpinner, option::SavedStartTime, option::Completed,
3049 option::MaxPostfixTextLen, option::SpinnerStates, option::FontStyles,
3050 option::MaxProgress, option::Stream>;
3051
3052public:
3053 template <typename... Args,
3054 typename std::enable_if<details::are_settings_from_tuple<
3055 Settings, typename std::decay<Args>::type...>::value,
3056 void *>::type = nullptr>
3057 explicit ProgressSpinner(Args &&... args)
3058 : settings_(
3059 details::get<details::ProgressBarOption::foreground_color>(
3060 option::ForegroundColor{Color::unspecified}, std::forward<Args>(args)...),
3061 details::get<details::ProgressBarOption::prefix_text>(option::PrefixText{},
3062 std::forward<Args>(args)...),
3063 details::get<details::ProgressBarOption::postfix_text>(option::PostfixText{},
3064 std::forward<Args>(args)...),
3065 details::get<details::ProgressBarOption::show_percentage>(option::ShowPercentage{true},
3066 std::forward<Args>(args)...),
3067 details::get<details::ProgressBarOption::show_elapsed_time>(
3068 option::ShowElapsedTime{false}, std::forward<Args>(args)...),
3069 details::get<details::ProgressBarOption::show_remaining_time>(
3070 option::ShowRemainingTime{false}, std::forward<Args>(args)...),
3071 details::get<details::ProgressBarOption::spinner_show>(option::ShowSpinner{true},
3072 std::forward<Args>(args)...),
3073 details::get<details::ProgressBarOption::saved_start_time>(
3074 option::SavedStartTime{false}, std::forward<Args>(args)...),
3075 details::get<details::ProgressBarOption::completed>(option::Completed{false},
3076 std::forward<Args>(args)...),
3077 details::get<details::ProgressBarOption::max_postfix_text_len>(
3078 option::MaxPostfixTextLen{0}, std::forward<Args>(args)...),
3079 details::get<details::ProgressBarOption::spinner_states>(
3080 option::SpinnerStates{
3081 std::vector<std::string>{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}},
3082 std::forward<Args>(args)...),
3083 details::get<details::ProgressBarOption::font_styles>(
3084 option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...),
3085 details::get<details::ProgressBarOption::max_progress>(option::MaxProgress{100},
3086 std::forward<Args>(args)...),
3087 details::get<details::ProgressBarOption::stream>(option::Stream{std::cout},
3088 std::forward<Args>(args)...)) {}
3089
3090 template <typename T, details::ProgressBarOption id>
3091 void set_option(details::Setting<T, id> &&setting) {
3092 static_assert(!std::is_same<T, typename std::decay<decltype(details::get_value<id>(
3093 std::declval<Settings>()))>::type>::value,
3094 "Setting has wrong type!");
3095 std::lock_guard<std::mutex> lock(mutex_);
3096 get_value<id>() = std::move(setting).value;
3097 }
3098
3099 template <typename T, details::ProgressBarOption id>
3100 void set_option(const details::Setting<T, id> &setting) {
3101 static_assert(!std::is_same<T, typename std::decay<decltype(details::get_value<id>(

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected