mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-06 18:54:12 +00:00
Fixed time.precise_clock
This commit is contained in:
@@ -344,11 +344,32 @@ Obtain the time components from a time, a duration or a stopwatch's total.
|
||||
*/
|
||||
clock :: proc { clock_from_time, clock_from_duration, clock_from_stopwatch }
|
||||
|
||||
/*
|
||||
Obtain the time components from a time, a duration or a stopwatch's total, including nanoseconds.
|
||||
*/
|
||||
precise_clock :: proc { precise_clock_from_time, precise_clock_from_duration, precise_clock_from_stopwatch }
|
||||
|
||||
/*
|
||||
Obtain the time components from a time.
|
||||
*/
|
||||
clock_from_time :: proc "contextless" (t: Time) -> (hour, min, sec: int) {
|
||||
return clock_from_seconds(_time_abs(t))
|
||||
hour, min, sec, _ = precise_clock_from_time(t)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
Obtain the time components from a time, including nanoseconds.
|
||||
*/
|
||||
precise_clock_from_time :: proc "contextless" (t: Time) -> (hour, min, sec, nanos: int) {
|
||||
// Time in nanoseconds since 1-1-1970 00:00
|
||||
sec, nanos = int(t._nsec) / 1e9, int(t._nsec) % 1e9
|
||||
sec += int(INTERNAL_TO_ABSOLUTE)
|
||||
sec = sec % SECONDS_PER_DAY
|
||||
hour = sec / SECONDS_PER_HOUR
|
||||
sec -= hour * SECONDS_PER_HOUR
|
||||
min = sec / SECONDS_PER_MINUTE
|
||||
sec -= min * SECONDS_PER_MINUTE
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -358,6 +379,13 @@ clock_from_duration :: proc "contextless" (d: Duration) -> (hour, min, sec: int)
|
||||
return clock_from_seconds(u64(d/1e9))
|
||||
}
|
||||
|
||||
/*
|
||||
Obtain the time components from a duration, including nanoseconds.
|
||||
*/
|
||||
precise_clock_from_duration :: proc "contextless" (d: Duration) -> (hour, min, sec, nanos: int) {
|
||||
return precise_clock_from_time({_nsec=i64(d)})
|
||||
}
|
||||
|
||||
/*
|
||||
Obtain the time components from a stopwatch's total.
|
||||
*/
|
||||
@@ -365,11 +393,18 @@ clock_from_stopwatch :: proc "contextless" (s: Stopwatch) -> (hour, min, sec: in
|
||||
return clock_from_duration(stopwatch_duration(s))
|
||||
}
|
||||
|
||||
/*
|
||||
Obtain the time components from a stopwatch's total, including nanoseconds
|
||||
*/
|
||||
precise_clock_from_stopwatch :: proc "contextless" (s: Stopwatch) -> (hour, min, sec, nanos: int) {
|
||||
return precise_clock_from_duration(stopwatch_duration(s))
|
||||
}
|
||||
|
||||
/*
|
||||
Obtain the time components from the number of seconds.
|
||||
*/
|
||||
clock_from_seconds :: proc "contextless" (nsec: u64) -> (hour, min, sec: int) {
|
||||
sec = int(nsec % SECONDS_PER_DAY)
|
||||
clock_from_seconds :: proc "contextless" (in_sec: u64) -> (hour, min, sec: int) {
|
||||
sec = int(in_sec % SECONDS_PER_DAY)
|
||||
hour = sec / SECONDS_PER_HOUR
|
||||
sec -= hour * SECONDS_PER_HOUR
|
||||
min = sec / SECONDS_PER_MINUTE
|
||||
|
||||
Reference in New Issue
Block a user