summary refs log tree commit diff stats
path: root/tests/concepts/matrix.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/concepts/matrix.nim')
-rw-r--r--tests/concepts/matrix.nim14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/concepts/matrix.nim b/tests/concepts/matrix.nim
new file mode 100644
index 000000000..47a709f80
--- /dev/null
+++ b/tests/concepts/matrix.nim
@@ -0,0 +1,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