summaryrefslogtreecommitdiff
path: root/src/ProgressBar.hpp
diff options
context:
space:
mode:
authorJoel Rosdahl <joel@rosdahl.net>2019-08-28 21:58:06 +0200
committerJoel Rosdahl <joel@rosdahl.net>2019-09-05 22:04:43 +0200
commitd74ca5da634dcb89ce6f5a772dd99032e7fae87c (patch)
tree14f3ea74c19374b4288f68627898e585f5d258a8 /src/ProgressBar.hpp
parent5a33e943720b753db883c3c9d9bd36ea1c5a30d3 (diff)
downloadccache-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.hpp37
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)
+};