qb  2.0.0.0
C++17 Actor Framework
qb Issue Watch Star Fork Follow @isndev
Loading...
Searching...
No Matches
qb::Duration Class Reference

Represents a duration with nanosecond precision. More...

#include <timestamp.h>

Public Types

using rep = int64_t
 Type used for nanosecond representation.
using chrono_duration = std::chrono::duration<rep, std::nano>
 Underlying chrono duration type (nanoseconds)

Public Member Functions

constexpr Duration () noexcept=default
 Default constructor, initializes to zero.
constexpr Duration (rep nanoseconds) noexcept
 Constructs a duration with specified nanoseconds.
template<typename Rep, typename Period>
constexpr Duration (const std::chrono::duration< Rep, Period > &duration) noexcept
 Constructs a duration from std::chrono::duration.
constexpr Duration (const Duration &) noexcept=default
constexpr Duration (Duration &&) noexcept=default
constexpr Durationoperator= (const Duration &) noexcept=default
constexpr Durationoperator= (Duration &&) noexcept=default
constexpr chrono_duration to_chrono () const noexcept
 Converts to std::chrono::duration.
template<typename TargetDuration>
constexpr TargetDuration to () const noexcept
 Converts to any std::chrono::duration.
constexpr rep days () const noexcept
 Gets the duration in days.
constexpr double days_float () const noexcept
 Gets the duration in days with fractional precision.
constexpr rep hours () const noexcept
 Gets the duration in hours.
constexpr double hours_float () const noexcept
 Gets the duration in hours with fractional precision.
constexpr rep minutes () const noexcept
 Gets the duration in minutes.
constexpr double minutes_float () const noexcept
 Gets the duration in minutes with fractional precision.
constexpr rep seconds () const noexcept
 Gets the duration in seconds.
constexpr double seconds_float () const noexcept
 Gets the duration in seconds with fractional precision.
constexpr rep milliseconds () const noexcept
 Gets the duration in milliseconds.
constexpr double milliseconds_float () const noexcept
 Gets the duration in milliseconds with fractional precision.
constexpr rep microseconds () const noexcept
 Gets the duration in microseconds.
constexpr double microseconds_float () const noexcept
 Gets the duration in microseconds with fractional precision.
constexpr rep nanoseconds () const noexcept
 Gets the duration in nanoseconds.
constexpr double nanoseconds_float () const noexcept
 Gets the duration in nanoseconds with double precision.
constexpr rep count () const noexcept
 Gets the total duration in nanoseconds.
constexpr Duration operator+ () const noexcept
constexpr Duration operator- () const noexcept
constexpr Durationoperator+= (const Duration &other) noexcept
constexpr Durationoperator-= (const Duration &other) noexcept
constexpr Durationoperator*= (rep multiplier) noexcept
constexpr Durationoperator/= (rep divisor) noexcept
constexpr Durationoperator%= (const Duration &other) noexcept
constexpr bool operator== (const Duration &rhs) const noexcept
constexpr bool operator!= (const Duration &rhs) const noexcept
constexpr bool operator< (const Duration &rhs) const noexcept
constexpr bool operator<= (const Duration &rhs) const noexcept
constexpr bool operator> (const Duration &rhs) const noexcept
constexpr bool operator>= (const Duration &rhs) const noexcept

Static Public Member Functions

static constexpr Duration zero () noexcept
 Represents zero duration.
static constexpr Duration from_days (rep days) noexcept
 Factory method to create a Duration from days.
static constexpr Duration from_hours (rep hours) noexcept
 Factory method to create a Duration from hours.
static constexpr Duration from_minutes (rep minutes) noexcept
 Factory method to create a Duration from minutes.
static constexpr Duration from_seconds (rep seconds) noexcept
 Factory method to create a Duration from seconds.
static constexpr Duration from_milliseconds (rep ms) noexcept
 Factory method to create a Duration from milliseconds.
static constexpr Duration from_microseconds (rep us) noexcept
 Factory method to create a Duration from microseconds.
static constexpr Duration from_nanoseconds (rep ns) noexcept
 Factory method to create a Duration from nanoseconds.

Detailed Description

Represents a duration with nanosecond precision.

Duration provides a platform-independent way to represent time durations with high precision. It supports arithmetic operations and various time unit conversions, fully interoperable with std::chrono::duration.

Constructor & Destructor Documentation

◆ Duration() [1/2]

