Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/Archive/Wim/WimHandler.h')
-rw-r--r--[-rwxr-xr-x]CPP/7zip/Archive/Wim/WimHandler.h99
1 files changed, 51 insertions, 48 deletions
diff --git a/CPP/7zip/Archive/Wim/WimHandler.h b/CPP/7zip/Archive/Wim/WimHandler.h
index aa92069a..416e11ca 100755..100644
--- a/CPP/7zip/Archive/Wim/WimHandler.h
+++ b/CPP/7zip/Archive/Wim/WimHandler.h
@@ -3,72 +3,75 @@
#ifndef __ARCHIVE_WIM_HANDLER_H
#define __ARCHIVE_WIM_HANDLER_H
-#include "Common/MyCom.h"
-#include "Common/MyXml.h"
+#include "../../../Common/MyCom.h"
#include "WimIn.h"
namespace NArchive {
namespace NWim {
-struct CVolume
-{
- CHeader Header;
- CMyComPtr<IInStream> Stream;
-};
-
-struct CImageInfo
-{
- bool CTimeDefined;
- bool MTimeDefined;
- bool NameDefined;
- // bool IndexDefined;
-
- FILETIME CTime;
- FILETIME MTime;
- UString Name;
- // UInt32 Index;
-
- CImageInfo(): CTimeDefined(false), MTimeDefined(false), NameDefined(false)
- // , IndexDefined(false)
- {}
- void Parse(const CXmlItem &item);
-};
-
-struct CXml
-{
- CByteBuffer Data;
- UInt16 VolIndex;
- CObjectVector<CImageInfo> Images;
-
- void ToUnicode(UString &s);
- void Parse();
-};
-
-
class CHandler:
public IInArchive,
+ public IArchiveGetRawProps,
+ public IArchiveGetRootProps,
+ public IArchiveKeepModeForNextOpen,
+ public ISetProperties,
+ public IOutArchive,
public CMyUnknownImp
{
CDatabase _db;
UInt32 _version;
bool _isOldVersion;
+ UInt32 _bootIndex;
+
CObjectVector<CVolume> _volumes;
- CObjectVector<CXml> _xmls;
- int _nameLenForStreams;
+ CObjectVector<CWimXml> _xmls;
+ // unsigned _nameLenForStreams;
bool _xmlInComments;
+
+ unsigned _numXmlItems;
+ unsigned _numIgnoreItems;
-public:
- MY_UNKNOWN_IMP1(IInArchive)
- INTERFACE_IInArchive(;)
-};
+ bool _xmlError;
+ bool _isArc;
-class COutHandler:
- public IOutArchive,
- public CMyUnknownImp
-{
+ bool _set_use_ShowImageNumber;
+ bool _set_showImageNumber;
+ int _defaultImageNumber;
+
+ bool _showImageNumber;
+
+ bool _keepMode_ShowImageNumber;
+
+ UInt64 _phySize;
+ int _firstVolumeIndex;
+
+ void InitDefaults()
+ {
+ _set_use_ShowImageNumber = false;
+ _set_showImageNumber = false;
+ _defaultImageNumber = -1;
+ }
+
+ bool ThereIsError() const { return _xmlError || _db.ThereIsError(); }
+ HRESULT GetSecurity(UInt32 realIndex, const void **data, UInt32 *dataSize, UInt32 *propType);
+
+ HRESULT GetOutProperty(IArchiveUpdateCallback *callback, UInt32 callbackIndex, Int32 arcIndex, PROPID propID, PROPVARIANT *value);
+ HRESULT GetTime(IArchiveUpdateCallback *callback, UInt32 callbackIndex, Int32 arcIndex, PROPID propID, FILETIME &ft);
public:
- MY_UNKNOWN_IMP1(IOutArchive)
+ CHandler();
+ MY_UNKNOWN_IMP6(
+ IInArchive,
+ IArchiveGetRawProps,
+ IArchiveGetRootProps,
+ IArchiveKeepModeForNextOpen,
+ ISetProperties,
+ IOutArchive)
+ INTERFACE_IInArchive(;)
+ INTERFACE_IArchiveGetRawProps(;)
+ INTERFACE_IArchiveGetRootProps(;)
+ STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, UInt32 numProps);
+ STDMETHOD(KeepModeForNextOpen)();
INTERFACE_IOutArchive(;)
};