2017-05-26 15:12:22 +02:00
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace org.budnhead
|
|
|
|
|
{
|
|
|
|
|
public interface IBufferedValue {
|
|
|
|
|
void buffer();
|
|
|
|
|
object getBufferedValue();
|
|
|
|
|
object getValue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class BufferedValueInstance<T> : IDisposable,IBufferedValue
|
|
|
|
|
{
|
|
|
|
|
static List<IBufferedValue> bufferedValues = new List<IBufferedValue>();
|
|
|
|
|
static public void cycle(){
|
2017-06-07 19:27:20 +02:00
|
|
|
|
Console.WriteLine(String.Format("cycling buffered values [{0}]",bufferedValues.Count));
|
2017-05-26 15:12:22 +02:00
|
|
|
|
foreach (IBufferedValue bvi in bufferedValues){
|
|
|
|
|
bvi.buffer();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
T value,bufferedValue;
|
|
|
|
|
|
|
|
|
|
public BufferedValueInstance(){
|
2017-06-07 19:27:20 +02:00
|
|
|
|
BufferedValueInstance<object>.bufferedValues.Add(this);
|
2017-05-26 15:12:22 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public BufferedValueInstance(T initialValue){
|
|
|
|
|
Value = initialValue;
|
2017-06-07 19:27:20 +02:00
|
|
|
|
BufferedValueInstance<object>.bufferedValues.Add(this);
|
2017-05-26 15:12:22 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public T Value {
|
|
|
|
|
get { return this.value; }
|
|
|
|
|
set { this.value = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public T BufferedValue{
|
|
|
|
|
get { return this.bufferedValue; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose(){
|
2017-06-07 19:27:20 +02:00
|
|
|
|
BufferedValueInstance<object>.bufferedValues.Remove(this);
|
2017-05-26 15:12:22 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void buffer(){
|
|
|
|
|
this.bufferedValue = this.value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public object getBufferedValue()
|
|
|
|
|
{
|
|
|
|
|
return this.bufferedValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public object getValue()
|
|
|
|
|
{
|
|
|
|
|
return this.value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|