Pointer arithmetic example in Nim (int16)

Run Settings
LanguageNim
Language Version
Run Command
var a: ptr int16
var t = @[1.int16, 2.int16, 3.int16]
proc `+`[T](a: ptr T, b: int): ptr T =
if b >= 0:
cast[ptr T](cast[uint](a) + cast[uint](b * a[].sizeof))
else:
cast[ptr T](cast[uint](a) - cast[uint](-1 * b * a[].sizeof))
template `-`[T](a: ptr T, b: int): ptr T = `+`(a, -b)
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Editor Settings
Theme
Key bindings
Full width
Lines