annotate src/samer/units/Stacker2.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
samer@0 1 /*
samer@0 2 * Copyright (c) 2000, Samer Abdallah, King's College London.
samer@0 3 * All rights reserved.
samer@0 4 *
samer@0 5 * This software is provided AS iS and WITHOUT ANY WARRANTY;
samer@0 6 * without even the implied warranty of MERCHANTABILITY or
samer@0 7 * FITNESS FOR A PARTICULAR PURPOSE.
samer@0 8 */
samer@0 9
samer@0 10 package samer.units;
samer@0 11 import samer.core.*;
samer@0 12 import samer.maths.*;
samer@0 13 import samer.tools.*;
samer@0 14
samer@0 15 /*
samer@0 16 * Takes successive input vectors and stacks them into
samer@0 17 * one big output vector. This version only stacks one
samer@0 18 * at new vector at a time and therefore does not need a
samer@0 19 * sub task to run to get new vectors.
samer@0 20 */
samer@0 21
samer@0 22 public class Stacker2 extends NullTask
samer@0 23 {
samer@0 24 Node node;
samer@0 25 Vec srcvec;
samer@0 26 VVector target;
samer@0 27 double [] a;
samer@0 28 int k0, k1, k2;
samer@0 29
samer@0 30 public Stacker2(Vec v, int size) { this(v,size,v.size()); }
samer@0 31 public Stacker2(Vec v, int size, int height)
samer@0 32 {
samer@0 33 node = new Node("stacker");
samer@0 34
samer@0 35 Shell.push(node);
samer@0 36 srcvec=v;
samer@0 37
samer@0 38 k0=height;
samer@0 39 k1=k0;
samer@0 40 k2=(size-1)*k0;
samer@0 41
samer@0 42 target = new VVector("output",k0*size);
samer@0 43 a = target.array();
samer@0 44 Mathx.zero(a);
samer@0 45
samer@0 46 Shell.pop();
samer@0 47 }
samer@0 48
samer@0 49 public void dispose() { target.dispose(); }
samer@0 50 public VVector output() { return target; }
samer@0 51
samer@0 52 public void run() {
samer@0 53 System.arraycopy(a,k1,a,0,k2); // make some room
samer@0 54 System.arraycopy(srcvec.array(),0,a,k2,k0); // copy new data in
samer@0 55 target.changed();
samer@0 56 }
samer@0 57 }