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