61 lines
1.2 KiB
C
61 lines
1.2 KiB
C
|
// 7zFolderOutStream.h
|
||
|
|
||
|
#ifndef __7Z_FOLDEROUTSTREAM_H
|
||
|
#define __7Z_FOLDEROUTSTREAM_H
|
||
|
|
||
|
#include "7zIn.h"
|
||
|
|
||
|
#include "../../IStream.h"
|
||
|
#include "../IArchive.h"
|
||
|
#include "../Common/OutStreamWithCRC.h"
|
||
|
|
||
|
namespace NArchive {
|
||
|
namespace N7z {
|
||
|
|
||
|
class CFolderOutStream:
|
||
|
public ISequentialOutStream,
|
||
|
public CMyUnknownImp
|
||
|
{
|
||
|
public:
|
||
|
MY_UNKNOWN_IMP
|
||
|
|
||
|
CFolderOutStream();
|
||
|
|
||
|
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
|
||
|
private:
|
||
|
|
||
|
COutStreamWithCRC *_outStreamWithHashSpec;
|
||
|
CMyComPtr<ISequentialOutStream> _outStreamWithHash;
|
||
|
const CArchiveDatabaseEx *_archiveDatabase;
|
||
|
const CBoolVector *_extractStatuses;
|
||
|
UInt32 _startIndex;
|
||
|
UInt32 _ref2Offset;
|
||
|
int _currentIndex;
|
||
|
// UInt64 _currentDataPos;
|
||
|
CMyComPtr<IArchiveExtractCallback> _extractCallback;
|
||
|
bool _testMode;
|
||
|
|
||
|
bool _fileIsOpen;
|
||
|
|
||
|
bool _checkCrc;
|
||
|
UInt64 _filePos;
|
||
|
|
||
|
HRESULT OpenFile();
|
||
|
HRESULT WriteEmptyFiles();
|
||
|
public:
|
||
|
HRESULT Init(
|
||
|
const CArchiveDatabaseEx *archiveDatabase,
|
||
|
UInt32 ref2Offset,
|
||
|
UInt32 startIndex,
|
||
|
const CBoolVector *extractStatuses,
|
||
|
IArchiveExtractCallback *extractCallback,
|
||
|
bool testMode,
|
||
|
bool checkCrc);
|
||
|
HRESULT FlushCorrupted(Int32 resultEOperationResult);
|
||
|
HRESULT WasWritingFinished();
|
||
|
};
|
||
|
|
||
|
}}
|
||
|
|
||
|
#endif
|