115 lines
2.0 KiB
C
115 lines
2.0 KiB
C
// 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
|