mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-29 09:24:33 +00:00
40 lines
661 B
Odin
40 lines
661 B
Odin
package time
|
|
|
|
Tick :: struct {
|
|
_nsec: i64, // relative amount
|
|
}
|
|
|
|
tick_now :: proc() -> Tick {
|
|
return _tick_now();
|
|
}
|
|
|
|
tick_diff :: proc(start, end: Tick) -> Duration {
|
|
d := end._nsec - start._nsec;
|
|
return Duration(d);
|
|
}
|
|
|
|
tick_lap_time :: proc(prev: ^Tick) -> Duration {
|
|
d: Duration;
|
|
t := tick_now();
|
|
if prev._nsec != 0 {
|
|
d = tick_diff(prev^, t);
|
|
}
|
|
prev^ = t;
|
|
return d;
|
|
}
|
|
|
|
tick_since :: proc(start: Tick) -> Duration {
|
|
return tick_diff(start, tick_now());
|
|
}
|
|
|
|
|
|
@(deferred_in_out=_tick_duration_end)
|
|
SCOPED_TICK_DURATION :: proc(d: ^Duration) -> Tick {
|
|
return tick_now();
|
|
}
|
|
|
|
|
|
_tick_duration_end :: proc(d: ^Duration, t: Tick) {
|
|
d^ = tick_since(t);
|
|
}
|