summary refs log tree commit diff stats
path: root/tests/concepts/matrix.nim
blob: 47a709f809e8b2cea21447d8d5428a28e9fb1787 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  Matrix*[M, N: static[int]; T] = object
    data: array[M*N, T]

proc `[]`*(M: Matrix; m, n: int): M.T =
  M.data[m * M.N + n]

proc `[]=`*(M: var Matrix; m, n: int; v: M.T) =
  M.data[m * M.N + n] = v

# Adapt the Matrix type to the concept's requirements
template Rows*(M: type Matrix): untyped = M.M
template Cols*(M: type Matrix): untyped = M.N
template ValueType*(M: type Matrix): typedesc = M.T