#ifndef __FILESYS_H__
#define __FILESYS_H__
-#ifdef __GNUG__
-#pragma interface
+#if defined(__GNUG__) && !defined(__APPLE__)
+#pragma interface "filesys.h"
#endif
#include "wx/setup.h"
#include "wx/stream.h"
#include "wx/url.h"
#include "wx/datetime.h"
+#include "wx/filename.h"
class wxFSFile;
class wxFileSystemHandler;
// (in 'index.htm#chapter2', 'chapter2' is anchor)
//--------------------------------------------------------------------------------
-class WXDLLEXPORT wxFSFile : public wxObject
+class WXDLLIMPEXP_BASE wxFSFile : public wxObject
{
public:
- wxFSFile(wxInputStream *stream, const wxString& loc,
- const wxString& mimetype, const wxString& anchor,
- wxDateTime modif)
+ wxFSFile(wxInputStream *stream, const wxString& loc,
+ const wxString& mimetype, const wxString& anchor
+#if wxUSE_DATETIME
+ , wxDateTime modif
+#endif // wxUSE_DATETIME
+ )
{
m_Stream = stream;
m_Location = loc;
m_MimeType = mimetype; m_MimeType.MakeLower();
m_Anchor = anchor;
+#if wxUSE_DATETIME
m_Modif = modif;
+#endif // wxUSE_DATETIME
}
+
virtual ~wxFSFile() { if (m_Stream) delete m_Stream; }
// returns stream. This doesn't _create_ stream, it only returns
- // pointer to it!!
+ // pointer to it.
wxInputStream *GetStream() const {return m_Stream;}
// returns file's mime type
const wxString& GetAnchor() const {return m_Anchor;}
+#if wxUSE_DATETIME
wxDateTime GetModificationTime() const {return m_Modif;}
+#endif // wxUSE_DATETIME
private:
wxInputStream *m_Stream;
wxString m_Location;
wxString m_MimeType;
wxString m_Anchor;
+#if wxUSE_DATETIME
wxDateTime m_Modif;
+#endif // wxUSE_DATETIME
+
+ DECLARE_ABSTRACT_CLASS(wxFSFile)
+ DECLARE_NO_COPY_CLASS(wxFSFile)
};
// kinds of files (HTPP, FTP, local, tar.gz etc..)
//--------------------------------------------------------------------------------
-class WXDLLEXPORT wxFileSystemHandler : public wxObject
+class WXDLLIMPEXP_BASE wxFileSystemHandler : public wxObject
{
public:
wxFileSystemHandler() : wxObject() {}
// kinds of files (HTPP, FTP, local, tar.gz etc..)
//--------------------------------------------------------------------------------
-class WXDLLEXPORT wxFileSystem : public wxObject
+class WXDLLIMPEXP_BASE wxFileSystem : public wxObject
{
public:
- wxFileSystem() : wxObject() {m_Path = m_LastName = wxEmptyString; m_Handlers.DeleteContents(TRUE); m_FindFileHandler = NULL;}
+ wxFileSystem() : wxObject() { m_FindFileHandler = NULL;}
+ virtual ~wxFileSystem() { }
// sets the current location. Every call to OpenFile is
// relative to this location.
// remove all items from the m_Handlers list
static void CleanUpHandlers();
+ // Returns the native path for a file URL
+ static wxFileName URLToFileName(const wxString& url);
+
+ // Returns the file URL for a native path
+ static wxString FileNameToURL(const wxFileName& filename);
+
+
protected:
wxString m_Path;
// the path (location) we are currently in
// handler that succeed in FindFirst query
DECLARE_DYNAMIC_CLASS(wxFileSystem)
+ DECLARE_NO_COPY_CLASS(wxFileSystem)
};
*/
-class wxLocalFSHandler : public wxFileSystemHandler
+class WXDLLIMPEXP_BASE wxLocalFSHandler : public wxFileSystemHandler
{
public:
virtual bool CanOpen(const wxString& location);
virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
virtual wxString FindFirst(const wxString& spec, int flags = 0);
virtual wxString FindNext();
-
+
// wxLocalFSHandler will prefix all filenames with 'root' before accessing
// files on disk. This effectively makes 'root' the top-level directory
- // and prevents access to files outside this directory.
+ // and prevents access to files outside this directory.
// (This is similar to Unix command 'chroot'.)
static void Chroot(const wxString& root) { ms_root = root; }
-
+
protected:
static wxString ms_root;
};