mirror of
https://github.com/kaushalmodi/ptr_math
synced 2026-01-14 19:51:46 +00:00
No description
| .github/workflows | ||
| src | ||
| tests | ||
| .gitignore | ||
| config.nims | ||
| LICENSE | ||
| ptr_math.nimble | ||
| README.org | ||
Pointer Arithmetic in Nim
This module implements basic pointer arithmetic functionality.
Documentation
Installation
nimble install ptr_math
Quick Start
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
<repo>/nim_config/ directory. That will enable running the nim
test and nim docs commands.
Testing
nim test
Generate doc
Create the HTML page and associated search index in <repo>/public/.
nim docs
Credit
Most of the code in this library is from this code snippet authored by Nim Forum user Jehan.