This commit is contained in:
Igor Pavlov
2021-07-22 23:00:14 +01:00
committed by Kornel
parent 4a960640a3
commit 585698650f
619 changed files with 34904 additions and 10859 deletions

View File

@@ -7,42 +7,30 @@
#define USE_WIN_FILE
#endif
#include "../../Common/MyCom.h"
#include "../../Common/MyString.h"
#ifdef USE_WIN_FILE
#include "../../Windows/FileIO.h"
#else
#include "../../Common/C_FileIO.h"
#endif
#include "../../Common/MyCom.h"
#include "../IStream.h"
#ifdef _WIN32
typedef UINT_PTR My_UINT_PTR;
#else
typedef UINT My_UINT_PTR;
#endif
struct IInFileStream_Callback
{
virtual HRESULT InFileStream_On_Error(My_UINT_PTR val, DWORD error) = 0;
virtual void InFileStream_On_Destroy(My_UINT_PTR val) = 0;
virtual HRESULT InFileStream_On_Error(UINT_PTR val, DWORD error) = 0;
virtual void InFileStream_On_Destroy(UINT_PTR val) = 0;
};
class CInFileStream:
public IInStream,
public IStreamGetSize,
#ifdef USE_WIN_FILE
public IStreamGetProps,
public IStreamGetProps2,
#endif
public CMyUnknownImp
{
public:
#ifdef USE_WIN_FILE
NWindows::NFile::NIO::CInFile File;
#ifdef USE_WIN_FILE
#ifdef SUPPORT_DEVICE_FILE
UInt64 VirtPos;
@@ -52,14 +40,12 @@ public:
UInt32 BufSize;
#endif
#else
NC::NFile::NIO::CInFile File;
#endif
bool SupportHardLinks;
IInFileStream_Callback *Callback;
My_UINT_PTR CallbackRef;
UINT_PTR CallbackRef;
virtual ~CInFileStream();
@@ -77,10 +63,8 @@ public:
MY_QUERYINTERFACE_BEGIN2(IInStream)
MY_QUERYINTERFACE_ENTRY(IStreamGetSize)
#ifdef USE_WIN_FILE
MY_QUERYINTERFACE_ENTRY(IStreamGetProps)
MY_QUERYINTERFACE_ENTRY(IStreamGetProps2)
#endif
MY_QUERYINTERFACE_END
MY_ADDREF_RELEASE
@@ -88,10 +72,8 @@ public:
STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
STDMETHOD(GetSize)(UInt64 *size);
#ifdef USE_WIN_FILE
STDMETHOD(GetProps)(UInt64 *size, FILETIME *cTime, FILETIME *aTime, FILETIME *mTime, UInt32 *attrib);
STDMETHOD(GetProps2)(CStreamFileProps *props);
#endif
};
class CStdInFileStream:
@@ -110,11 +92,8 @@ class COutFileStream:
public CMyUnknownImp
{
public:
#ifdef USE_WIN_FILE
NWindows::NFile::NIO::COutFile File;
#else
NC::NFile::NIO::COutFile File;
#endif
virtual ~COutFileStream() {}
bool Create(CFSTR fileName, bool createAlways)
{
@@ -131,14 +110,11 @@ public:
UInt64 ProcessedSize;
#ifdef USE_WIN_FILE
bool SetTime(const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime)
{
return File.SetTime(cTime, aTime, mTime);
}
bool SetMTime(const FILETIME *mTime) { return File.SetMTime(mTime); }
#endif
MY_UNKNOWN_IMP1(IOutStream)
@@ -146,6 +122,15 @@ public:
STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
STDMETHOD(SetSize)(UInt64 newSize);
bool SeekToBegin_bool()
{
#ifdef USE_WIN_FILE
return File.SeekToBegin();
#else
return File.seekToBegin() == 0;
#endif
}
HRESULT GetSize(UInt64 *size);
};