Welcome to mirror list, hosted at ThFree Co, Russian Federation.

rdwrfn.hpp « Original « Rar29 « Compress « 7zip - github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d2feb8422495ef7c9f056379efbb6c69be486188 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#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