public override void SetValue(int i)
{
stream.Seek(valueIndex, SeekOrigin.Begin);
switch(ValueType) {
case DataValueType.Byte:
default:
stream.WriteByte((byte)i);
break;
case DataValueType.Word:
stream.WriteByte((byte)(i&0xff));
stream.WriteByte((byte)(i>>8));
break;
case DataValueType.ByteBits:
{
int andValue = ((1<<(endBit-startBit+1))-1);
int value = stream.ReadByte() & (~(andValue<<startBit));
value |= ((i&andValue)<<startBit);
stream.Seek(valueIndex, SeekOrigin.Begin);
stream.WriteByte((byte)value);
}
break;
case DataValueType.ByteBit:
{
int value = stream.ReadByte() & ~(1<<startBit);
value |= ((i&1)<<startBit);
stream.Seek(valueIndex, SeekOrigin.Begin);
stream.WriteByte((byte)value);
}
break;
}
}