public virtual void SetValue(int i)
{
switch (ValueType)
{
case DataValueType.HalfByte:
data.SetValue(valueIndex, Wla.ToHalfByte((byte)i));
break;
case DataValueType.Byte:
case DataValueType.WarpDestIndex:
default:
data.SetByteValue(valueIndex, (byte)i);
break;
case DataValueType.Word:
data.SetWordValue(valueIndex, i);
break;
case DataValueType.ByteBits:
case DataValueType.WordBits:
{
int andValue = ((1 << (endBit - startBit + 1)) - 1);
int value = data.GetIntValue(valueIndex) & (~(andValue << startBit));
value |= ((i & andValue) << startBit);
if (ValueType == DataValueType.ByteBits)
{
data.SetByteValue(valueIndex, (byte)value);
}
else
{
data.SetWordValue(valueIndex, value);
}
}
break;
case DataValueType.ByteBit:
{
int value = data.GetIntValue(valueIndex) & ~(1 << startBit);
value |= ((i & 1) << startBit);
data.SetByteValue(valueIndex, (byte)value);
}
break;
}
}