16 timer(): t1(std::chrono::high_resolution_clock::now()){};
17 float_t elapsed(){
return std::chrono::duration_cast<std::chrono::duration<float_t>>(std::chrono::high_resolution_clock::now() - t1).count();}
18 void restart(){t1 = std::chrono::high_resolution_clock::now();}
19 void start(){t1 = std::chrono::high_resolution_clock::now();}
20 void stop(){t2 = std::chrono::high_resolution_clock::now();}
21 float_t total(){stop();
return std::chrono::duration_cast<std::chrono::duration<float_t>>(t2 - t1).count();}
24 std::chrono::high_resolution_clock::time_point t1, t2;
37 std::ostream & os = std::cout,
38 const std::string & s1 =
"\n",
39 const std::string & s2 =
"",
40 const std::string & s3 =
"" )
42 : m_os(os), m_s1(s1), m_s2(s2), m_s3(s3) { restart(expected_count_); }
44 void restart(
size_t expected_count_ )
48 _count = _next_tic_count = _tic = 0;
49 _expected_count = expected_count_;
51 m_os << m_s1 <<
"0% 10 20 30 40 50 60 70 80 90 100%\n"
52 << m_s2 <<
"|----|----|----|----|----|----|----|----|----|----|"
55 if ( !_expected_count ) _expected_count = 1;
58 size_t operator+=(
size_t increment )
63 if ( (_count += increment) >= _next_tic_count ) { display_tic(); }
67 size_t operator++() {
return operator+=( 1 ); }
68 size_t count()
const {
return _count; }
69 size_t expected_count()
const {
return _expected_count; }
73 const std::string m_s1;
74 const std::string m_s2;
75 const std::string m_s3;
77 size_t _count, _expected_count, _next_tic_count;
86 (
static_cast<double>(_count)/_expected_count)*50.0 );
87 do { m_os <<
'*' << std::flush; }
while ( ++_tic < tics_needed );
89 static_cast<size_t>((_tic/50.0)*_expected_count);
90 if ( _count == _expected_count ) {
91 if ( _tic < 51 ) m_os <<
'*';