This module implements basic pointer arithmetic functionality.
https://kaushalmodi.github.io/ptr_math/
nimble install ptr_math
import std/[strformat]
import ptr_math
var
a: array[0 .. 3, int]
p = addr(a[0]) # p is pointing to a[0]
for i, _ in a:
a[i] += i
echo &"before : a = {a}"
p += 1 # p is now pointing to a[1]
p[] = 100 # p[] is accessing the contents of a[1]
echo &"after p += 1; p[] = 100 : a = {a}"
p[0] = 200 # .. so does p[0]
echo &"after p[0] = 200 : a = {a}"
p[1] -= 2 # p[1] is accessing the contents of a[2]
echo &"after p[1] -= 2 : a = {a}"
p[2] += 50 # p[2] is accessing the contents of a[3]
echo &"after p[2] += 50 : a = {a}"
p += 2 # p is now pointing to a[3]
p[-1] += 77 # p[-1] is accessing the contents of a[2]
echo &"after p += 2; p[-1] += 77 : a = {a}"
echo &"a[0] = p[-3] = {p[-3]}"
echo &"a[1] = p[-2] = {p[-2]}"
echo &"a[2] = p[-1] = {p[-1]}"
echo &"a[3] = p[0] = {p[0]}"
This library is tested using Nim devel version. The version was 1.5.1 as of writing this on <2021-06-03 Thu>.
Once you clone this repo, cd to the cloned directory and run the below command first (before you execute any of the below “nim” commands):
nim pullConfig
This will clone my global config.nims
file into a
<repo>/nim_config/
directory. That will enable running the nim
test
and nim docs
commands.
nim test
Create the HTML page and associated search index in <repo>/public/
.
nim docs
Most of the code in this library is from this code snippet authored by Nim Forum user Jehan.