12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #ifndef _RAR_QOPEN_
- #define _RAR_QOPEN_
- struct QuickOpenItem
- {
- byte *Header;
- size_t HeaderSize;
- uint64 ArcPos;
- QuickOpenItem *Next;
- };
- class Archive;
- class RawRead;
- class QuickOpen
- {
- private:
- void Close();
- uint ReadBuffer();
- bool ReadRaw(RawRead &Raw);
- bool ReadNext();
- Archive *Arc;
- bool WriteMode;
- QuickOpenItem *ListStart;
- QuickOpenItem *ListEnd;
-
- byte *Buf;
- static const size_t MaxBufSize=0x10000;
- size_t CurBufSize;
- #ifndef RAR_NOCRYPT
- CryptData Crypt;
- #endif
- bool Loaded;
- uint64 QOHeaderPos;
- uint64 RawDataStart;
- uint64 RawDataSize;
- uint64 RawDataPos;
- size_t ReadBufSize;
- size_t ReadBufPos;
- Array<byte> LastReadHeader;
- uint64 LastReadHeaderPos;
- uint64 SeekPos;
- bool UnsyncSeekPos;
- public:
- QuickOpen();
- ~QuickOpen();
- void Init(Archive *Arc,bool WriteMode);
- void Load(uint64 BlockPos);
- void Unload() { Loaded=false; }
- bool Read(void *Data,size_t Size,size_t &Result);
- bool Seek(int64 Offset,int Method);
- bool Tell(int64 *Pos);
- };
- #endif
|