31#ifndef ETL_IN_CHRONO_H
32 #error DO NOT DIRECTLY INCLUDE THIS FILE. USE CHRONO.H
35#include "../../absolute.h"
36#include "../../power.h"
44 template <
typename TDuration>
50 return TDuration((dur.count() < 0) ? -dur.count() : dur.count());
58 template <
typename TDuration>
64 template <u
intmax_t Den,
int W
idth = 0>
65 struct fractional_width_helper
67 static constexpr int value = fractional_width_helper<
Den / 10,
Width + 1>::value;
72 struct fractional_width_helper<1,
Width>
74 static constexpr int value =
Width;
79 struct fractional_width_helper<0,
Width>
81 static constexpr int value = 0;
85 template <
typename TDur>
86 struct calculate_fractional_width
88 static constexpr int value = (TDur::period::den == 1)
90 : fractional_width_helper<TDur::period::den>::value;
95 ETL_STATIC_ASSERT((etl::is_specialization<TDuration, etl::chrono::duration>::value),
"TDuration is not a etl::chrono::duration type");
97 static constexpr int fractional_width = calculate_fractional_width<TDuration>::value;
130 return d < TDuration::zero();
140 auto dur = etl::absolute(d);
142 return etl::chrono::duration_cast<etl::chrono::hours>(dur);
151 auto dur = etl::absolute(d) -
hours();
153 return etl::chrono::duration_cast<etl::chrono::minutes>(dur);
165 return etl::chrono::duration_cast<etl::chrono::seconds>(dur);
174 return etl::absolute(d) - etl::chrono::duration_cast<etl::chrono::seconds>(etl::absolute(d));
201 template <
typename TDuration>
duration
Definition duration.h:108
hh_mm_ss
Definition hh_mm_ss.h:60
ETL_NODISCARD ETL_CONSTEXPR14 bool is_negative() const ETL_NOEXCEPT
Checks for negative duration.
Definition hh_mm_ss.h:128
ETL_NODISCARD ETL_CONSTEXPR14 precision subseconds() const ETL_NOEXCEPT
Returns the subseconds.
Definition hh_mm_ss.h:172
ETL_CONSTEXPR hh_mm_ss() ETL_NOEXCEPT
Default constructor.
Definition hh_mm_ss.h:109
etl::chrono::duration< common_type_t< typename TDuration::rep, etl::chrono::seconds::rep >, ratio< 1, etl::power< 10, fractional_width >::value > > precision
The return type for to_duration.
Definition hh_mm_ss.h:103
ETL_NODISCARD ETL_CONSTEXPR14 precision to_duration() const ETL_NOEXCEPT
Returns the duration.
Definition hh_mm_ss.h:191
ETL_CONSTEXPR14 hh_mm_ss(TDuration d_) ETL_NOEXCEPT
Construct from duration.
Definition hh_mm_ss.h:118
ETL_NODISCARD ETL_CONSTEXPR14 etl::chrono::hours hours() const ETL_NOEXCEPT
Returns the hours.
Definition hh_mm_ss.h:138
ETL_NODISCARD ETL_CONSTEXPR14 etl::chrono::minutes minutes() const ETL_NOEXCEPT
Returns the minutes.
Definition hh_mm_ss.h:149
ETL_NODISCARD ETL_CONSTEXPR14 etl::chrono::seconds seconds() const ETL_NOEXCEPT
Returns the seconds.
Definition hh_mm_ss.h:161
enable_if
Definition type_traits_generator.h:1230
bitset_ext
Definition absolute.h:38
ETL_NODISCARD ETL_CONSTEXPR14 T round_half_even_unscaled(T value) ETL_NOEXCEPT
Definition scaled_rounding.h:314
ratio
Definition ratio.h:53