mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-08 04:07:02 -06:00
Initialer Commit
This commit is contained in:
114
CPP/7zip/Common/CWrappers.h
Normal file
114
CPP/7zip/Common/CWrappers.h
Normal file
@@ -0,0 +1,114 @@
|
||||
// CWrappers.h
|
||||
|
||||
#ifndef __C_WRAPPERS_H
|
||||
#define __C_WRAPPERS_H
|
||||
|
||||
#include "../ICoder.h"
|
||||
#include "../../Common/MyCom.h"
|
||||
|
||||
struct CCompressProgressWrap
|
||||
{
|
||||
ICompressProgress p;
|
||||
ICompressProgressInfo *Progress;
|
||||
HRESULT Res;
|
||||
|
||||
CCompressProgressWrap(ICompressProgressInfo *progress) throw();
|
||||
};
|
||||
|
||||
struct CSeqInStreamWrap
|
||||
{
|
||||
ISeqInStream p;
|
||||
ISequentialInStream *Stream;
|
||||
HRESULT Res;
|
||||
UInt64 Processed;
|
||||
|
||||
CSeqInStreamWrap(ISequentialInStream *stream) throw();
|
||||
};
|
||||
|
||||
struct CSeekInStreamWrap
|
||||
{
|
||||
ISeekInStream p;
|
||||
IInStream *Stream;
|
||||
HRESULT Res;
|
||||
|
||||
CSeekInStreamWrap(IInStream *stream) throw();
|
||||
};
|
||||
|
||||
struct CSeqOutStreamWrap
|
||||
{
|
||||
ISeqOutStream p;
|
||||
ISequentialOutStream *Stream;
|
||||
HRESULT Res;
|
||||
UInt64 Processed;
|
||||
|
||||
CSeqOutStreamWrap(ISequentialOutStream *stream) throw();
|
||||
};
|
||||
|
||||
HRESULT SResToHRESULT(SRes res) throw();
|
||||
|
||||
struct CByteInBufWrap
|
||||
{
|
||||
IByteIn p;
|
||||
const Byte *Cur;
|
||||
const Byte *Lim;
|
||||
Byte *Buf;
|
||||
UInt32 Size;
|
||||
ISequentialInStream *Stream;
|
||||
UInt64 Processed;
|
||||
bool Extra;
|
||||
HRESULT Res;
|
||||
|
||||
CByteInBufWrap();
|
||||
~CByteInBufWrap() { Free(); }
|
||||
void Free() throw();
|
||||
bool Alloc(UInt32 size) throw();
|
||||
void Init()
|
||||
{
|
||||
Lim = Cur = Buf;
|
||||
Processed = 0;
|
||||
Extra = false;
|
||||
Res = S_OK;
|
||||
}
|
||||
UInt64 GetProcessed() const { return Processed + (Cur - Buf); }
|
||||
Byte ReadByteFromNewBlock() throw();
|
||||
Byte ReadByte()
|
||||
{
|
||||
if (Cur != Lim)
|
||||
return *Cur++;
|
||||
return ReadByteFromNewBlock();
|
||||
}
|
||||
};
|
||||
|
||||
struct CByteOutBufWrap
|
||||
{
|
||||
IByteOut p;
|
||||
Byte *Cur;
|
||||
const Byte *Lim;
|
||||
Byte *Buf;
|
||||
size_t Size;
|
||||
ISequentialOutStream *Stream;
|
||||
UInt64 Processed;
|
||||
HRESULT Res;
|
||||
|
||||
CByteOutBufWrap() throw();
|
||||
~CByteOutBufWrap() { Free(); }
|
||||
void Free() throw();
|
||||
bool Alloc(size_t size) throw();
|
||||
void Init()
|
||||
{
|
||||
Cur = Buf;
|
||||
Lim = Buf + Size;
|
||||
Processed = 0;
|
||||
Res = S_OK;
|
||||
}
|
||||
UInt64 GetProcessed() const { return Processed + (Cur - Buf); }
|
||||
HRESULT Flush() throw();
|
||||
void WriteByte(Byte b)
|
||||
{
|
||||
*Cur++ = b;
|
||||
if (Cur == Lim)
|
||||
Flush();
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user