1 // WimHandler.h
2 
3 #ifndef __ARCHIVE_WIM_HANDLER_H
4 #define __ARCHIVE_WIM_HANDLER_H
5 
6 #include "Common/MyCom.h"
7 #include "Common/MyXml.h"
8 
9 #include "../IArchive.h"
10 #include "WimIn.h"
11 
12 namespace NArchive {
13 namespace NWim {
14 
15 struct CVolume
16 {
17   CHeader Header;
18   CMyComPtr<IInStream> Stream;
19 };
20 
21 struct CImageInfo
22 {
23   bool CTimeDefined;
24   bool MTimeDefined;
25   bool NameDefined;
26   // bool IndexDefined;
27 
28   FILETIME CTime;
29   FILETIME MTime;
30   UString Name;
31   // UInt32 Index;
32 
CImageInfoCImageInfo33   CImageInfo(): CTimeDefined(false), MTimeDefined(false), NameDefined(false)
34       // , IndexDefined(false)
35       {}
36   void Parse(const CXmlItem &item);
37 };
38 
39 struct CXml
40 {
41   CByteBuffer Data;
42   UInt16 VolIndex;
43 
44   CObjectVector<CImageInfo> Images;
45 
46   void Parse();
47 };
48 
49 class CHandler:
50   public IInArchive,
51   public CMyUnknownImp
52 {
53 public:
54   MY_UNKNOWN_IMP1(IInArchive)
55   INTERFACE_IInArchive(;)
56 
57 private:
58   CDatabase m_Database;
59   CObjectVector<CVolume> m_Volumes;
60   CObjectVector<CXml> m_Xmls;
61   int m_NameLenForStreams;
62 };
63 
64 }}
65 
66 #endif
67