static object ReadFloatPrimitiveType(BitStreamReader reader, FloatDsdlType t) { switch (t.MaxBitlen) { case 16: var value = (ushort)BitSerializer.ReadUInt(reader, 16); return(BitSerializer.UInt16ToFloat32(value)); case 32: return(BitSerializer.ReadSingle(reader, 32)); case 64: return(BitSerializer.ReadDouble(reader, 64)); default: throw new InvalidOperationException($"Unexpected float bit lenght: {t.MaxBitlen}."); } }
int ReadDynamicArraySize(BitStreamReader reader, ArrayDsdlType t) { var bitLen = BitSerializer.IntBitLength(t.MaxSize + 1); return((int)BitSerializer.ReadUInt(reader, bitLen)); }
int ReadUnionFieldIndex(BitStreamReader reader, CompositeDsdlTypeBase t) { var bitLen = BitSerializer.IntBitLength(t.Fields.Count); return((int)BitSerializer.ReadUInt(reader, bitLen)); }