// Deserialization public Int64 Deserialize() { // Read info about storage format Int64StorageFormats format = (Int64StorageFormats)SerializerStorage.ReadStorageFormatId(Int64StorageBase.FormatIdSizeInBits); // Is it default value if (format == Int64StorageFormats.DefaultValue) { return(0); } if (format == Int64StorageFormats.ValueInConfig) { ValueInConfig valInConfig = new ValueInConfig(); valInConfig.FormatConfig.Bits = SerializerStorage.ReadStorageFormatData(ValueInConfig.UsedConfigBitsForValue); return((Int64)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(BitToolkit.ConvertByteArrayToInt64(encodedValue)); }
// Constructor that requires config case value public Int64StorageBase(Int64StorageFormats confCase, byte usedConfigBits) : base((byte)confCase, FormatIdSizeInBits, usedConfigBits) { }