Files
easy7zip/7zip/Compress/Rar29/Original/rdwrfn.hpp
Igor Pavlov d66cf2fcf3 4.27 beta
2016-05-28 00:15:44 +01:00

105 lines
2.3 KiB
C++
Executable File

#ifndef _RAR_DATAIO_
#define _RAR_DATAIO_
// Igor Pavlov
#include "../../../ICoder.h"
class CmdAdd;
class Unpack;
// Igor Pavlov
struct CExitCode
{
HRESULT Result;
CExitCode(HRESULT result): Result(result) {};
};
class ComprDataIO
{
private:
void ShowUnpRead(Int64 ArcPos,Int64 ArcSize);
void ShowUnpWrite();
bool UnpackFromMemory;
uint UnpackFromMemorySize;
byte *UnpackFromMemoryAddr;
bool UnpackToMemory;
uint UnpackToMemorySize;
byte *UnpackToMemoryAddr;
uint UnpWrSize;
byte *UnpWrAddr;
Int64 UnpPackedSize;
bool ShowProgress;
bool TestMode;
bool SkipUnpCRC;
// Igor Pavlov
// File *SrcFile;
// File *DestFile;
ISequentialInStream *SrcFile;
ISequentialOutStream *DestFile;
ICompressProgressInfo *Progress;
CmdAdd *Command;
// Igor Pavlov
/*
FileHeader *SubHead;
Int64 *SubHeadPos;
*/
#ifndef NOCRYPT
CryptData Crypt;
CryptData Decrypt;
#endif
int LastPercent;
char CurrentCommand;
public:
ComprDataIO();
void Init();
int UnpRead(byte *Addr,uint Count);
void UnpWrite(byte *Addr,uint Count);
void EnableShowProgress(bool Show) {ShowProgress=Show;}
void GetUnpackedData(byte **Data,uint *Size);
void SetPackedSizeToRead(Int64 Size) {UnpPackedSize=Size;}
void SetTestMode(bool Mode) {TestMode=Mode;}
void SetSkipUnpCRC(bool Skip) {SkipUnpCRC=Skip;}
// Igor Pavlov
// void SetFiles(File *SrcFile,File *DestFile);
void SetFiles(ISequentialInStream *srcFile,
ISequentialOutStream *destFile, ICompressProgressInfo *progress);
void SetCommand(CmdAdd *Cmd) {Command=Cmd;}
// Igor Pavlov
// void SetSubHeader(FileHeader *hd,Int64 *Pos) {SubHead=hd;SubHeadPos=Pos;}
// void SetEncryption(int Method,char *Password,byte *Salt,bool Encrypt);
// void SetAV15Encryption();
// void SetCmt13Encryption();
void SetUnpackToMemory(byte *Addr,uint Size);
void SetCurrentCommand(char Cmd) {CurrentCommand=Cmd;}
bool PackVolume;
bool UnpVolume;
bool NextVolumeMissing;
Int64 TotalPackRead;
Int64 UnpArcSize;
Int64 CurPackRead,CurPackWrite,CurUnpRead,CurUnpWrite;
Int64 ProcessedArcSize,TotalArcSize;
uint PackFileCRC,UnpFileCRC,PackedCRC;
int Encryption;
int Decryption;
};
#endif