MT Core (C++)
Core library for replacing C++ standard in project usage
Loading...
Searching...
No Matches
mtcore::calendars::DayFraction Struct Reference

#include <time.hpp>

Public Member Functions

constexpr Result< void, TimeValidationErrortry_validate () const
 Tries to validate.
 
constexpr operator NanoSeconds () const
 
constexpr operator Segments () const
 
constexpr auto operator<=> (const DayFraction &o) const
 
bool operator== (const DayFraction &o) const
 
bool operator!= (const DayFraction &o) const
 
bool operator< (const DayFraction &o) const
 
bool operator> (const DayFraction &o) const
 
bool operator<= (const DayFraction &o) const
 
bool operator>= (const DayFraction &o) const
 

Public Attributes

f64 frac
 

Detailed Description

Definition at line 109 of file calendars/mtcore_calendars/time.hpp.

Member Function Documentation

◆ operator NanoSeconds()

mtcore::calendars::DayFraction::operator NanoSeconds ( ) const
explicitnodiscardconstexpr

Definition at line 205 of file calendars/mtcore_calendars/time.hpp.

205 {
206 ensure(try_validate().is_success());
207 const auto nanoSeconds = math::floor<f64, u64>(frac * NANOS_PER_DAY);
208 const auto res = NanoSeconds{.nano = nanoSeconds};
209 ensure(res.try_validate().is_success());
210 return res;
211 }
constexpr i64 NANOS_PER_DAY
Number of nanoseconds per day.
#define ensure(check,...)
Ensures that a check holds true, aborts the program if not true Will print error if the condition is ...
constexpr R floor(T num) noexcept
Floors a number with support for constexpr and fast runtime compilation.
constexpr Result< void, TimeValidationError > try_validate() const
Tries to validate.
Here is the call graph for this function:

◆ operator Segments()

mtcore::calendars::DayFraction::operator Segments ( ) const
explicitnodiscardconstexpr

Definition at line 213 of file calendars/mtcore_calendars/time.hpp.

213 {
214 const auto nanos = static_cast<NanoSeconds>(*this);
215 return static_cast<Segments>(nanos);
216 }

◆ operator!=()

bool mtcore::calendars::DayFraction::operator!= ( const DayFraction & o) const
inlinenodiscard

Definition at line 134 of file calendars/mtcore_calendars/time.hpp.

134 {
135 return (*this <=> o) != std::weak_ordering::equivalent;
136 }

◆ operator<()

bool mtcore::calendars::DayFraction::operator< ( const DayFraction & o) const
inlinenodiscard

Definition at line 137 of file calendars/mtcore_calendars/time.hpp.

137{ return (*this <=> o) == std::weak_ordering::less; }

◆ operator<=()

bool mtcore::calendars::DayFraction::operator<= ( const DayFraction & o) const
inlinenodiscard

Definition at line 139 of file calendars/mtcore_calendars/time.hpp.

139 {
140 const auto cmp = (*this <=> o);
141 return cmp == std::weak_ordering::equivalent || cmp == std::weak_ordering::less;
142 }

◆ operator<=>()

auto mtcore::calendars::DayFraction::operator<=> ( const DayFraction & o) const
inlinenodiscardconstexpr

Definition at line 129 of file calendars/mtcore_calendars/time.hpp.

129{ return frac <=> o.frac; }

◆ operator==()

bool mtcore::calendars::DayFraction::operator== ( const DayFraction & o) const
inlinenodiscard

Definition at line 131 of file calendars/mtcore_calendars/time.hpp.

131 {
132 return (*this <=> o) == std::weak_ordering::equivalent;
133 }

◆ operator>()

bool mtcore::calendars::DayFraction::operator> ( const DayFraction & o) const
inlinenodiscard

Definition at line 138 of file calendars/mtcore_calendars/time.hpp.

138{ return (*this <=> o) == std::weak_ordering::greater; }

◆ operator>=()

bool mtcore::calendars::DayFraction::operator>= ( const DayFraction & o) const
inlinenodiscard

Definition at line 143 of file calendars/mtcore_calendars/time.hpp.

143 {
144 const auto cmp = (*this <=> o);
145 return cmp == std::weak_ordering::equivalent || cmp == std::weak_ordering::greater;
146 }

◆ try_validate()

Result< void, TimeValidationError > mtcore::calendars::DayFraction::try_validate ( ) const
inlinenodiscardconstexpr

Tries to validate.

Will return validation error describing what's wrong if invalid.

Definition at line 113 of file calendars/mtcore_calendars/time.hpp.

113 {
114 if (!std::isfinite(frac)) {
116 }
117 if (frac < 0) {
119 }
120 if (frac >= 1) {
122 }
123 return success();
124 }
Success< void > success()
Creates a successful void Result object.
Definition result.hpp:398
Error< Underlying > error(Underlying err)
Creates an error.
Definition result.hpp:425
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ frac

f64 mtcore::calendars::DayFraction::frac

Definition at line 110 of file calendars/mtcore_calendars/time.hpp.


The documentation for this struct was generated from the following file: