[[https://github.com/kaushalmodi/ptr_math/actions/workflows/test.yml][https://github.com/kaushalmodi/ptr_math/actions/workflows/test.yml/badge.svg]] [[https://github.com/kaushalmodi/ptr_math/actions/workflows/docs.yml][https://github.com/kaushalmodi/ptr_math/actions/workflows/docs.yml/badge.svg]]
This module implements basic pointer arithmetic functionality.
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]}"
Development Requirement This library is tested using Nim /devel/ version. The version was 1.5.1 as of writing this on <2021-06-03 Thu>. Prep 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
~
nim test
** Generate doc
Create the HTML page and associated search index in ~
nim docs
Credit Most of the code in this library is from [[https://forum.nim-lang.org/t/1188#7366][this code snippet]] authored by Nim Forum user /Jehan/.