/[pcsx2_0.9.7]/trunk/3rdparty/wxWidgets/include/wx/private/fileback.h
ViewVC logotype

Contents of /trunk/3rdparty/wxWidgets/include/wx/private/fileback.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (show annotations) (download)
Mon Sep 6 11:40:06 2010 UTC (9 years, 5 months ago) by william
File MIME type: text/plain
File size: 2777 byte(s)
exported r3113 from ./upstream/trunk
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: include/wx/private/fileback.h
3 // Purpose: Back an input stream with memory or a file
4 // Author: Mike Wetherell
5 // RCS-ID: $Id: fileback.h 42651 2006-10-29 20:06:45Z MW $
6 // Copyright: (c) 2006 Mike Wetherell
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifndef _WX_FILEBACK_H__
11 #define _WX_FILEBACK_H__
12
13 #include "wx/defs.h"
14
15 #if wxUSE_FILESYSTEM
16
17 #include "wx/stream.h"
18
19 // ----------------------------------------------------------------------------
20 // Backs an input stream with memory or a file to make it seekable.
21 //
22 // One or more wxBackedInputStreams can be used to read it's data. The data is
23 // reference counted, so stays alive until the last wxBackingFile or
24 // wxBackedInputStream using it is destroyed.
25 // ----------------------------------------------------------------------------
26
27 class WXDLLIMPEXP_BASE wxBackingFile
28 {
29 public:
30 enum { DefaultBufSize = 16384 };
31
32 // Takes ownership of stream. If the stream is smaller than bufsize, the
33 // backing file is never created and the backing is done with memory.
34 wxBackingFile(wxInputStream *stream,
35 size_t bufsize = DefaultBufSize,
36 const wxString& prefix = _T("wxbf"));
37
38 wxBackingFile() : m_impl(NULL) { }
39 ~wxBackingFile();
40
41 wxBackingFile(const wxBackingFile& backer);
42 wxBackingFile& operator=(const wxBackingFile& backer);
43
44 operator bool() const { return m_impl != NULL; }
45
46 private:
47 class wxBackingFileImpl *m_impl;
48 friend class wxBackedInputStream;
49 };
50
51 // ----------------------------------------------------------------------------
52 // An input stream to read from a wxBackingFile.
53 // ----------------------------------------------------------------------------
54
55 class WXDLLIMPEXP_BASE wxBackedInputStream : public wxInputStream
56 {
57 public:
58 wxBackedInputStream(const wxBackingFile& backer);
59
60 // If the length of the backer's parent stream is unknown then GetLength()
61 // returns wxInvalidOffset until the parent has been read to the end.
62 wxFileOffset GetLength() const;
63
64 // Returns the length, reading the parent stream to the end if necessary.
65 wxFileOffset FindLength() const;
66
67 bool IsSeekable() const { return true; }
68
69 protected:
70 size_t OnSysRead(void *buffer, size_t size);
71 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
72 wxFileOffset OnSysTell() const;
73
74 private:
75 wxBackingFile m_backer;
76 wxFileOffset m_pos;
77
78 DECLARE_NO_COPY_CLASS(wxBackedInputStream)
79 };
80
81 #endif // wxUSE_FILESYSTEM
82
83 #endif // _WX_FILEBACK_H__

  ViewVC Help
Powered by ViewVC 1.1.22