mirror of
https://github.com/holub/mame
synced 2025-06-02 10:59:52 +03:00
183 lines
3.0 KiB
C
183 lines
3.0 KiB
C
// CWrappers.h
|
|
|
|
#ifndef __C_WRAPPERS_H
|
|
#define __C_WRAPPERS_H
|
|
|
|
#include "../ICoder.h"
|
|
#include "../../Common/MyCom.h"
|
|
|
|
SRes HRESULT_To_SRes(HRESULT res, SRes defaultRes) throw();
|
|
HRESULT SResToHRESULT(SRes res) throw();
|
|
|
|
struct CCompressProgressWrap
|
|
{
|
|
ICompressProgress vt;
|
|
ICompressProgressInfo *Progress;
|
|
HRESULT Res;
|
|
|
|
void Init(ICompressProgressInfo *progress) throw();
|
|
};
|
|
|
|
|
|
struct CSeqInStreamWrap
|
|
{
|
|
ISeqInStream vt;
|
|
ISequentialInStream *Stream;
|
|
HRESULT Res;
|
|
UInt64 Processed;
|
|
|
|
void Init(ISequentialInStream *stream) throw();
|
|
};
|
|
|
|
|
|
struct CSeekInStreamWrap
|
|
{
|
|
ISeekInStream vt;
|
|
IInStream *Stream;
|
|
HRESULT Res;
|
|
|
|
void Init(IInStream *stream) throw();
|
|
};
|
|
|
|
|
|
struct CSeqOutStreamWrap
|
|
{
|
|
ISeqOutStream vt;
|
|
ISequentialOutStream *Stream;
|
|
HRESULT Res;
|
|
UInt64 Processed;
|
|
|
|
void Init(ISequentialOutStream *stream) throw();
|
|
};
|
|
|
|
|
|
struct CByteInBufWrap
|
|
{
|
|
IByteIn vt;
|
|
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 + (size_t)(Cur - Buf); }
|
|
Byte ReadByteFromNewBlock() throw();
|
|
Byte ReadByte()
|
|
{
|
|
if (Cur != Lim)
|
|
return *Cur++;
|
|
return ReadByteFromNewBlock();
|
|
}
|
|
};
|
|
|
|
|
|
/*
|
|
struct CLookToSequentialWrap
|
|
{
|
|
Byte *BufBase;
|
|
UInt32 Size;
|
|
ISequentialInStream *Stream;
|
|
UInt64 Processed;
|
|
bool Extra;
|
|
HRESULT Res;
|
|
|
|
CLookToSequentialWrap(): BufBase(NULL) {}
|
|
~CLookToSequentialWrap() { 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();
|
|
}
|
|
};
|
|
|
|
EXTERN_C_BEGIN
|
|
// void CLookToSequentialWrap_Look(ILookInSeqStream *pp);
|
|
EXTERN_C_END
|
|
*/
|
|
|
|
|
|
|
|
struct CByteOutBufWrap
|
|
{
|
|
IByteOut vt;
|
|
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 + (size_t)(Cur - Buf); }
|
|
HRESULT Flush() throw();
|
|
void WriteByte(Byte b)
|
|
{
|
|
*Cur++ = b;
|
|
if (Cur == Lim)
|
|
Flush();
|
|
}
|
|
};
|
|
|
|
|
|
/*
|
|
struct CLookOutWrap
|
|
{
|
|
ILookOutStream vt;
|
|
Byte *Buf;
|
|
size_t Size;
|
|
ISequentialOutStream *Stream;
|
|
UInt64 Processed;
|
|
HRESULT Res;
|
|
|
|
CLookOutWrap() throw();
|
|
~CLookOutWrap() { Free(); }
|
|
void Free() throw();
|
|
bool Alloc(size_t size) throw();
|
|
void Init()
|
|
{
|
|
Processed = 0;
|
|
Res = S_OK;
|
|
}
|
|
};
|
|
*/
|
|
|
|
#endif
|