sead
Loading...
Searching...
No Matches
seadTickSpan.h
Go to the documentation of this file.
1#ifndef SEAD_TICK_SPAN_H_
2#define SEAD_TICK_SPAN_H_
3
4#include <basis/seadAssert.h>
5#include <basis/seadTypes.h>
6
7#include <climits>
8
9namespace sead {
10
12{
13public:
15 : mSpan(0)
16 {
17 }
18
19 TickSpan(s64 tick)
20 : mSpan(tick)
21 {
22 }
23
24 s64 toS64() const
25 {
26 return mSpan;
27 }
28
30
31 // TODO
34 s64 toSeconds() const;
35
36 void setTicks(s64 tick)
37 {
38 mSpan = tick;
39 }
40
42
43 void setMicroSeconds(s64 usec)
44 {
45 SEAD_ASSERT(LLONG_MIN / cFrequency <= mSpan && mSpan < LLONG_MAX / cFrequency);
46 mSpan = usec * cFrequency / 1000 / 1000;
47 }
48
49 void setMilliSeconds(s64 msec)
50 {
51 SEAD_ASSERT(LLONG_MIN / cFrequency <= mSpan && mSpan < LLONG_MAX / cFrequency);
52 mSpan = msec * cFrequency / 1000;
53 }
54
55 void setSeconds(s64 sec)
56 {
57 mSpan = sec * cFrequency;
58 }
59
61 {
62 mSpan += rhs.mSpan;
63 return *this;
64 }
65
67 {
68 mSpan -= rhs.mSpan;
69 return *this;
70 }
71
72 const TickSpan& operator*=(f32 s)
73 {
74 mSpan *= s64(s);
75 return *this;
76 }
77
78 const TickSpan& operator/=(f32 s)
79 {
80 mSpan /= s64(s);
81 return *this;
82 }
83
85 {
86 TickSpan span;
87 span.setNanoSeconds(nsec);
88 return span;
89 }
90
92 {
93 TickSpan span;
94 span.setMicroSeconds(usec);
95 return span;
96 }
97
99 {
100 TickSpan span;
101 span.setMilliSeconds(msec);
102 return span;
103 }
104
105 static TickSpan makeFromSeconds(s64 sec)
106 {
107 TickSpan span;
108 span.setSeconds(sec);
109 return span;
110 }
111
112private:
114
115 static const s64 cFrequency;
116};
117#ifdef cafe
118static_assert(sizeof(TickSpan) == 8, "sead::TickSpan size mismatch");
119#endif // cafe
120
121} // namespace sead
122
123#endif // SEAD_TICK_SPAN_H_
Definition seadTickSpan.h:12
static TickSpan makeFromMicroSeconds(s64 usec)
Definition seadTickSpan.h:91
const TickSpan & operator+=(TickSpan rhs)
Definition seadTickSpan.h:60
void setMilliSeconds(s64 msec)
Definition seadTickSpan.h:49
static TickSpan makeFromSeconds(s64 sec)
Definition seadTickSpan.h:105
const TickSpan & operator*=(f32 s)
Definition seadTickSpan.h:72
s64 toMilliSeconds() const
void setMicroSeconds(s64 usec)
Definition seadTickSpan.h:43
static TickSpan makeFromMilliSeconds(s64 msec)
Definition seadTickSpan.h:98
s64 toNanoSeconds() const
TickSpan()
Definition seadTickSpan.h:14
s64 toS64() const
Definition seadTickSpan.h:24
static const s64 cFrequency
Definition seadTickSpan.h:115
const TickSpan & operator/=(f32 s)
Definition seadTickSpan.h:78
void setNanoSeconds(s64)
void setTicks(s64 tick)
Definition seadTickSpan.h:36
void setSeconds(s64 sec)
Definition seadTickSpan.h:55
s64 toSeconds() const
s64 toMicroSeconds() const
s64 mSpan
Definition seadTickSpan.h:113
static TickSpan makeFromNanoSeconds(s64 nsec)
Definition seadTickSpan.h:84
const TickSpan & operator-=(TickSpan rhs)
Definition seadTickSpan.h:66
TickSpan(s64 tick)
Definition seadTickSpan.h:19
Definition seadAssert.h:44
#define SEAD_ASSERT(condition)
Definition seadAssert.h:24