27 #ifndef CLASSES_TIMER_H_ 28 #define CLASSES_TIMER_H_ 41 template<
typename T = std::chrono::duration<
double>,
42 typename CLOCK_T = std::chrono::steady_clock>
54 start_{CLOCK_T::now()}, end_{start_}
65 start_ = end_ = CLOCK_T::now();
77 end_ = CLOCK_T::now();
87 double tics() const noexcept
89 return std::chrono::duration_cast<T>(end_ -
start_).count();
101 template<
typename U = T>
104 return std::chrono::duration_cast<U>(end_ -
start_);
130 virtual ~Timer() =
default;
141 std::ostream&
display(std::ostream& os)
const override CLOCK_T::time_point end_
Definition: timer.h:46
std::ostream & display(std::ostream &os) const override
qpp::IDisplay::display() override
Definition: timer.h:141
Quantum++ main namespace.
Definition: codes.h:30
Chronometer.
Definition: timer.h:43
Timer() noexcept
Constructs an instance with the current time as the starting point.
Definition: timer.h:53
Timer & operator=(const Timer &)=default
Default copy assignment operator.
CLOCK_T::time_point start_
Definition: timer.h:46
Abstract class (interface) that mandates the definition of virtual std::ostream& display(std::ostream...
Definition: idisplay.h:42
virtual ~Timer()=default
Default virtual destructor.
double tics() const noexcept
Time passed in the duration specified by T.
Definition: timer.h:87
void tic() noexcept
Resets the chronometer.
Definition: timer.h:63
U get_duration() const noexcept
Duration specified by U.
Definition: timer.h:102
const Timer & toc() noexcept
Stops the chronometer.
Definition: timer.h:75