budnhead/org.budnhead/core/BufferedValue.cs

62 lines
1.0 KiB
C#

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(){
foreach (IBufferedValue bvi in bufferedValues){
bvi.buffer();
}
}
T value,bufferedValue;
public BufferedValueInstance(){
bufferedValues.Add(this);
}
public BufferedValueInstance(T initialValue){
Value = initialValue;
bufferedValues.Add(this);
}
public T Value {
get { return this.value; }
set { this.value = value; }
}
public T BufferedValue{
get { return this.bufferedValue; }
}
public void Dispose(){
bufferedValues.Remove(this);
}
public void buffer(){
this.bufferedValue = this.value;
}
public object getBufferedValue()
{
return this.bufferedValue;
}
public object getValue()
{
return this.value;
}
}
}