1 #ifndef _RAR_DATAIO_ 2 #define _RAR_DATAIO_ 3 4 class CmdAdd; 5 class Unpack; 6 7 8 class ComprDataIO 9 { 10 private: 11 void ShowUnpRead(Int64 ArcPos,Int64 ArcSize); 12 void ShowUnpWrite(); 13 14 15 bool UnpackFromMemory; 16 uint UnpackFromMemorySize; 17 byte *UnpackFromMemoryAddr; 18 19 bool UnpackToMemory; 20 uint UnpackToMemorySize; 21 byte *UnpackToMemoryAddr; 22 23 uint UnpWrSize; 24 byte *UnpWrAddr; 25 26 Int64 UnpPackedSize; 27 28 bool ShowProgress; 29 bool TestMode; 30 bool SkipUnpCRC; 31 32 File *SrcFile; 33 File *DestFile; 34 35 CmdAdd *Command; 36 37 FileHeader *SubHead; 38 Int64 *SubHeadPos; 39 40 #ifndef NOCRYPT 41 CryptData Crypt; 42 CryptData Decrypt; 43 #endif 44 45 46 int LastPercent; 47 48 char CurrentCommand; 49 50 public: 51 ComprDataIO(); 52 void Init(); 53 int UnpRead(byte *Addr,uint Count); 54 void UnpWrite(byte *Addr,uint Count); EnableShowProgress(bool Show)55 void EnableShowProgress(bool Show) {ShowProgress=Show;} 56 void GetUnpackedData(byte **Data,uint *Size); SetPackedSizeToRead(Int64 Size)57 void SetPackedSizeToRead(Int64 Size) {UnpPackedSize=Size;} SetTestMode(bool Mode)58 void SetTestMode(bool Mode) {TestMode=Mode;} SetSkipUnpCRC(bool Skip)59 void SetSkipUnpCRC(bool Skip) {SkipUnpCRC=Skip;} 60 void SetFiles(File *SrcFile,File *DestFile); SetCommand(CmdAdd * Cmd)61 void SetCommand(CmdAdd *Cmd) {Command=Cmd;} SetSubHeader(FileHeader * hd,Int64 * Pos)62 void SetSubHeader(FileHeader *hd,Int64 *Pos) {SubHead=hd;SubHeadPos=Pos;} 63 void SetEncryption(int Method,char *Password,byte *Salt,bool Encrypt); 64 void SetAV15Encryption(); 65 void SetCmt13Encryption(); 66 void SetUnpackToMemory(byte *Addr,uint Size); SetCurrentCommand(char Cmd)67 void SetCurrentCommand(char Cmd) {CurrentCommand=Cmd;} 68 69 bool PackVolume; 70 bool UnpVolume; 71 bool NextVolumeMissing; 72 Int64 TotalPackRead; 73 Int64 UnpArcSize; 74 Int64 CurPackRead,CurPackWrite,CurUnpRead,CurUnpWrite; 75 Int64 ProcessedArcSize,TotalArcSize; 76 77 uint PackFileCRC,UnpFileCRC,PackedCRC; 78 79 int Encryption; 80 int Decryption; 81 }; 82 83 #endif 84