diff src/samer/units/SignalWindow.java @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/samer/units/SignalWindow.java	Tue Jan 17 17:50:20 2012 +0000
@@ -0,0 +1,39 @@
+package	samer.units;
+import	samer.tools.*;
+import	samer.maths.*;
+
+public class SignalWindow extends AnonymousTask
+{
+	Generator	gen;
+	VVector		output;
+	double		out[], buf[];
+	int			size, count;
+
+	public SignalWindow(Generator g, int size) {
+		this(g,size,size);
+	}
+
+	public SignalWindow(Generator g, int size, int step)
+	{
+		output=new VVector("signalBlock", size);
+		out=output.array();
+		buf=new double[step];
+		this.size=size;
+		gen=g;
+	}
+
+	public VVector	output() { return output; }
+	public void starting() { count=0; }
+	public void run() { buf[count++]=gen.next(); }
+	public void flush() {
+		System.arraycopy(out,count,out,0,size-count);
+		System.arraycopy(buf,0,out,size-count,count);
+		count=0;
+		output.changed();
+	}
+
+	public Task flushTask() { 
+		return new NullTask() { public void run() { flush(); } };
+	}
+}
+