qb::Duration::Duration ( rep nanoseconds)
inlineexplicitconstexprnoexcept

Constructs a duration with specified nanoseconds.

Parameters
nanosecondsDuration in nanoseconds

◆ Duration() [2/2]

template<typename Rep, typename Period>
qb::Duration::Duration ( const std::chrono::duration< Rep, Period > & duration)
inlineexplicitconstexprnoexcept

Constructs a duration from std::chrono::duration.

Template Parameters
RepThe count representation type
PeriodThe period type
Parameters
durationA std::chrono duration

Member Function Documentation

◆ to_chrono()

chrono_duration qb::Duration::to_chrono ( ) const
inlinenodiscardconstexprnoexcept

Converts to std::chrono::duration.

Returns
Equivalent std::chrono::duration in nanoseconds

◆ to()

template<typename TargetDuration>
TargetDuration qb::Duration::to ( ) const
inlinenodiscardconstexprnoexcept

Converts to any std::chrono::duration.

Template Parameters
DurationThe target duration type
Returns
Duration converted to the specified std::chrono::duration

◆ from_days()

constexpr Duration qb::Duration::from_days ( rep days)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from days.

Parameters
daysNumber of days
Returns
A Duration representing the specified number of days

◆ from_hours()

constexpr Duration qb::Duration::from_hours ( rep hours)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from hours.

Parameters
hoursNumber of hours
Returns
A Duration representing the specified number of hours

◆ from_minutes()

constexpr Duration qb::Duration::from_minutes ( rep minutes)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from minutes.

Parameters
minutesNumber of minutes
Returns
A Duration representing the specified number of minutes

◆ from_seconds()

constexpr Duration qb::Duration::from_seconds ( rep seconds)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from seconds.

Parameters
secondsNumber of seconds
Returns
A Duration representing the specified number of seconds

◆ from_milliseconds()

constexpr Duration qb::Duration::from_milliseconds ( rep ms)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from milliseconds.

Parameters
msNumber of milliseconds
Returns
A Duration representing the specified number of milliseconds

◆ from_microseconds()

constexpr Duration qb::Duration::from_microseconds ( rep us)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from microseconds.

Parameters
usNumber of microseconds
Returns
A Duration representing the specified number of microseconds

◆ from_nanoseconds()

constexpr Duration qb::Duration::from_nanoseconds ( rep ns)
inlinestaticnodiscardconstexprnoexcept

Factory method to create a Duration from nanoseconds.

Parameters
nsNumber of nanoseconds
Returns
A Duration representing the specified number of nanoseconds

◆ days()

rep qb::Duration::days ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in days.

Returns
Number of whole days

◆ days_float()

double qb::Duration::days_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in days with fractional precision.

Returns
Number of days with decimal point

◆ hours()

rep qb::Duration::hours ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in hours.

Returns
Number of whole hours

◆ hours_float()

double qb::Duration::hours_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in hours with fractional precision.

Returns
Number of hours with decimal point

◆ minutes()

rep qb::Duration::minutes ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in minutes.

Returns
Number of whole minutes

◆ minutes_float()

double qb::Duration::minutes_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in minutes with fractional precision.

Returns
Number of minutes with decimal point

◆ seconds()

rep qb::Duration::seconds ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in seconds.

Returns
Number of whole seconds

◆ seconds_float()

double qb::Duration::seconds_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in seconds with fractional precision.

Returns
Number of seconds with decimal point

◆ milliseconds()

rep qb::Duration::milliseconds ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in milliseconds.

Returns
Number of whole milliseconds

◆ milliseconds_float()

double qb::Duration::milliseconds_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in milliseconds with fractional precision.

Returns
Number of milliseconds with decimal point

◆ microseconds()

rep qb::Duration::microseconds ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in microseconds.

Returns
Number of whole microseconds

◆ microseconds_float()

double qb::Duration::microseconds_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in microseconds with fractional precision.

Returns
Number of microseconds with decimal point

◆ nanoseconds()

rep qb::Duration::nanoseconds ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in nanoseconds.

Returns
Number of nanoseconds

◆ nanoseconds_float()

double qb::Duration::nanoseconds_float ( ) const
inlinenodiscardconstexprnoexcept

Gets the duration in nanoseconds with double precision.

Returns
Number of nanoseconds as double

◆ count()

rep qb::Duration::count ( ) const
inlinenodiscardconstexprnoexcept

Gets the total duration in nanoseconds.

Returns
Duration in nanoseconds