예제 #1
0
        // 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));
        }
예제 #2
0
 // Constructor that requires config case value
 public Int16StorageBase(Int16StorageFormats confCase, byte usedConfigBits) : base((byte)confCase, FormatIdSizeInBits, usedConfigBits)
 {
 }