+++ /dev/null
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/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_BACKINGFILE
-
-#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_BACKINGFILE
-
-#endif // _WX_FILEBACK_H__