protected int ReadInt(int offset, VDType.VDTypeCode c) { switch (c) { case VDType.VDTypeCode.int8: return(d[offset]); case VDType.VDTypeCode.sint8: return((sbyte)d[offset]); case VDType.VDTypeCode.sint16_LSB: case VDType.VDTypeCode.sint16_LSB_MSB: return(BitConverter.ToInt16(d, offset)); case VDType.VDTypeCode.sint32_LSB: case VDType.VDTypeCode.sint32_LSB_MSB: return(BitConverter.ToInt32(d, offset)); case VDType.VDTypeCode.int16_LSB: case VDType.VDTypeCode.int16_LSB_MSB: return(BitConverter.ToUInt16(d, offset)); case VDType.VDTypeCode.int32_LSB: case VDType.VDTypeCode.int32_LSB_MSB: return((int)BitConverter.ToUInt32(d, offset)); default: throw new NotImplementedException(); } }
protected void AddIntEntry(string tag, VDType.VDTypeCode c) { int len = 0; switch (c) { case VDType.VDTypeCode.int8: case VDType.VDTypeCode.sint8: len = 1; break; case VDType.VDTypeCode.int16_LSB: case VDType.VDTypeCode.int16_MSB: case VDType.VDTypeCode.sint16_LSB: case VDType.VDTypeCode.sint16_MSB: len = 2; break; case VDType.VDTypeCode.int32_LSB: case VDType.VDTypeCode.int32_MSB: case VDType.VDTypeCode.sint32_LSB: case VDType.VDTypeCode.sint32_MSB: case VDType.VDTypeCode.int16_LSB_MSB: case VDType.VDTypeCode.sint16_LSB_MSB: len = 4; break; case VDType.VDTypeCode.int32_LSB_MSB: case VDType.VDTypeCode.sint32_LSB_MSB: len = 8; break; default: throw new NotSupportedException(); } var e = new VDType { Offset = cur_entry, Code = c, Length = len }; entries[tag] = e; cur_entry += len; }
protected void WriteInt(int offset, VDType.VDTypeCode c, int v) { switch (c) { case VDType.VDTypeCode.int8: case VDType.VDTypeCode.sint8: d[offset] = (byte)(v & 0xff); break; case VDType.VDTypeCode.int16_LSB: case VDType.VDTypeCode.sint16_LSB: d[offset] = (byte)(v & 0xff); d[offset + 1] = (byte)((v >> 8) & 0xff); break; case VDType.VDTypeCode.int32_LSB: case VDType.VDTypeCode.sint32_LSB: d[offset] = (byte)(v & 0xff); d[offset + 1] = (byte)((v >> 8) & 0xff); d[offset + 2] = (byte)((v >> 16) & 0xff); d[offset + 3] = (byte)((v >> 24) & 0xff); break; case VDType.VDTypeCode.int16_MSB: case VDType.VDTypeCode.sint16_MSB: d[offset] = (byte)((v >> 8) & 0xff); d[offset + 1] = (byte)(v & 0xff); break; case VDType.VDTypeCode.int32_MSB: case VDType.VDTypeCode.sint32_MSB: d[offset] = (byte)((v >> 24) & 0xff); d[offset + 1] = (byte)((v >> 16) & 0xff); d[offset + 2] = (byte)((v >> 8) & 0xff); d[offset + 3] = (byte)(v & 0xff); break; case VDType.VDTypeCode.int16_LSB_MSB: case VDType.VDTypeCode.sint16_LSB_MSB: d[offset] = (byte)(v & 0xff); d[offset + 1] = (byte)((v >> 8) & 0xff); d[offset + 2] = (byte)((v >> 8) & 0xff); d[offset + 3] = (byte)(v & 0xff); break; case VDType.VDTypeCode.int32_LSB_MSB: case VDType.VDTypeCode.sint32_LSB_MSB: d[offset] = (byte)(v & 0xff); d[offset + 1] = (byte)((v >> 8) & 0xff); d[offset + 2] = (byte)((v >> 16) & 0xff); d[offset + 3] = (byte)((v >> 24) & 0xff); d[offset + 4] = (byte)((v >> 24) & 0xff); d[offset + 5] = (byte)((v >> 16) & 0xff); d[offset + 6] = (byte)((v >> 8) & 0xff); d[offset + 7] = (byte)(v & 0xff); break; default: throw new NotImplementedException(); } }
protected void AddIntEntry(string tag, VDType.VDTypeCode c, int default_val) { AddIntEntry(tag, c); WriteInt(tag, default_val); }