Skip to content

kaushalmodi/ptr_math

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pointer Arithmetic in Nim

https://github.com/kaushalmodi/ptr_math/actions/workflows/test.yml/badge.svg https://github.com/kaushalmodi/ptr_math/actions/workflows/docs.yml/badge.svg

This module implements basic pointer arithmetic functionality.

Documentation

https://kaushalmodi.github.io/ptr_math/

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.

About

Pointer arithmetic in Nim

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages