X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed58dbeab64d18a0f869ea8e1610a0a88ad7b22c..549c8cc2fe3ab03276745d546b0f81297c34a147:/include/wx/wfstream.h?ds=inline diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h index 33217d75b5..b26ec29f5b 100644 --- a/include/wx/wfstream.h +++ b/include/wx/wfstream.h @@ -12,7 +12,7 @@ #ifndef _WX_WXFSTREAM_H__ #define _WX_WXFSTREAM_H__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "wfstream.h" #endif @@ -24,15 +24,20 @@ #include "wx/string.h" #include "wx/stream.h" #include "wx/file.h" +#include "wx/ffile.h" -class wxFileInputStream: public wxInputStream { +// ---------------------------------------------------------------------------- +// wxFileStream using wxFile +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_BASE wxFileInputStream: public wxInputStream { public: wxFileInputStream(const wxString& ifileName); wxFileInputStream(wxFile& file); wxFileInputStream(int fd); ~wxFileInputStream(); - size_t GetSize() const; + wxFileOffset GetLength() const; bool Ok() const { return m_file->IsOpened(); } @@ -40,15 +45,17 @@ class wxFileInputStream: public wxInputStream { wxFileInputStream(); size_t OnSysRead(void *buffer, size_t size); - off_t OnSysSeek(off_t pos, wxSeekMode mode); - off_t OnSysTell() const; + wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode); + wxFileOffset OnSysTell() const; protected: wxFile *m_file; bool m_file_destroy; + + DECLARE_NO_COPY_CLASS(wxFileInputStream) }; -class wxFileOutputStream: public wxOutputStream { +class WXDLLIMPEXP_BASE wxFileOutputStream: public wxOutputStream { public: wxFileOutputStream(const wxString& fileName); wxFileOutputStream(wxFile& file); @@ -60,7 +67,8 @@ class wxFileOutputStream: public wxOutputStream { // { return wxOutputStream::Write(buffer, size); } void Sync(); - size_t GetSize() const; + bool Close() { return m_file_destroy ? m_file->Close() : true; } + wxFileOffset GetLength() const; bool Ok() const { return m_file->IsOpened(); } @@ -68,17 +76,94 @@ class wxFileOutputStream: public wxOutputStream { wxFileOutputStream(); size_t OnSysWrite(const void *buffer, size_t size); - off_t OnSysSeek(off_t pos, wxSeekMode mode); - off_t OnSysTell() const; + wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode); + wxFileOffset OnSysTell() const; protected: wxFile *m_file; bool m_file_destroy; + + DECLARE_NO_COPY_CLASS(wxFileOutputStream) +}; + +class WXDLLIMPEXP_BASE wxFileStream : public wxFileInputStream, + public wxFileOutputStream +{ +public: + wxFileStream(const wxString& fileName); + +private: + DECLARE_NO_COPY_CLASS(wxFileStream) }; -class wxFileStream: public wxFileInputStream, public wxFileOutputStream { +// ---------------------------------------------------------------------------- +// wxFFileStream using wxFFile +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_BASE wxFFileInputStream: public wxInputStream { public: - wxFileStream(const wxString& fileName); + wxFFileInputStream(const wxString& ifileName); + wxFFileInputStream(wxFFile& file); + wxFFileInputStream(FILE *file); + ~wxFFileInputStream(); + + wxFileOffset GetLength() const; + + bool Ok() const { return m_file->IsOpened(); } + + protected: + wxFFileInputStream(); + + size_t OnSysRead(void *buffer, size_t size); + wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode); + wxFileOffset OnSysTell() const; + + protected: + wxFFile *m_file; + bool m_file_destroy; + + DECLARE_NO_COPY_CLASS(wxFFileInputStream) +}; + +class WXDLLIMPEXP_BASE wxFFileOutputStream: public wxOutputStream { + public: + wxFFileOutputStream(const wxString& fileName); + wxFFileOutputStream(wxFFile& file); + wxFFileOutputStream(FILE *file); + virtual ~wxFFileOutputStream(); + + // To solve an ambiguity on GCC +// inline wxOutputStream& Write(const void *buffer, size_t size) +// { return wxOutputStream::Write(buffer, size); } + + void Sync(); + bool Close() { return m_file_destroy ? m_file->Close() : true; } + wxFileOffset GetLength() const; + + bool Ok() const { return m_file->IsOpened(); } + + protected: + wxFFileOutputStream(); + + size_t OnSysWrite(const void *buffer, size_t size); + wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode); + wxFileOffset OnSysTell() const; + + protected: + wxFFile *m_file; + bool m_file_destroy; + + DECLARE_NO_COPY_CLASS(wxFFileOutputStream) +}; + +class WXDLLIMPEXP_BASE wxFFileStream : public wxFFileInputStream, + public wxFFileOutputStream +{ +public: + wxFFileStream(const wxString& fileName); + +private: + DECLARE_NO_COPY_CLASS(wxFFileStream) }; #endif @@ -87,3 +172,10 @@ class wxFileStream: public wxFileInputStream, public wxFileOutputStream { #endif // _WX_WXFSTREAM_H__ + + + + + + +