9 # error This is a userspace-only header, not allowed by the current build.
12 #include <sifteo/macros.h>
13 #include <sifteo/abi.h>
49 TimeDelta(
double sec) : mMilli(sec * 1e3) {}
80 return mMilli * (int64_t)1000000;
106 return mMilli / duration.mMilli;
124 unsigned f =
frames(duration);
126 mMilli -= duration.mMilli * f;
155 friend class SystemTime;
161 inline bool operator== (TimeDelta a, TimeDelta b) {
return a.milliseconds() == b.milliseconds(); }
162 inline bool operator!= (TimeDelta a, TimeDelta b) {
return a.milliseconds() != b.milliseconds(); }
163 inline bool operator< (TimeDelta a, TimeDelta b) {
return a.milliseconds() < b.milliseconds(); }
164 inline bool operator> (TimeDelta a, TimeDelta b) {
return a.milliseconds() > b.milliseconds(); }
165 inline bool operator<= (TimeDelta a, TimeDelta b) {
return a.milliseconds() <= b.milliseconds(); }
166 inline bool operator>= (TimeDelta a, TimeDelta b) {
return a.milliseconds() >= b.milliseconds(); }
168 inline bool operator== (TimeDelta a,
float b) {
return a.milliseconds() == TimeDelta(b).milliseconds(); }
169 inline bool operator!= (TimeDelta a,
float b) {
return a.milliseconds() != TimeDelta(b).milliseconds(); }
170 inline bool operator< (TimeDelta a,
float b) {
return a.milliseconds() < TimeDelta(b).milliseconds(); }
171 inline bool operator> (TimeDelta a,
float b) {
return a.milliseconds() > TimeDelta(b).milliseconds(); }
172 inline bool operator<= (TimeDelta a,
float b) {
return a.milliseconds() <= TimeDelta(b).milliseconds(); }
173 inline bool operator>= (TimeDelta a,
float b) {
return a.milliseconds() >= TimeDelta(b).milliseconds(); }
175 inline bool operator== (
float a, TimeDelta b) {
return TimeDelta(a).milliseconds() == b.milliseconds(); }
176 inline bool operator!= (
float a, TimeDelta b) {
return TimeDelta(a).milliseconds() != b.milliseconds(); }
177 inline bool operator< (
float a, TimeDelta b) {
return TimeDelta(a).milliseconds() < b.milliseconds(); }
178 inline bool operator> (
float a, TimeDelta b) {
return TimeDelta(a).milliseconds() > b.milliseconds(); }
179 inline bool operator<= (
float a, TimeDelta b) {
return TimeDelta(a).milliseconds() <= b.milliseconds(); }
180 inline bool operator>= (
float a, TimeDelta b) {
return TimeDelta(a).milliseconds() >= b.milliseconds(); }
182 inline bool operator== (TimeDelta a,
double b) {
return a.milliseconds() == TimeDelta(b).milliseconds(); }
183 inline bool operator!= (TimeDelta a,
double b) {
return a.milliseconds() != TimeDelta(b).milliseconds(); }
184 inline bool operator< (TimeDelta a,
double b) {
return a.milliseconds() < TimeDelta(b).milliseconds(); }
185 inline bool operator> (TimeDelta a,
double b) {
return a.milliseconds() > TimeDelta(b).milliseconds(); }
186 inline bool operator<= (TimeDelta a,
double b) {
return a.milliseconds() <= TimeDelta(b).milliseconds(); }
187 inline bool operator>= (TimeDelta a,
double b) {
return a.milliseconds() >= TimeDelta(b).milliseconds(); }
189 inline bool operator== (
double a, TimeDelta b) {
return TimeDelta(a).milliseconds() == b.milliseconds(); }
190 inline bool operator!= (
double a, TimeDelta b) {
return TimeDelta(a).milliseconds() != b.milliseconds(); }
191 inline bool operator< (
double a, TimeDelta b) {
return TimeDelta(a).milliseconds() < b.milliseconds(); }
192 inline bool operator> (
double a, TimeDelta b) {
return TimeDelta(a).milliseconds() > b.milliseconds(); }
193 inline bool operator<= (
double a, TimeDelta b) {
return TimeDelta(a).milliseconds() <= b.milliseconds(); }
194 inline bool operator>= (
double a, TimeDelta b) {
return TimeDelta(a).milliseconds() >= b.milliseconds(); }
196 inline TimeDelta operator+ (TimeDelta a, TimeDelta b) {
return TimeDelta::fromMillisec(a.milliseconds() + b.milliseconds()); }
197 inline TimeDelta operator- (TimeDelta a, TimeDelta b) {
return TimeDelta::fromMillisec(a.milliseconds() - b.milliseconds()); }
209 inline float operator+= (
float &a, TimeDelta b) {
return a += b.
seconds(); }
210 inline float operator-= (
float &a, TimeDelta b) {
return a -= b.seconds(); }
268 return mTicks >
now().mTicks;
275 return mTicks <
now().mTicks;
291 return mTicks / (uint64_t)1000;
299 return mTicks / (uint64_t)1000000;
308 return mTicks * 1e-9;
355 return TimeDelta((int32_t)(diff / 1000000));
359 SystemTime &operator-= (
const TimeDelta &rhs) { mTicks -= rhs.nanoseconds();
return *
this; }
369 inline bool operator== (SystemTime a, SystemTime b) {
return a.uptimeNS() == b.uptimeNS(); }
370 inline bool operator!= (SystemTime a, SystemTime b) {
return a.uptimeNS() != b.uptimeNS(); }
371 inline bool operator< (SystemTime a, SystemTime b) {
return a.uptimeNS() < b.uptimeNS(); }
372 inline bool operator> (SystemTime a, SystemTime b) {
return a.uptimeNS() > b.uptimeNS(); }
373 inline bool operator<= (SystemTime a, SystemTime b) {
return a.uptimeNS() <= b.uptimeNS(); }
374 inline bool operator>= (SystemTime a, SystemTime b) {
return a.uptimeNS() >= b.uptimeNS(); }
376 inline SystemTime operator+ (TimeDelta a, SystemTime b) {
return b + a; }
377 inline SystemTime operator- (TimeDelta a, SystemTime b) {
return b - a; }
395 TimeStep() : mPrevTime(), mDelta(0.0) {}
429 return mPrevTime - mDelta;
446 mDelta = now - mPrevTime;
478 TimeTicker() : mRemainder(0.0f), mPeriod(0.0) {}
485 void setRate(
float hz) {