Skip to content

Instantly share code, notes, and snippets.

@Deco
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Deco/9b249f8de80d07dfe4c6 to your computer and use it in GitHub Desktop.
Save Deco/9b249f8de80d07dfe4c6 to your computer and use it in GitHub Desktop.
{.experimental.}
type arrayUnchecked {.unchecked.} [T] = array[0..0, T]
type MatD[ElementT] = object
n: int
m: int
data: ptr arrayUnchecked[ElementT]
template matD(nv,mv: int, elementT: typedesc = float64): expr =
let size = nv*mv
let memPtr = alloc0(nv*mv*sizeof(elementT))
let arrayPtr = cast[ptr array[0..0, elementT]](memPtr)
MatD[elementT](n: nv, m: mv, data: arrayPtr)
template `[]=`*[ElementT](mat: MatD[ElementT], index: int, value: expr) =
mat.data[index] = value
template `[]`*[ElementT](mat: MatD[ElementT], index: int): expr =
mat.data[index]
if true:
var a = matD(4, 4)
a[0] = 22
echo a[0]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment