// Deserialization public UInt16 Deserialize() { // Read info about storage format Int16StorageFormats format = (Int16StorageFormats)SerializerStorage.ReadStorageFormatId(Int16StorageBase.FormatIdSizeInBits); // Is it default value if (format == Int16StorageFormats.DefaultValue) { return(0); } if (format == Int16StorageFormats.ValueInConfig) { ValueInConfig valInConfig = new ValueInConfig(); valInConfig.FormatConfig.Bits = SerializerStorage.ReadStorageFormatData(ValueInConfig.UsedConfigBitsForValue); return((UInt16)valInConfig.Value); } // Value stored in PackedData ValueInDataStream valInDataStream = new ValueInDataStream(); valInDataStream.FormatConfig.Bits = SerializerStorage.ReadStorageFormatData(ValueInDataStream.UsedConfigBitsForCase); byte[] encodedValue = SerializerStorage.ReadPackedData(valInDataStream.PackedDataSize); // Return decoded value return((UInt16)BitToolkit.ConvertByteArrayToInt16(encodedValue)); }
// Constructor that requires config case value public Int16StorageBase(Int16StorageFormats confCase, byte usedConfigBits) : base((byte)confCase, FormatIdSizeInBits, usedConfigBits) { }