27 #ifndef CLASSES_TIMER_H_
28 #define CLASSES_TIMER_H_
42 template<
typename T = std::chrono::duration<
double>,
43 typename CLOCK_T = std::chrono::steady_clock>
55 start_{CLOCK_T::now()}, end_{start_}
66 start_ = end_ = CLOCK_T::now();
78 end_ = CLOCK_T::now();
88 double tics() const noexcept
90 return std::chrono::duration_cast<T>(end_ -
start_).count();
102 template<
typename U = T>
105 return std::chrono::duration_cast<U>(end_ -
start_);
131 virtual ~Timer() =
default;
142 std::ostream&
display(std::ostream& os)
const override
CLOCK_T::time_point end_
Definition: timer.h:47
Quantum++ main namespace.
Definition: codes.h:30
Chronometer.
Definition: timer.h:44
Timer() noexcept
Constructs an instance with the current time as the starting point.
Definition: timer.h:54
Timer & operator=(const Timer &)=default
Default copy assignment operator.
CLOCK_T::time_point start_
Definition: timer.h:47
Abstract class (interface) that mandates the definition of virtual std::ostream& display(std::ostream...
Definition: idisplay.h:43
U get_duration() const noexcept
Duration specified by U.
Definition: timer.h:103
virtual ~Timer()=default
Default virtual destructor.
void tic() noexcept
Resets the chronometer.
Definition: timer.h:64
std::ostream & display(std::ostream &os) const override
qpp::IDisplay::display() override
Definition: timer.h:142
const Timer & toc() noexcept
Stops the chronometer.
Definition: timer.h:76
double tics() const noexcept
Time passed in the duration specified by T.
Definition: timer.h:88