1 // Compress/CopyCoder.h 2 3 #ifndef __COMPRESS_COPY_CODER_H 4 #define __COMPRESS_COPY_CODER_H 5 6 #include "../../Common/MyCom.h" 7 8 #include "../ICoder.h" 9 10 namespace NCompress { 11 12 class CCopyCoder: 13 public ICompressCoder, 14 public ICompressSetInStream, 15 public ISequentialInStream, 16 public ICompressGetInStreamProcessedSize, 17 public CMyUnknownImp 18 { 19 Byte *_buf; 20 CMyComPtr<ISequentialInStream> _inStream; 21 public: 22 UInt64 TotalSize; 23 CCopyCoder()24 CCopyCoder(): _buf(0), TotalSize(0) {}; 25 ~CCopyCoder(); 26 27 MY_UNKNOWN_IMP4( 28 ICompressCoder, 29 ICompressSetInStream, 30 ISequentialInStream, 31 ICompressGetInStreamProcessedSize) 32 33 STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream, 34 const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress); 35 STDMETHOD(SetInStream)(ISequentialInStream *inStream); 36 STDMETHOD(ReleaseInStream)(); 37 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); 38 STDMETHOD(GetInStreamProcessedSize)(UInt64 *value); 39 }; 40 41 HRESULT CopyStream(ISequentialInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress); 42 HRESULT CopyStream_ExactSize(ISequentialInStream *inStream, ISequentialOutStream *outStream, UInt64 size, ICompressProgressInfo *progress); 43 44 } 45 46 #endif 47