dedup/inc/progressbar.h

30 lines
667 B
C++

#pragma once
#include <chrono>
#include <cstdint>
#include <ostream>
class ProgressBar {
public:
ProgressBar(uint64_t files, uint64_t bytes);
void update(uint64_t addFiles, uint64_t newBytes);
std::chrono::duration<uint64_t, std::milli> getDuration() const;
private:
static const uint_fast8_t BARLENGTH;
uint64_t maxFiles;
uint64_t maxBytes;
uint64_t currentFiles = 0;
uint64_t currentBytes = 0;
std::chrono::time_point<std::chrono::high_resolution_clock> start = std::chrono::high_resolution_clock::now();
friend std::ostream& operator<<(std::ostream& str, const ProgressBar&);
};
std::ostream& operator<<(std::ostream& str, const ProgressBar&);