Home | History | Annotate | Download | only in Compress
      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 
     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