// Extract.h #ifndef __EXTRACT_H #define __EXTRACT_H #include "../../../Windows/FileFind.h" #include "../../Archive/IArchive.h" #include "ArchiveExtractCallback.h" #include "ArchiveOpenCallback.h" #include "ExtractMode.h" #include "Property.h" #include "../Common/LoadCodecs.h" struct CExtractOptionsBase { CBoolPair ElimDup; bool PathMode_Force; bool OverwriteMode_Force; NExtract::NPathMode::EEnum PathMode; NExtract::NOverwriteMode::EEnum OverwriteMode; FString OutputDir; CExtractNtOptions NtOptions; CExtractOptionsBase(): PathMode_Force(false), OverwriteMode_Force(false), PathMode(NExtract::NPathMode::kFullPaths), OverwriteMode(NExtract::NOverwriteMode::kAsk) {} }; struct CExtractOptions: public CExtractOptionsBase { bool StdInMode; bool StdOutMode; bool YesToAll; bool TestMode; // bool ShowDialog; // bool PasswordEnabled; // UString Password; #ifndef _SFX CObjectVector Properties; #endif #ifdef EXTERNAL_CODECS CCodecs *Codecs; #endif CExtractOptions(): TestMode(false), StdInMode(false), StdOutMode(false), YesToAll(false) {} }; struct CDecompressStat { UInt64 NumArchives; UInt64 UnpackSize; UInt64 AltStreams_UnpackSize; UInt64 PackSize; UInt64 NumFolders; UInt64 NumFiles; UInt64 NumAltStreams; void Clear() { NumArchives = UnpackSize = AltStreams_UnpackSize = PackSize = NumFolders = NumFiles = NumAltStreams = 0; } }; HRESULT Extract( CCodecs *codecs, const CObjectVector &types, const CIntVector &excludedFormats, UStringVector &archivePaths, UStringVector &archivePathsFull, const NWildcard::CCensorNode &wildcardCensor, const CExtractOptions &options, IOpenCallbackUI *openCallback, IExtractCallbackUI *extractCallback, #ifndef _SFX IHashCalc *hash, #endif UString &errorMessage, CDecompressStat &stat); #endif