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 10namespace NCompress { 11 12class CCopyCoder: 13 public ICompressCoder, 14 public ICompressSetInStream, 15 public ISequentialInStream, 16 public ICompressGetInStreamProcessedSize, 17 public CMyUnknownImp 18{ 19 Byte *_buf; 20 CMyComPtr<ISequentialInStream> _inStream; 21public: 22 UInt64 TotalSize; 23 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 41HRESULT CopyStream(ISequentialInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress); 42HRESULT CopyStream_ExactSize(ISequentialInStream *inStream, ISequentialOutStream *outStream, UInt64 size, ICompressProgressInfo *progress); 43 44} 45 46#endif 47