From edd9ca70d1b3c1f848f6685418742f2be9002b63 Mon Sep 17 00:00:00 2001 From: Bill Allen Date: Sun, 10 Feb 2008 14:10:03 -0500 Subject: [PATCH] getPut implemented in ringbuffer and test --- com/wha/modsynth/RingBuffer.scala | 4 ++-- com/wha/modsynth_test/TestRingBuffer.scala | 31 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/com/wha/modsynth/RingBuffer.scala b/com/wha/modsynth/RingBuffer.scala index 250f525..eebe2c4 100644 --- a/com/wha/modsynth/RingBuffer.scala +++ b/com/wha/modsynth/RingBuffer.scala @@ -10,8 +10,8 @@ abstract class RingBuffer[A] (size: Int) { var N = size var elems = new Array[A](N) - def getPut(pf:(Unit => A), gf:(Unit => A)): A = { - val x = gf(get) + def getPut(pf:(A => A)): A = { + val x = get put(pf(x)) x } diff --git a/com/wha/modsynth_test/TestRingBuffer.scala b/com/wha/modsynth_test/TestRingBuffer.scala index a49514c..62a7db6 100644 --- a/com/wha/modsynth_test/TestRingBuffer.scala +++ b/com/wha/modsynth_test/TestRingBuffer.scala @@ -14,20 +14,21 @@ object TestRingBuffer { }, delay) // in milliseconds - def main(args: Array[String]) { - val buf = new FloatRingBuffer(100) - var cnt = 100.0f - def produceString = { cnt } - def consumeString(ss: Float) = println(ss) - spawn { - while (true) { - val sig = 100.0f - val fx = buf.get - println (sig + fx * 0.5) - buf.put(sig + fx * 0.1f) - } - } - kill(100) - } + def computePut(sig: Float)(x: Float): Float = { + sig + x * 0.1f + } + + def main(args: Array[String]) { + val buf = new FloatRingBuffer(100) + var cnt = 100.0f + def produceString = { cnt } + def consumeString(ss: Float) = println(ss) + List.range(1, 1000).foreach(x => { + val sig = 100.0f + val fput = computePut(sig)_ + val fx = buf.getPut(fput) + println(sig + fx * 0.5f) + }) + } } -- 2.11.4.GIT