X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd5e2346d39a5465b8b15da90cef6138735fd76b..1721a8c028d3b6a553634c632117fbfac102a30e:/include/wx/wfstream.h?ds=sidebyside diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h index 29f13ca1e4..2883714874 100644 --- a/include/wx/wfstream.h +++ b/include/wx/wfstream.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wfstream.h +// Name: wx/wfstream.h // Purpose: File stream classes // Author: Guilhem Lavaux // Modified by: @@ -12,70 +12,160 @@ #ifndef _WX_WXFSTREAM_H__ #define _WX_WXFSTREAM_H__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "wfstream.h" #endif -#include -#include -#include -#include +#include "wx/defs.h" -class wxFileInputStream: public wxInputStream { - public: - wxFileInputStream(const wxString& ifileName); - wxFileInputStream(wxFile& file); - wxFileInputStream(int fd); - ~wxFileInputStream(); +#if wxUSE_STREAMS && wxUSE_FILE - char Peek(); - size_t StreamSize() const; +#include "wx/object.h" +#include "wx/string.h" +#include "wx/stream.h" +#include "wx/file.h" +#include "wx/ffile.h" - bool Ok() const { return m_file->IsOpened(); } +// ---------------------------------------------------------------------------- +// wxFileStream using wxFile +// ---------------------------------------------------------------------------- - protected: - wxFileInputStream(); +class WXDLLIMPEXP_BASE wxFileInputStream : public wxInputStream +{ +public: + wxFileInputStream(const wxString& ifileName); + wxFileInputStream(wxFile& file); + wxFileInputStream(int fd); + ~wxFileInputStream(); - size_t OnSysRead(void *buffer, size_t size); - off_t OnSysSeek(off_t pos, wxSeekMode mode); - off_t OnSysTell() const; + wxFileOffset GetLength() const; - protected: - wxFile *m_file; - bool m_file_destroy; + bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } + +protected: + wxFileInputStream(); + + size_t OnSysRead(void *buffer, size_t size); + 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 { - public: - wxFileOutputStream(const wxString& fileName); - wxFileOutputStream(wxFile& file); - wxFileOutputStream(int fd); - virtual ~wxFileOutputStream(); +class WXDLLIMPEXP_BASE wxFileOutputStream : public wxOutputStream +{ +public: + wxFileOutputStream(const wxString& fileName); + wxFileOutputStream(wxFile& file); + wxFileOutputStream(int fd); + virtual ~wxFileOutputStream(); - // 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; - void Sync(); - size_t StreamSize() const; + bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } - bool Ok() const { return m_file->IsOpened(); } +protected: + wxFileOutputStream(); - protected: - wxFileOutputStream(); + size_t OnSysWrite(const void *buffer, size_t size); + wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode); + wxFileOffset OnSysTell() const; - size_t OnSysWrite(const void *buffer, size_t size); - off_t OnSysSeek(off_t pos, wxSeekMode mode); - off_t OnSysTell() const; +protected: + wxFile *m_file; + bool m_file_destroy; - protected: - wxFile *m_file; - bool m_file_destroy; + DECLARE_NO_COPY_CLASS(wxFileOutputStream) }; -class wxFileStream: public wxFileInputStream, public wxFileOutputStream { - public: - wxFileStream(const wxString& fileName); +class WXDLLIMPEXP_BASE wxFileStream : public wxFileInputStream, + public wxFileOutputStream +{ +public: + wxFileStream(const wxString& fileName); + +private: + DECLARE_NO_COPY_CLASS(wxFileStream) }; -#endif +// ---------------------------------------------------------------------------- +// wxFFileStream using wxFFile +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_BASE wxFFileInputStream : public wxInputStream +{ +public: + wxFFileInputStream(const wxString& fileName, const wxChar *mode = _T("rb")); + wxFFileInputStream(wxFFile& file); + wxFFileInputStream(FILE *file); + ~wxFFileInputStream(); + + wxFileOffset GetLength() const; + + bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } + +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, const wxChar *mode = _T("w+b")); + wxFFileOutputStream(wxFFile& file); + wxFFileOutputStream(FILE *file); + virtual ~wxFFileOutputStream(); + + void Sync(); + bool Close() { return m_file_destroy ? m_file->Close() : true; } + wxFileOffset GetLength() const; + + bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } + +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 // wxUSE_STREAMS && wxUSE_FILE + +#endif // _WX_WXFSTREAM_H__