git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			169 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wfstream.h
 | |
| // Purpose:     File stream classes
 | |
| // Author:      Guilhem Lavaux
 | |
| // Modified by:
 | |
| // Created:     11/07/98
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Guilhem Lavaux
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_WXFSTREAM_H__
 | |
| #define _WX_WXFSTREAM_H__
 | |
| 
 | |
| #if defined(__GNUG__) && !defined(__APPLE__)
 | |
| #pragma interface "wfstream.h"
 | |
| #endif
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #if wxUSE_STREAMS && wxUSE_FILE
 | |
| 
 | |
| #include "wx/object.h"
 | |
| #include "wx/string.h"
 | |
| #include "wx/stream.h"
 | |
| #include "wx/file.h"
 | |
| #include "wx/ffile.h"
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxFileStream using wxFile
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLEXPORT wxFileInputStream: public wxInputStream {
 | |
|  public:
 | |
|   wxFileInputStream(const wxString& ifileName);
 | |
|   wxFileInputStream(wxFile& file);
 | |
|   wxFileInputStream(int fd);
 | |
|   ~wxFileInputStream();
 | |
| 
 | |
|   size_t GetSize() const;
 | |
| 
 | |
|   bool Ok() const { return m_file->IsOpened(); }
 | |
| 
 | |
|  protected:
 | |
|   wxFileInputStream();
 | |
| 
 | |
|   size_t OnSysRead(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;
 | |
| 
 | |
|     DECLARE_NO_COPY_CLASS(wxFileInputStream)
 | |
| };
 | |
| 
 | |
| class WXDLLEXPORT 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();
 | |
|   size_t GetSize() const;
 | |
| 
 | |
|   bool Ok() const { return m_file->IsOpened(); }
 | |
| 
 | |
|  protected:
 | |
|   wxFileOutputStream();
 | |
| 
 | |
|   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;
 | |
| 
 | |
|     DECLARE_NO_COPY_CLASS(wxFileOutputStream)
 | |
| };
 | |
| 
 | |
| class WXDLLEXPORT wxFileStream: public wxFileInputStream, public wxFileOutputStream {
 | |
|  public:
 | |
|   wxFileStream(const wxString& fileName);
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxFFileStream using wxFFile
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLEXPORT wxFFileInputStream: public wxInputStream {
 | |
|  public:
 | |
|   wxFFileInputStream(const wxString& ifileName);
 | |
|   wxFFileInputStream(wxFFile& file);
 | |
|   wxFFileInputStream(FILE *file);
 | |
|   ~wxFFileInputStream();
 | |
| 
 | |
|   size_t GetSize() const;
 | |
| 
 | |
|   bool Ok() const { return m_file->IsOpened(); }
 | |
| 
 | |
|  protected:
 | |
|   wxFFileInputStream();
 | |
| 
 | |
|   size_t OnSysRead(void *buffer, size_t size);
 | |
|   off_t OnSysSeek(off_t pos, wxSeekMode mode);
 | |
|   off_t OnSysTell() const;
 | |
| 
 | |
|  protected:
 | |
|   wxFFile *m_file;
 | |
|   bool m_file_destroy;
 | |
| 
 | |
|     DECLARE_NO_COPY_CLASS(wxFFileInputStream)
 | |
| };
 | |
| 
 | |
| class WXDLLEXPORT 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();
 | |
|   size_t GetSize() const;
 | |
| 
 | |
|   bool Ok() const { return m_file->IsOpened(); }
 | |
| 
 | |
|  protected:
 | |
|   wxFFileOutputStream();
 | |
| 
 | |
|   size_t OnSysWrite(const void *buffer, size_t size);
 | |
|   off_t OnSysSeek(off_t pos, wxSeekMode mode);
 | |
|   off_t OnSysTell() const;
 | |
| 
 | |
|  protected:
 | |
|   wxFFile *m_file;
 | |
|   bool m_file_destroy;
 | |
| 
 | |
|     DECLARE_NO_COPY_CLASS(wxFFileOutputStream)
 | |
| };
 | |
| 
 | |
| class WXDLLEXPORT wxFFileStream: public wxFFileInputStream, public wxFFileOutputStream {
 | |
|  public:
 | |
|   wxFFileStream(const wxString& fileName);
 | |
| };
 | |
| #endif
 | |
|   // wxUSE_STREAMS && wxUSE_FILE
 | |
| 
 | |
| #endif
 | |
|   // _WX_WXFSTREAM_H__
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |