wxArchiveFSHandler for compatibilty. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42651 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        include/wx/private/fileback.h
 | |
| // Purpose:     Back an input stream with memory or a file
 | |
| // Author:      Mike Wetherell
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) 2006 Mike Wetherell
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_FILEBACK_H__
 | |
| #define _WX_FILEBACK_H__
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #if wxUSE_FILESYSTEM
 | |
| 
 | |
| #include "wx/stream.h"
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // Backs an input stream with memory or a file to make it seekable.
 | |
| //
 | |
| // One or more wxBackedInputStreams can be used to read it's data. The data is
 | |
| // reference counted, so stays alive until the last wxBackingFile or
 | |
| // wxBackedInputStream using it is destroyed.
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLIMPEXP_BASE wxBackingFile
 | |
| {
 | |
| public:
 | |
|     enum { DefaultBufSize = 16384 };
 | |
| 
 | |
|     // Takes ownership of stream. If the stream is smaller than bufsize, the
 | |
|     // backing file is never created and the backing is done with memory.
 | |
|     wxBackingFile(wxInputStream *stream,
 | |
|                   size_t bufsize = DefaultBufSize,
 | |
|                   const wxString& prefix = _T("wxbf"));
 | |
| 
 | |
|     wxBackingFile() : m_impl(NULL) { }
 | |
|     ~wxBackingFile();
 | |
| 
 | |
|     wxBackingFile(const wxBackingFile& backer);
 | |
|     wxBackingFile& operator=(const wxBackingFile& backer);
 | |
| 
 | |
|     operator bool() const { return m_impl != NULL; }
 | |
| 
 | |
| private:
 | |
|     class wxBackingFileImpl *m_impl;
 | |
|     friend class wxBackedInputStream;
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // An input stream to read from a wxBackingFile.
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLIMPEXP_BASE wxBackedInputStream : public wxInputStream
 | |
| {
 | |
| public:
 | |
|     wxBackedInputStream(const wxBackingFile& backer);
 | |
| 
 | |
|     // If the length of the backer's parent stream is unknown then GetLength()
 | |
|     // returns wxInvalidOffset until the parent has been read to the end.
 | |
|     wxFileOffset GetLength() const;
 | |
| 
 | |
|     // Returns the length, reading the parent stream to the end if necessary.
 | |
|     wxFileOffset FindLength() const;
 | |
| 
 | |
|     bool IsSeekable() const { return true; }
 | |
| 
 | |
| protected:
 | |
|     size_t OnSysRead(void *buffer, size_t size);
 | |
|     wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
 | |
|     wxFileOffset OnSysTell() const;
 | |
| 
 | |
| private:
 | |
|     wxBackingFile m_backer;
 | |
|     wxFileOffset m_pos;
 | |
| 
 | |
|     DECLARE_NO_COPY_CLASS(wxBackedInputStream)
 | |
| };
 | |
| 
 | |
| #endif // wxUSE_FILESYSTEM
 | |
| 
 | |
| #endif // _WX_FILEBACK_H__
 |