nim-ranges/ranges/ptr_arith.nim
2018-03-26 16:17:22 +03:00

8 lines
276 B
Nim

proc baseAddr*[T](x: openarray[T]): pointer = cast[pointer](x)
proc shift*(p: pointer, delta: int): pointer {.inline.} =
cast[pointer](cast[int](p) + delta)
proc shift*[T](p: ptr T, delta: int): ptr T {.inline.} =
cast[ptr T](shift(cast[pointer](p), delta * sizeof(T)))