changeset 17:e2c834980152

Experiment with making double[] vectors tagged types (to increase opacity)
author Chris Cannam
date Mon, 17 Dec 2012 12:47:08 +0000
parents e8d404787c35
children 12c6f103ba8e
files block.yeti
diffstat 1 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/block.yeti	Mon Dec 17 12:47:08 2012 +0000
@@ -0,0 +1,41 @@
+module block;
+
+import java.util: Arrays;
+
+zeros n = 
+    Block new double[n];
+
+deblock b is (Block ~double[]) -> ~double[] =
+    case b of Block a: a esac;
+
+ones n = 
+   (v = deblock (zeros n);
+    for [0..n-1] do i: v[i] := 1.0 done;
+    Block v);
+
+block l is list?<number> -> (Block ~double[]) =
+   (arr = array(l);
+    len = length arr;
+    v = deblock (zeros len);
+    for [0..len-1] do i: v[i] := arr[i] done;
+    Block v);
+
+arrayWrap b is (Block ~double[]) -> array<number> =
+    array(deblock b);
+
+blockLength b = 
+    length (arrayWrap b);
+
+copyOfBlock b is (Block ~double[]) -> (Block ~double[]) = 
+   (v = deblock b;
+    Block Arrays#copyOf(v, length(arrayWrap b)));
+
+subBlock b start len is (Block ~double[]) -> number -> number -> (Block ~double[]) = 
+    Block Arrays#copyOfRange(deblock b, start, start + len);
+
+{
+zeros, ones, block,
+blockLength,
+copyOfBlock, subBlock,
+}
+