// Purpose: class for opening files - virtual file system
// Author: Vaclav Slavik
// Copyright: (c) 1999 Vaclav Slavik
-// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/defs.h"
+#if wxUSE_FILESYSTEM
+
#if !wxUSE_STREAMS
#error You cannot compile virtual file systems without wxUSE_STREAMS
#endif
#error You cannot compile wxHTML without virtual file systems
#endif
-#if wxUSE_FILESYSTEM
-
#include "wx/stream.h"
#include "wx/datetime.h"
#include "wx/filename.h"
#include "wx/hashmap.h"
-class WXDLLIMPEXP_BASE wxFSFile;
-class WXDLLIMPEXP_BASE wxFileSystemHandler;
-class WXDLLIMPEXP_BASE wxFileSystem;
+class WXDLLIMPEXP_FWD_BASE wxFSFile;
+class WXDLLIMPEXP_FWD_BASE wxFileSystemHandler;
+class WXDLLIMPEXP_FWD_BASE wxFileSystem;
//--------------------------------------------------------------------------------
// wxFSFile
#endif // wxUSE_DATETIME
DECLARE_ABSTRACT_CLASS(wxFSFile)
- DECLARE_NO_COPY_CLASS(wxFSFile)
+ wxDECLARE_NO_COPY_CLASS(wxFSFile);
};
//--------------------------------------------------------------------------------
// Open Bit Flags
-enum {
+enum wxFileSystemOpenFlags
+{
wxFS_READ = 1, // Open for reading
wxFS_SEEKABLE = 4 // Returned stream will be seekable
};
wxString FindNext();
// find a file in a list of directories, returns false if not found
- bool FindFileInPath(wxString *pStr, const wxChar *path, const wxChar *file);
+ bool FindFileInPath(wxString *pStr,
+ const wxString& path, const wxString& file);
// Adds FS handler.
// In fact, this class is only front-end to the FS handlers :-)
// Handlers local to this instance
DECLARE_DYNAMIC_CLASS(wxFileSystem)
- DECLARE_NO_COPY_CLASS(wxFileSystem)
+ wxDECLARE_NO_COPY_CLASS(wxFileSystem);
};
static wxString ms_root;
};
+// Stream reading data from wxFSFile: this allows to use virtual files with any
+// wx functions accepting streams.
+class WXDLLIMPEXP_BASE wxFSInputStream : public wxWrapperInputStream
+{
+public:
+ // Notice that wxFS_READ is implied in flags.
+ wxFSInputStream(const wxString& filename, int flags = 0);
+ virtual ~wxFSInputStream();
+private:
+ wxFSFile* m_file;
+
+ wxDECLARE_NO_COPY_CLASS(wxFSInputStream);
+};
#endif
// wxUSE_FILESYSTEM