diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2019-08-28 21:58:06 +0200 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2019-09-05 22:04:43 +0200 |
commit | d74ca5da634dcb89ce6f5a772dd99032e7fae87c (patch) | |
tree | 14f3ea74c19374b4288f68627898e585f5d258a8 /src/ProgressBar.hpp | |
parent | 5a33e943720b753db883c3c9d9bd36ea1c5a30d3 (diff) | |
download | ccache-d74ca5da634dcb89ce6f5a772dd99032e7fae87c.tar.gz |
Add ProgressBar class
The progress bar draws a simple progress bar with percentage to the
console.
Diffstat (limited to 'src/ProgressBar.hpp')
-rw-r--r-- | src/ProgressBar.hpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ProgressBar.hpp b/src/ProgressBar.hpp new file mode 100644 index 00000000..f1b43e51 --- /dev/null +++ b/src/ProgressBar.hpp @@ -0,0 +1,37 @@ +// Copyright (C) 2019 Joel Rosdahl and other contributors +// +// See doc/AUTHORS.adoc for a complete list of contributors. +// +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 3 of the License, or (at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, write to the Free Software Foundation, Inc., 51 +// Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +#include <string> + +class ProgressBar +{ +public: + explicit ProgressBar(const std::string& header); + + // Update progress bar. + // + // Parameters: + // - value: A value between 0.0 (nothing completed) to 1.0 (all completed). + void update(double value); + +private: + const std::string m_header; + const size_t m_width; + const bool m_stdout_is_a_terminal; + int16_t m_current_value = -1; // trunc(1000 * value) +}; |