00001
00002
00003
00004
00005 #ifndef __FILESTREAMS_H
00006 #define __FILESTREAMS_H
00007
00008 #ifdef _WIN32
00009 #include "FileIO.h"
00010 #else
00011 #include "C_FileIO.h"
00012 #endif
00013
00014 #include "IStream.h"
00015 #include "MyCom.h"
00016
00017 class CInFileStream:
00018 public IInStream,
00019 public IStreamGetSize,
00020 public CMyUnknownImp
00021 {
00022 public:
00023 #ifdef _WIN32
00024 NWindows::NFile::NIO::CInFile File;
00025 #else
00026 NC::NFile::NIO::CInFile File;
00027 #endif
00028 CInFileStream() {}
00029 virtual ~CInFileStream() {}
00030
00031 bool Open(LPCTSTR fileName);
00032 #ifdef _WIN32
00033 #ifndef _UNICODE
00034 bool Open(LPCWSTR fileName);
00035 #endif
00036 #endif
00037
00038 MY_UNKNOWN_IMP2(IInStream, IStreamGetSize)
00039
00040 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
00041 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
00042
00043 STDMETHOD(GetSize)(UInt64 *size);
00044 };
00045
00046 #ifndef _WIN32_WCE
00047 class CStdInFileStream:
00048 public ISequentialInStream,
00049 public CMyUnknownImp
00050 {
00051 public:
00052
00053
00054
00055 MY_UNKNOWN_IMP
00056
00057 virtual ~CStdInFileStream() {}
00058 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
00059 };
00060 #endif
00061
00062 class COutFileStream:
00063 public IOutStream,
00064 public CMyUnknownImp
00065 {
00066 public:
00067 #ifdef _WIN32
00068 NWindows::NFile::NIO::COutFile File;
00069 #else
00070 NC::NFile::NIO::COutFile File;
00071 #endif
00072 virtual ~COutFileStream() {}
00073 bool Create(LPCTSTR fileName, bool createAlways);
00074 #ifdef _WIN32
00075 #ifndef _UNICODE
00076 bool Create(LPCWSTR fileName, bool createAlways);
00077 #endif
00078 #endif
00079
00080 MY_UNKNOWN_IMP1(IOutStream)
00081
00082 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
00083 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
00084 STDMETHOD(SetSize)(Int64 newSize);
00085 };
00086
00087 #ifndef _WIN32_WCE
00088 class CStdOutFileStream:
00089 public ISequentialOutStream,
00090 public CMyUnknownImp
00091 {
00092 public:
00093 MY_UNKNOWN_IMP
00094
00095 virtual ~CStdOutFileStream() {}
00096 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
00097 };
00098 #endif
00099
00100 #endif