X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33a702bf7068407e7d4d3f2b51765bbc6d5ff305..43c42c18d36c703a88b1b7b697bac27fe5608eca:/include/wx/filesys.h?ds=inline diff --git a/include/wx/filesys.h b/include/wx/filesys.h index 69d4ffd284..026fff1f28 100644 --- a/include/wx/filesys.h +++ b/include/wx/filesys.h @@ -12,6 +12,8 @@ #include "wx/defs.h" +#if wxUSE_FILESYSTEM + #if !wxUSE_STREAMS #error You cannot compile virtual file systems without wxUSE_STREAMS #endif @@ -20,16 +22,14 @@ #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 @@ -50,7 +50,7 @@ public: { m_Stream = stream; m_Location = loc; - m_MimeType = mimetype; m_MimeType.MakeLower(); + m_MimeType = mimetype.Lower(); m_Anchor = anchor; #if wxUSE_DATETIME m_Modif = modif; @@ -78,7 +78,7 @@ public: } // returns file's mime type - const wxString& GetMimeType() const { return m_MimeType; } + const wxString& GetMimeType() const; // returns the original location (aka filename) of the file const wxString& GetLocation() const { return m_Location; } @@ -99,7 +99,7 @@ private: #endif // wxUSE_DATETIME DECLARE_ABSTRACT_CLASS(wxFSFile) - DECLARE_NO_COPY_CLASS(wxFSFile) + wxDECLARE_NO_COPY_CLASS(wxFSFile); }; @@ -132,28 +132,28 @@ public: virtual wxString FindFirst(const wxString& spec, int flags = 0); virtual wxString FindNext(); + // Returns MIME type of the file - w/o need to open it + // (default behaviour is that it returns type based on extension) + static wxString GetMimeTypeFromExt(const wxString& location); + protected: // returns protocol ("file", "http", "tar" etc.) The last (most right) // protocol is used: // {it returns "tar" for "file:subdir/archive.tar.gz#tar:/README.txt"} - wxString GetProtocol(const wxString& location) const; + static wxString GetProtocol(const wxString& location); // returns left part of address: // {it returns "file:subdir/archive.tar.gz" for "file:subdir/archive.tar.gz#tar:/README.txt"} - wxString GetLeftLocation(const wxString& location) const; + static wxString GetLeftLocation(const wxString& location); // returns anchor part of address: // {it returns "anchor" for "file:subdir/archive.tar.gz#tar:/README.txt#anchor"} // NOTE: anchor is NOT a part of GetLeftLocation()'s return value - wxString GetAnchor(const wxString& location) const; + static wxString GetAnchor(const wxString& location); // returns right part of address: // {it returns "/README.txt" for "file:subdir/archive.tar.gz#tar:/README.txt"} - wxString GetRightLocation(const wxString& location) const; - - // Returns MIME type of the file - w/o need to open it - // (default behaviour is that it returns type based on extension) - wxString GetMimeTypeFromExt(const wxString& location); + static wxString GetRightLocation(const wxString& location); DECLARE_ABSTRACT_CLASS(wxFileSystemHandler) }; @@ -168,7 +168,8 @@ protected: //-------------------------------------------------------------------------------- // Open Bit Flags -enum { +enum wxFileSystemOpenFlags +{ wxFS_READ = 1, // Open for reading wxFS_SEEKABLE = 4 // Returned stream will be seekable }; @@ -205,7 +206,8 @@ public: 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 :-) @@ -245,7 +247,7 @@ protected: // Handlers local to this instance DECLARE_DYNAMIC_CLASS(wxFileSystem) - DECLARE_NO_COPY_CLASS(wxFileSystem) + wxDECLARE_NO_COPY_CLASS(wxFileSystem); }; @@ -291,7 +293,20 @@ protected: 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