protected override void DoDecompress() { lock ( iCodeSyncRoot ) { if (iCode == null) { TSymbianCompressionType type = this.CompressionType; switch (type) { default: case TSymbianCompressionType.ENone: // NB: This has not yet been observed in reality DecompressNone(); break; case TSymbianCompressionType.EDeflate: case TSymbianCompressionType.EBytePair: { using (SymbianDecompressor decompressor = SymbianDecompressor.NewByType(type)) { // switch (type) { case TSymbianCompressionType.EBytePair: DecompressBytePair(decompressor); break; case TSymbianCompressionType.EDeflate: DecompressDeflate(decompressor); break; } } break; } } if (iCode != null) { if (iStream != null) { iStream.Dispose(); iStream = null; } // iStream = new MemoryStream(iCode); } } } }
public static SymbianDecompressor NewByType(TSymbianCompressionType aType) { SymbianDecompressor ret = null; // switch (aType) { case TSymbianCompressionType.EBytePair: ret = new SymbianDecompressorBytePair(); break; case TSymbianCompressionType.EDeflate: ret = new SymbianDecompressorInflate(); break; } // return(ret); }
private static TSymbianCompressionType ReadCompressionType(SymbianStreamReaderLE aReader) { TSymbianCompressionType ret = TSymbianCompressionType.ENone; // uint type = aReader.ReadUInt32(); if (type == (uint)TSymbianCompressionType.EBytePair) { ret = TSymbianCompressionType.EBytePair; } else if (type == (uint)TSymbianCompressionType.EDeflate) { ret = TSymbianCompressionType.EDeflate; } else { throw new E32ImageNotSupportedException("Unsupported compression type"); } // return(ret); }