lib/system/g-w - Dropped 'T' from types
This commit is contained in:
parent
ff5b446dfc
commit
2ca90a20a1
13 changed files with 426 additions and 396 deletions
|
|
@ -11,83 +11,86 @@
|
|||
## `<https://github.com/jckarter/clay/blob/master/compiler/src/hirestimer.cpp>`_
|
||||
|
||||
type
|
||||
TTicks = distinct int64
|
||||
TNanos = int64
|
||||
Ticks = distinct int64
|
||||
Nanos = int64
|
||||
{.deprecated: [TTicks: Ticks, TNanos: Nanos].}
|
||||
|
||||
when defined(windows):
|
||||
|
||||
proc QueryPerformanceCounter(res: var TTicks) {.
|
||||
proc QueryPerformanceCounter(res: var Ticks) {.
|
||||
importc: "QueryPerformanceCounter", stdcall, dynlib: "kernel32".}
|
||||
proc QueryPerformanceFrequency(res: var int64) {.
|
||||
importc: "QueryPerformanceFrequency", stdcall, dynlib: "kernel32".}
|
||||
|
||||
proc getTicks(): TTicks {.inline.} =
|
||||
proc getTicks(): Ticks {.inline.} =
|
||||
QueryPerformanceCounter(result)
|
||||
|
||||
proc `-`(a, b: TTicks): TNanos =
|
||||
proc `-`(a, b: Ticks): Nanos =
|
||||
var frequency: int64
|
||||
QueryPerformanceFrequency(frequency)
|
||||
var performanceCounterRate = 1e+9'f64 / float64(frequency)
|
||||
|
||||
result = TNanos(float64(a.int64 - b.int64) * performanceCounterRate)
|
||||
result = Nanos(float64(a.int64 - b.int64) * performanceCounterRate)
|
||||
|
||||
elif defined(macosx):
|
||||
type
|
||||
TMachTimebaseInfoData {.pure, final,
|
||||
MachTimebaseInfoData {.pure, final,
|
||||
importc: "mach_timebase_info_data_t",
|
||||
header: "<mach/mach_time.h>".} = object
|
||||
numer, denom: int32
|
||||
{.deprecated: [TMachTimebaseInfoData: MachTimebaseInfoData].}
|
||||
|
||||
proc mach_absolute_time(): int64 {.importc, header: "<mach/mach.h>".}
|
||||
proc mach_timebase_info(info: var TMachTimebaseInfoData) {.importc,
|
||||
proc mach_timebase_info(info: var MachTimebaseInfoData) {.importc,
|
||||
header: "<mach/mach_time.h>".}
|
||||
|
||||
proc getTicks(): TTicks {.inline.} =
|
||||
result = TTicks(mach_absolute_time())
|
||||
proc getTicks(): Ticks {.inline.} =
|
||||
result = Ticks(mach_absolute_time())
|
||||
|
||||
var timeBaseInfo: TMachTimebaseInfoData
|
||||
var timeBaseInfo: MachTimebaseInfoData
|
||||
mach_timebase_info(timeBaseInfo)
|
||||
|
||||
proc `-`(a, b: TTicks): TNanos =
|
||||
proc `-`(a, b: Ticks): Nanos =
|
||||
result = (a.int64 - b.int64) * timeBaseInfo.numer div timeBaseInfo.denom
|
||||
|
||||
elif defined(posixRealtime):
|
||||
type
|
||||
TClockid {.importc: "clockid_t", header: "<time.h>", final.} = object
|
||||
Clockid {.importc: "clockid_t", header: "<time.h>", final.} = object
|
||||
|
||||
TTimeSpec {.importc: "struct timespec", header: "<time.h>",
|
||||
TimeSpec {.importc: "struct timespec", header: "<time.h>",
|
||||
final, pure.} = object ## struct timespec
|
||||
tv_sec: int ## Seconds.
|
||||
tv_nsec: int ## Nanoseconds.
|
||||
{.deprecated: [TClockid: Clickid, TTimeSpec: TimeSpec].}
|
||||
|
||||
var
|
||||
CLOCK_REALTIME {.importc: "CLOCK_REALTIME", header: "<time.h>".}: TClockid
|
||||
CLOCK_REALTIME {.importc: "CLOCK_REALTIME", header: "<time.h>".}: Clockid
|
||||
|
||||
proc clock_gettime(clkId: TClockid, tp: var TTimespec) {.
|
||||
proc clock_gettime(clkId: Clockid, tp: var Timespec) {.
|
||||
importc: "clock_gettime", header: "<time.h>".}
|
||||
|
||||
proc getTicks(): TTicks =
|
||||
var t: TTimespec
|
||||
proc getTicks(): Ticks =
|
||||
var t: Timespec
|
||||
clock_gettime(CLOCK_REALTIME, t)
|
||||
result = TTicks(int64(t.tv_sec) * 1000000000'i64 + int64(t.tv_nsec))
|
||||
result = Ticks(int64(t.tv_sec) * 1000000000'i64 + int64(t.tv_nsec))
|
||||
|
||||
proc `-`(a, b: TTicks): TNanos {.borrow.}
|
||||
proc `-`(a, b: Ticks): Nanos {.borrow.}
|
||||
|
||||
else:
|
||||
# fallback Posix implementation:
|
||||
type
|
||||
Ttimeval {.importc: "struct timeval", header: "<sys/select.h>",
|
||||
Timeval {.importc: "struct timeval", header: "<sys/select.h>",
|
||||
final, pure.} = object ## struct timeval
|
||||
tv_sec: int ## Seconds.
|
||||
tv_usec: int ## Microseconds.
|
||||
|
||||
proc posix_gettimeofday(tp: var Ttimeval, unused: pointer = nil) {.
|
||||
{.deprecated: [Ttimeval: Timeval].}
|
||||
proc posix_gettimeofday(tp: var Timeval, unused: pointer = nil) {.
|
||||
importc: "gettimeofday", header: "<sys/time.h>".}
|
||||
|
||||
proc getTicks(): TTicks =
|
||||
var t: Ttimeval
|
||||
proc getTicks(): Ticks =
|
||||
var t: Timeval
|
||||
posix_gettimeofday(t)
|
||||
result = TTicks(int64(t.tv_sec) * 1000_000_000'i64 +
|
||||
result = Ticks(int64(t.tv_sec) * 1000_000_000'i64 +
|
||||
int64(t.tv_usec) * 1000'i64)
|
||||
|
||||
proc `-`(a, b: TTicks): TNanos {.borrow.}
|
||||
proc `-`(a, b: Ticks): Nanos {.borrow.}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue