xref: /aosp_15_r20/external/lzma/CPP/7zip/Common/CWrappers.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // CWrappers.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_C_WRAPPERS_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_C_WRAPPERS_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../ICoder.h"
7*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyCom.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker SRes HRESULT_To_SRes(HRESULT res, SRes defaultRes) throw();
10*f6dc9357SAndroid Build Coastguard Worker HRESULT SResToHRESULT(SRes res) throw();
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker struct CCompressProgressWrap
13*f6dc9357SAndroid Build Coastguard Worker {
14*f6dc9357SAndroid Build Coastguard Worker   ICompressProgress vt;
15*f6dc9357SAndroid Build Coastguard Worker   ICompressProgressInfo *Progress;
16*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
17*f6dc9357SAndroid Build Coastguard Worker 
18*f6dc9357SAndroid Build Coastguard Worker   void Init(ICompressProgressInfo *progress) throw();
19*f6dc9357SAndroid Build Coastguard Worker };
20*f6dc9357SAndroid Build Coastguard Worker 
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker struct CSeqInStreamWrap
23*f6dc9357SAndroid Build Coastguard Worker {
24*f6dc9357SAndroid Build Coastguard Worker   ISeqInStream vt;
25*f6dc9357SAndroid Build Coastguard Worker   ISequentialInStream *Stream;
26*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
27*f6dc9357SAndroid Build Coastguard Worker   UInt64 Processed;
28*f6dc9357SAndroid Build Coastguard Worker 
29*f6dc9357SAndroid Build Coastguard Worker   void Init(ISequentialInStream *stream) throw();
30*f6dc9357SAndroid Build Coastguard Worker };
31*f6dc9357SAndroid Build Coastguard Worker 
32*f6dc9357SAndroid Build Coastguard Worker 
33*f6dc9357SAndroid Build Coastguard Worker struct CSeekInStreamWrap
34*f6dc9357SAndroid Build Coastguard Worker {
35*f6dc9357SAndroid Build Coastguard Worker   ISeekInStream vt;
36*f6dc9357SAndroid Build Coastguard Worker   IInStream *Stream;
37*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
38*f6dc9357SAndroid Build Coastguard Worker 
39*f6dc9357SAndroid Build Coastguard Worker   void Init(IInStream *stream) throw();
40*f6dc9357SAndroid Build Coastguard Worker };
41*f6dc9357SAndroid Build Coastguard Worker 
42*f6dc9357SAndroid Build Coastguard Worker 
43*f6dc9357SAndroid Build Coastguard Worker struct CSeqOutStreamWrap
44*f6dc9357SAndroid Build Coastguard Worker {
45*f6dc9357SAndroid Build Coastguard Worker   ISeqOutStream vt;
46*f6dc9357SAndroid Build Coastguard Worker   ISequentialOutStream *Stream;
47*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
48*f6dc9357SAndroid Build Coastguard Worker   UInt64 Processed;
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker   void Init(ISequentialOutStream *stream) throw();
51*f6dc9357SAndroid Build Coastguard Worker };
52*f6dc9357SAndroid Build Coastguard Worker 
53*f6dc9357SAndroid Build Coastguard Worker 
54*f6dc9357SAndroid Build Coastguard Worker struct CByteInBufWrap
55*f6dc9357SAndroid Build Coastguard Worker {
56*f6dc9357SAndroid Build Coastguard Worker   IByteIn vt;
57*f6dc9357SAndroid Build Coastguard Worker   const Byte *Cur;
58*f6dc9357SAndroid Build Coastguard Worker   const Byte *Lim;
59*f6dc9357SAndroid Build Coastguard Worker   Byte *Buf;
60*f6dc9357SAndroid Build Coastguard Worker   UInt32 Size;
61*f6dc9357SAndroid Build Coastguard Worker   ISequentialInStream *Stream;
62*f6dc9357SAndroid Build Coastguard Worker   UInt64 Processed;
63*f6dc9357SAndroid Build Coastguard Worker   bool Extra;
64*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
65*f6dc9357SAndroid Build Coastguard Worker 
66*f6dc9357SAndroid Build Coastguard Worker   CByteInBufWrap() throw();
~CByteInBufWrapCByteInBufWrap67*f6dc9357SAndroid Build Coastguard Worker   ~CByteInBufWrap() { Free(); }
68*f6dc9357SAndroid Build Coastguard Worker   void Free() throw();
69*f6dc9357SAndroid Build Coastguard Worker   bool Alloc(UInt32 size) throw();
InitCByteInBufWrap70*f6dc9357SAndroid Build Coastguard Worker   void Init()
71*f6dc9357SAndroid Build Coastguard Worker   {
72*f6dc9357SAndroid Build Coastguard Worker     Lim = Cur = Buf;
73*f6dc9357SAndroid Build Coastguard Worker     Processed = 0;
74*f6dc9357SAndroid Build Coastguard Worker     Extra = false;
75*f6dc9357SAndroid Build Coastguard Worker     Res = S_OK;
76*f6dc9357SAndroid Build Coastguard Worker   }
GetProcessedCByteInBufWrap77*f6dc9357SAndroid Build Coastguard Worker   UInt64 GetProcessed() const { return Processed + (size_t)(Cur - Buf); }
78*f6dc9357SAndroid Build Coastguard Worker   Byte ReadByteFromNewBlock() throw();
ReadByteCByteInBufWrap79*f6dc9357SAndroid Build Coastguard Worker   Byte ReadByte()
80*f6dc9357SAndroid Build Coastguard Worker   {
81*f6dc9357SAndroid Build Coastguard Worker     if (Cur != Lim)
82*f6dc9357SAndroid Build Coastguard Worker       return *Cur++;
83*f6dc9357SAndroid Build Coastguard Worker     return ReadByteFromNewBlock();
84*f6dc9357SAndroid Build Coastguard Worker   }
85*f6dc9357SAndroid Build Coastguard Worker };
86*f6dc9357SAndroid Build Coastguard Worker 
87*f6dc9357SAndroid Build Coastguard Worker 
88*f6dc9357SAndroid Build Coastguard Worker /*
89*f6dc9357SAndroid Build Coastguard Worker struct CLookToSequentialWrap
90*f6dc9357SAndroid Build Coastguard Worker {
91*f6dc9357SAndroid Build Coastguard Worker   Byte *BufBase;
92*f6dc9357SAndroid Build Coastguard Worker   UInt32 Size;
93*f6dc9357SAndroid Build Coastguard Worker   ISequentialInStream *Stream;
94*f6dc9357SAndroid Build Coastguard Worker   UInt64 Processed;
95*f6dc9357SAndroid Build Coastguard Worker   bool Extra;
96*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
97*f6dc9357SAndroid Build Coastguard Worker 
98*f6dc9357SAndroid Build Coastguard Worker   CLookToSequentialWrap(): BufBase(NULL) {}
99*f6dc9357SAndroid Build Coastguard Worker   ~CLookToSequentialWrap() { Free(); }
100*f6dc9357SAndroid Build Coastguard Worker   void Free() throw();
101*f6dc9357SAndroid Build Coastguard Worker   bool Alloc(UInt32 size) throw();
102*f6dc9357SAndroid Build Coastguard Worker   void Init()
103*f6dc9357SAndroid Build Coastguard Worker   {
104*f6dc9357SAndroid Build Coastguard Worker     // Lim = Cur = Buf;
105*f6dc9357SAndroid Build Coastguard Worker     Processed = 0;
106*f6dc9357SAndroid Build Coastguard Worker     Extra = false;
107*f6dc9357SAndroid Build Coastguard Worker     Res = S_OK;
108*f6dc9357SAndroid Build Coastguard Worker   }
109*f6dc9357SAndroid Build Coastguard Worker   // UInt64 GetProcessed() const { return Processed + (Cur - Buf); }
110*f6dc9357SAndroid Build Coastguard Worker 
111*f6dc9357SAndroid Build Coastguard Worker   Byte ReadByteFromNewBlock() throw();
112*f6dc9357SAndroid Build Coastguard Worker   Byte ReadByte()
113*f6dc9357SAndroid Build Coastguard Worker   {
114*f6dc9357SAndroid Build Coastguard Worker     if (Cur != Lim)
115*f6dc9357SAndroid Build Coastguard Worker       return *Cur++;
116*f6dc9357SAndroid Build Coastguard Worker     return ReadByteFromNewBlock();
117*f6dc9357SAndroid Build Coastguard Worker   }
118*f6dc9357SAndroid Build Coastguard Worker };
119*f6dc9357SAndroid Build Coastguard Worker 
120*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_BEGIN
121*f6dc9357SAndroid Build Coastguard Worker // void CLookToSequentialWrap_Look(ILookInSeqStream *pp);
122*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_END
123*f6dc9357SAndroid Build Coastguard Worker */
124*f6dc9357SAndroid Build Coastguard Worker 
125*f6dc9357SAndroid Build Coastguard Worker 
126*f6dc9357SAndroid Build Coastguard Worker 
127*f6dc9357SAndroid Build Coastguard Worker struct CByteOutBufWrap
128*f6dc9357SAndroid Build Coastguard Worker {
129*f6dc9357SAndroid Build Coastguard Worker   IByteOut vt;
130*f6dc9357SAndroid Build Coastguard Worker   Byte *Cur;
131*f6dc9357SAndroid Build Coastguard Worker   const Byte *Lim;
132*f6dc9357SAndroid Build Coastguard Worker   Byte *Buf;
133*f6dc9357SAndroid Build Coastguard Worker   size_t Size;
134*f6dc9357SAndroid Build Coastguard Worker   ISequentialOutStream *Stream;
135*f6dc9357SAndroid Build Coastguard Worker   UInt64 Processed;
136*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
137*f6dc9357SAndroid Build Coastguard Worker 
138*f6dc9357SAndroid Build Coastguard Worker   CByteOutBufWrap() throw();
~CByteOutBufWrapCByteOutBufWrap139*f6dc9357SAndroid Build Coastguard Worker   ~CByteOutBufWrap() { Free(); }
140*f6dc9357SAndroid Build Coastguard Worker   void Free() throw();
141*f6dc9357SAndroid Build Coastguard Worker   bool Alloc(size_t size) throw();
InitCByteOutBufWrap142*f6dc9357SAndroid Build Coastguard Worker   void Init()
143*f6dc9357SAndroid Build Coastguard Worker   {
144*f6dc9357SAndroid Build Coastguard Worker     Cur = Buf;
145*f6dc9357SAndroid Build Coastguard Worker     Lim = Buf + Size;
146*f6dc9357SAndroid Build Coastguard Worker     Processed = 0;
147*f6dc9357SAndroid Build Coastguard Worker     Res = S_OK;
148*f6dc9357SAndroid Build Coastguard Worker   }
GetProcessedCByteOutBufWrap149*f6dc9357SAndroid Build Coastguard Worker   UInt64 GetProcessed() const { return Processed + (size_t)(Cur - Buf); }
150*f6dc9357SAndroid Build Coastguard Worker   HRESULT Flush() throw();
WriteByteCByteOutBufWrap151*f6dc9357SAndroid Build Coastguard Worker   void WriteByte(Byte b)
152*f6dc9357SAndroid Build Coastguard Worker   {
153*f6dc9357SAndroid Build Coastguard Worker     *Cur++ = b;
154*f6dc9357SAndroid Build Coastguard Worker     if (Cur == Lim)
155*f6dc9357SAndroid Build Coastguard Worker       Flush();
156*f6dc9357SAndroid Build Coastguard Worker   }
157*f6dc9357SAndroid Build Coastguard Worker };
158*f6dc9357SAndroid Build Coastguard Worker 
159*f6dc9357SAndroid Build Coastguard Worker 
160*f6dc9357SAndroid Build Coastguard Worker /*
161*f6dc9357SAndroid Build Coastguard Worker struct CLookOutWrap
162*f6dc9357SAndroid Build Coastguard Worker {
163*f6dc9357SAndroid Build Coastguard Worker   ILookOutStream vt;
164*f6dc9357SAndroid Build Coastguard Worker   Byte *Buf;
165*f6dc9357SAndroid Build Coastguard Worker   size_t Size;
166*f6dc9357SAndroid Build Coastguard Worker   ISequentialOutStream *Stream;
167*f6dc9357SAndroid Build Coastguard Worker   UInt64 Processed;
168*f6dc9357SAndroid Build Coastguard Worker   HRESULT Res;
169*f6dc9357SAndroid Build Coastguard Worker 
170*f6dc9357SAndroid Build Coastguard Worker   CLookOutWrap() throw();
171*f6dc9357SAndroid Build Coastguard Worker   ~CLookOutWrap() { Free(); }
172*f6dc9357SAndroid Build Coastguard Worker   void Free() throw();
173*f6dc9357SAndroid Build Coastguard Worker   bool Alloc(size_t size) throw();
174*f6dc9357SAndroid Build Coastguard Worker   void Init()
175*f6dc9357SAndroid Build Coastguard Worker   {
176*f6dc9357SAndroid Build Coastguard Worker     Processed = 0;
177*f6dc9357SAndroid Build Coastguard Worker     Res = S_OK;
178*f6dc9357SAndroid Build Coastguard Worker   }
179*f6dc9357SAndroid Build Coastguard Worker };
180*f6dc9357SAndroid Build Coastguard Worker */
181*f6dc9357SAndroid Build Coastguard Worker 
182*f6dc9357SAndroid Build Coastguard Worker #endif
183