xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Console/PercentPrinter.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // PercentPrinter.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_PERCENT_PRINTER_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_PERCENT_PRINTER_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/StdOutStream.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker struct CPercentPrinterState
9*f6dc9357SAndroid Build Coastguard Worker {
10*f6dc9357SAndroid Build Coastguard Worker   UInt64 Completed;
11*f6dc9357SAndroid Build Coastguard Worker   UInt64 Total;
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker   UInt64 Files;
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker   AString Command;
16*f6dc9357SAndroid Build Coastguard Worker   UString FileName;
17*f6dc9357SAndroid Build Coastguard Worker 
18*f6dc9357SAndroid Build Coastguard Worker   void ClearCurState();
19*f6dc9357SAndroid Build Coastguard Worker 
CPercentPrinterStateCPercentPrinterState20*f6dc9357SAndroid Build Coastguard Worker   CPercentPrinterState():
21*f6dc9357SAndroid Build Coastguard Worker       Completed(0),
22*f6dc9357SAndroid Build Coastguard Worker       Total((UInt64)(Int64)-1),
23*f6dc9357SAndroid Build Coastguard Worker       Files(0)
24*f6dc9357SAndroid Build Coastguard Worker     {}
25*f6dc9357SAndroid Build Coastguard Worker };
26*f6dc9357SAndroid Build Coastguard Worker 
27*f6dc9357SAndroid Build Coastguard Worker class CPercentPrinter: public CPercentPrinterState
28*f6dc9357SAndroid Build Coastguard Worker {
29*f6dc9357SAndroid Build Coastguard Worker public:
30*f6dc9357SAndroid Build Coastguard Worker   CStdOutStream *_so;
31*f6dc9357SAndroid Build Coastguard Worker   bool DisablePrint;
32*f6dc9357SAndroid Build Coastguard Worker   bool NeedFlush;
33*f6dc9357SAndroid Build Coastguard Worker   unsigned MaxLen;
34*f6dc9357SAndroid Build Coastguard Worker 
35*f6dc9357SAndroid Build Coastguard Worker private:
36*f6dc9357SAndroid Build Coastguard Worker   UInt32 _tickStep;
37*f6dc9357SAndroid Build Coastguard Worker   DWORD _prevTick;
38*f6dc9357SAndroid Build Coastguard Worker 
39*f6dc9357SAndroid Build Coastguard Worker   AString _s;
40*f6dc9357SAndroid Build Coastguard Worker 
41*f6dc9357SAndroid Build Coastguard Worker   AString _printedString;
42*f6dc9357SAndroid Build Coastguard Worker   AString _temp;
43*f6dc9357SAndroid Build Coastguard Worker   UString _tempU;
44*f6dc9357SAndroid Build Coastguard Worker 
45*f6dc9357SAndroid Build Coastguard Worker   CPercentPrinterState _printedState;
46*f6dc9357SAndroid Build Coastguard Worker   AString _printedPercents;
47*f6dc9357SAndroid Build Coastguard Worker 
48*f6dc9357SAndroid Build Coastguard Worker   void GetPercents();
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker public:
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker   CPercentPrinter(UInt32 tickStep = 200):
DisablePrint(false)53*f6dc9357SAndroid Build Coastguard Worker       DisablePrint(false),
54*f6dc9357SAndroid Build Coastguard Worker       NeedFlush(true),
55*f6dc9357SAndroid Build Coastguard Worker       MaxLen(80 - 1),
56*f6dc9357SAndroid Build Coastguard Worker       _tickStep(tickStep),
57*f6dc9357SAndroid Build Coastguard Worker       _prevTick(0)
58*f6dc9357SAndroid Build Coastguard Worker   {}
59*f6dc9357SAndroid Build Coastguard Worker 
60*f6dc9357SAndroid Build Coastguard Worker   ~CPercentPrinter();
61*f6dc9357SAndroid Build Coastguard Worker 
62*f6dc9357SAndroid Build Coastguard Worker   void ClosePrint(bool needFlush);
63*f6dc9357SAndroid Build Coastguard Worker   void Print();
64*f6dc9357SAndroid Build Coastguard Worker };
65*f6dc9357SAndroid Build Coastguard Worker 
66*f6dc9357SAndroid Build Coastguard Worker #endif
67