Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / Archive / Rar / RarVolumeInStream.h
1 // RarVolumeInStream.h\r
2 \r
3 #ifndef __RAR_VOLUME_IN_STREAM_H\r
4 #define __RAR_VOLUME_IN_STREAM_H\r
5 \r
6 #include "../../IStream.h"\r
7 #include "RarIn.h"\r
8 \r
9 namespace NArchive {\r
10 namespace NRar {\r
11 \r
12 struct CRefItem\r
13 {\r
14   int VolumeIndex;\r
15   int ItemIndex;\r
16   int NumItems;\r
17 };\r
18 \r
19 class CFolderInStream:\r
20   public ISequentialInStream,\r
21   public CMyUnknownImp\r
22 {\r
23 public:\r
24   MY_UNKNOWN_IMP\r
25 \r
26   STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);\r
27 \r
28 private:\r
29   CObjectVector<CInArchive> *_archives;\r
30   const CObjectVector<CItemEx> *_items;\r
31   CRefItem _refItem;\r
32   int _curIndex;\r
33   UInt32 _crc;\r
34   bool _fileIsOpen;\r
35   CMyComPtr<ISequentialInStream> _stream;\r
36 \r
37   HRESULT OpenStream();\r
38   HRESULT CloseStream();\r
39 public:\r
40   void Init(CObjectVector<CInArchive> *archives,\r
41       const CObjectVector<CItemEx> *items,\r
42       const CRefItem &refItem);\r
43 \r
44   CRecordVector<UInt32> CRCs;\r
45 };\r
46   \r
47 }}\r
48 \r
49 #endif\r