nim-stew/stew/ranges/ptr_arith.nim

23 lines
797 B
Nim
Raw Normal View History

2019-09-20 16:01:32 +02:00
import ../ptrops
export ptrops
2021-12-02 16:24:02 +01:00
proc baseAddr*[T](x: openArray[T]): pointer = cast[pointer](x)
2019-07-06 20:45:27 +02:00
2019-07-31 02:31:56 +03:00
# Please note that we use templates here on purpose.
# As much as I believe in the power of optimizing compilers, it turned
# out that the use of forced inlining with templates still creates a
# significant difference in the release builds of nim-faststreams
2019-09-20 16:01:32 +02:00
template shift*(p: pointer, delta: int): pointer {.deprecated: "use ptrops".} =
p.offset(delta)
2019-07-06 20:45:27 +02:00
2019-09-20 16:01:32 +02:00
template shift*[T](p: ptr T, delta: int): ptr T {.deprecated: "use ptrops".} =
p.offset(delta)
template makeOpenArray*[T](p: ptr T, len: Natural): auto =
toOpenArray(cast[ptr UncheckedArray[T]](p), 0, len - 1)
2019-07-06 20:45:27 +02:00
template makeOpenArray*(p: pointer, T: type, len: Natural): auto =
toOpenArray(cast[ptr UncheckedArray[T]](p), 0, len - 1)
2019-07-06 20:45:27 +02:00