michael@0: // FileStreams.h michael@0: michael@0: #ifndef __FILESTREAMS_H michael@0: #define __FILESTREAMS_H michael@0: michael@0: #ifdef _WIN32 michael@0: #include "../../Windows/FileIO.h" michael@0: #else michael@0: #include "../../Common/C_FileIO.h" michael@0: #endif michael@0: michael@0: #include "../IStream.h" michael@0: #include "../../Common/MyCom.h" michael@0: michael@0: class CInFileStream: michael@0: public IInStream, michael@0: public IStreamGetSize, michael@0: public CMyUnknownImp michael@0: { michael@0: public: michael@0: #ifdef _WIN32 michael@0: NWindows::NFile::NIO::CInFile File; michael@0: #else michael@0: NC::NFile::NIO::CInFile File; michael@0: #endif michael@0: CInFileStream() {} michael@0: virtual ~CInFileStream() {} michael@0: michael@0: bool Open(LPCTSTR fileName); michael@0: #ifdef _WIN32 michael@0: #ifndef _UNICODE michael@0: bool Open(LPCWSTR fileName); michael@0: #endif michael@0: #endif michael@0: michael@0: MY_UNKNOWN_IMP2(IInStream, IStreamGetSize) michael@0: michael@0: STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); michael@0: STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition); michael@0: michael@0: STDMETHOD(GetSize)(UInt64 *size); michael@0: }; michael@0: michael@0: #ifndef _WIN32_WCE michael@0: class CStdInFileStream: michael@0: public ISequentialInStream, michael@0: public CMyUnknownImp michael@0: { michael@0: public: michael@0: // HANDLE File; michael@0: // CStdInFileStream() File(INVALID_HANDLE_VALUE): {} michael@0: // void Open() { File = GetStdHandle(STD_INPUT_HANDLE); }; michael@0: MY_UNKNOWN_IMP michael@0: michael@0: virtual ~CStdInFileStream() {} michael@0: STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); michael@0: }; michael@0: #endif michael@0: michael@0: class COutFileStream: michael@0: public IOutStream, michael@0: public CMyUnknownImp michael@0: { michael@0: public: michael@0: #ifdef _WIN32 michael@0: NWindows::NFile::NIO::COutFile File; michael@0: #else michael@0: NC::NFile::NIO::COutFile File; michael@0: #endif michael@0: virtual ~COutFileStream() {} michael@0: bool Create(LPCTSTR fileName, bool createAlways); michael@0: #ifdef _WIN32 michael@0: #ifndef _UNICODE michael@0: bool Create(LPCWSTR fileName, bool createAlways); michael@0: #endif michael@0: #endif michael@0: michael@0: MY_UNKNOWN_IMP1(IOutStream) michael@0: michael@0: STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize); michael@0: STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition); michael@0: STDMETHOD(SetSize)(Int64 newSize); michael@0: }; michael@0: michael@0: #ifndef _WIN32_WCE michael@0: class CStdOutFileStream: michael@0: public ISequentialOutStream, michael@0: public CMyUnknownImp michael@0: { michael@0: public: michael@0: MY_UNKNOWN_IMP michael@0: michael@0: virtual ~CStdOutFileStream() {} michael@0: STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize); michael@0: }; michael@0: #endif michael@0: michael@0: #endif