diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h index 9a2fa60ba7..1c44202177 100644 --- a/include/wx/wfstream.h +++ b/include/wx/wfstream.h @@ -118,6 +118,31 @@ public: wxFileStream(const wxString& fileName); virtual bool IsOk() const; + // override (some) virtual functions inherited from both classes to resolve + // ambiguities (this wouldn't be necessary if wxStreamBase were a virtual + // base class but it isn't) + + virtual bool IsSeekable() const + { + return wxFileInputStream::IsSeekable(); + } + + virtual wxFileOffset GetLength() const + { + return wxFileInputStream::GetLength(); + } + +protected: + virtual wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode) + { + return wxFileInputStream::OnSysSeek(pos, mode); + } + + virtual wxFileOffset OnSysTell() const + { + return wxFileInputStream::OnSysTell(); + } + private: wxDECLARE_NO_COPY_CLASS(wxFileStream); }; @@ -193,8 +218,33 @@ class WXDLLIMPEXP_BASE wxFFileStream : public wxFFileInputStream, { public: wxFFileStream(const wxString& fileName, const wxString& mode = "w+b"); + + // override some virtual functions to resolve ambiguities, just as in + // wxFileStream + virtual bool IsOk() const; + virtual bool IsSeekable() const + { + return wxFFileInputStream::IsSeekable(); + } + + virtual wxFileOffset GetLength() const + { + return wxFFileInputStream::GetLength(); + } + +protected: + virtual wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode) + { + return wxFFileInputStream::OnSysSeek(pos, mode); + } + + virtual wxFileOffset OnSysTell() const + { + return wxFFileInputStream::OnSysTell(); + } + private: wxDECLARE_NO_COPY_CLASS(wxFFileStream); }; diff --git a/interface/wx/wfstream.h b/interface/wx/wfstream.h index c6e7845d50..706d656311 100644 --- a/interface/wx/wfstream.h +++ b/interface/wx/wfstream.h @@ -122,7 +122,7 @@ class wxFileOutputStream : public wxOutputStream public: /** Creates a new file with @a ofileName name and initializes the stream in write-only mode. - + @warning You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ @@ -171,7 +171,7 @@ class wxFileInputStream : public wxInputStream public: /** Opens the specified file using its @a ifileName name in read-only mode. - + @warning You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ @@ -253,24 +253,34 @@ public: /** @class wxFFileStream - @todo describe this class. + This stream allows to both read from and write to a file using buffered + STDIO functions. @library{wxbase} @category{streams} - @see wxStreamBuffer + @see wxFFileInputStream, wxFFileOutputStream, wxFileStream */ -class wxFFileStream : public wxFFileOutputStream +class wxFFileStream : public wxFFileInputStream, + public wxFFileOutputStream { public: /** Initializes a new file stream in the given @a mode using the specified @a iofileName name. - + @warning You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFFileStream(const wxString& iofileName, const wxString& mode = "w+b"); + + /** + Returns @true if the stream is initialized and ready. + + This method returns @true if the stream can be both read from and + written to. + */ + bool IsOk() const; }; @@ -278,23 +288,34 @@ public: /** @class wxFileStream - @todo describe this class. + This class represents data that can be both read from and written to a file. + There are actually two such groups of classes: this one is based on wxFile + whereas wxFFileStream is based in the wxFFile class. @library{wxbase} @category{streams} - @see wxStreamBuffer + @see wxFileInputStream, wxFileOutputStream, wxFFileStream */ -class wxFileStream : public wxFileOutputStream +class wxFileStream : public wxFileOutputStream, + public wxFileInputStream { public: /** Initializes a new file stream in read-write mode using the specified @a iofileName name. - + @warning - You should use wxStreamBase::IsOk() to verify if the constructor succeeded. + You should use IsOk() to verify if the constructor succeeded. */ wxFileStream(const wxString& iofileName); + + /** + Returns @true if the stream is initialized and ready. + + This method returns @true if the stream can be both read from and + written to. + */ + bool IsOk() const; };