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