4inline millis operator -(const ::millis& millis1, const ::millis& millis2);
5inline millis operator +(const ::millis& millis1, const ::millis& millis2);
21inline ::f64 __f64(const ::millis &
millis);
28class CLASS_DECL_ACME millis
36 millis() { m_i32 = 0; }
37 millis(
enum enum_now);
40 template < prototype_
integral INTEGRAL >
41 millis(INTEGRAL i) { m_i32 = i; }
43 millis(
const secs & secs) { m_i32 = secs.m_i32 * 1'000; }
44 millis(
const millis & millis) { m_i32 = millis.m_i32; }
45 millis(
const micros & micros);
46 millis(
const nanos & nanos);
49 millis & operator = (
const millis & millis) { m_i32 = millis.m_i32;
return *
this; }
51 inline static millis now();
53 inline static millis infinite() {
return {-1}; }
55 inline bool is_infinite()
const {
return m_i32 < 0; }
57 inline bool is_infinity()
const {
return m_i32 < 0; }
59 inline bool timeout(
const millis& tickTimeout);
61 inline ::millis remaining(
const millis & millisTimeout)
64 auto millisNow = now();
66 auto millisRemaining = millisTimeout - millisNow + *
this;
68 return millisRemaining;
73 inline bool done(const ::millis & millis)
const;
74 inline bool done()
const;
77 inline millis elapsed(const ::millis & millis)
const
80 return millis.m_i32 - m_i32;
85 inline ::f64 sawtooth(const ::millis & tickPeriod)
88 return __f64(elapsed() % tickPeriod) / __f64(tickPeriod);
93 inline ::f64 period_rate(const ::millis & tickPeriod)
96 return __f64(elapsed()) / __f64(tickPeriod);
101 inline millis elapsed()
const
104 return elapsed(now());
109 inline ::u32 ::u32()
const
112 return (::u32) (m_i32 % 0x100000000ULL);
116 inline ::i64 seconds()
const {
return m_i32 / 1000; }
134 inline bool on_off(const ::millis & period)
const
137 return (elapsed().m_i32 % period.m_i32) < period.m_i32 >> 1;
143 inline bool on_off(const ::millis & period, ::f64 dRate)
const
146 return (elapsed().m_i32 % period.m_i32) < period.m_i32 * dRate;
171 inline millis& operator -= (const ::millis & millis) { m_i32 -= millis.m_i32;
return *
this; }
172 inline millis& operator += (const ::millis & millis) { m_i32 += millis.m_i32;
return *
this; }
187 inline millis& operator *= (::f64 d) { m_i32 = (::i64)(m_i32 * d);
return *
this; }
189 inline ::i64 operator / (
const millis& millis)
const {
return m_i32 / millis.m_i32; }
190 inline millis& operator /= (::i64 i) { m_i32 /= i;
return *
this; }
191 inline millis& operator %= (
const millis & millis) { m_i32 %= millis.m_i32;
return *
this; }
194 inline millis operator % (::i32 i)
const {
return m_i32 % i; }
195 inline millis operator % (::i64 i)
const {
return m_i32 % i; }
196 inline millis operator % (const ::millis & millis)
const {
return m_i32 % millis.m_i32; }
216 template <
typename TYPE >
217 inline TYPE default_value();
220 inline ::u32 default_value < ::u32 >()
227 inline millis default_value < millis >();
240#define __prtick "%" PRtick " ms"
243#define U32_INFINITE_TIMEOUT ((::u32)0xffffffffu)
246inline ::f64 __f64(const ::millis &
millis) {
return (::f64)
millis.m_i32; }
249inline auto __pr(const ::millis &
millis) {
return millis.m_i32; }
252inline ::u32 __os(const ::millis &
millis)
255 if (
millis.m_i32 > (::i64) I32_MAXIMUM)
258 return U32_INFINITE_TIMEOUT;
261 else if (
millis.m_i32 < 0)
270 return (::u32)
millis.m_i32;
276inline ::i32 __int(const ::millis &
millis) {
return (::i32)
millis.m_i32; }
279inline ::i64 __i64(const ::millis &
millis) {
return (::i64)
millis.m_i32; }
282inline ::u8 as_byte(const ::millis &
millis) {
return (::u8) minimummax(
millis.m_i32, 0, 255); }
285inline millis __tick(::f64 d) {
return (::i64) d; }
288inline millis operator""_tick(::u64 u) {
return u; }
294typedef CLASS_DECL_ACME numeric_array < millis > millis_array;
303inline millis operator""_ms(::u64 u) {
return (::i64) u; }
306inline millis operator -(const ::millis& millis1, const ::millis& millis2)
309 return millis1.m_i32 - millis2.m_i32;
314inline millis operator +(const ::millis& millis1, const ::millis& millis2)
317 return millis1.m_i32 + millis2.m_i32;
325template < prototype_number NUMBER >
326inline millis operator *(const ::millis&
millis,
const NUMBER& number)
329 return (::i64)(
millis.m_i32 * number);
334template < prototype_number NUMBER >
335inline millis operator /(const ::millis&
millis,
const NUMBER& number)
338 return (::i64) (
millis.m_i32 / number);
346inline ::i64 _first_milli();
347inline ::i64 _get_millis();
348inline ::f64 _millis() {
return _get_nanos() / 1'000'000.0; }
351inline ::millis first_milli() {
return _first_milli(); }
352inline ::millis get_millis() {
return _get_millis(); }
include "aura/graphics/image/context.h"
Definition aaaa__defer.h:32
Definition _structures.h:48