]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/fs_arc.h
A better fix for wxHash{Map,Set} with g++ 4.7.
[wxWidgets.git] / include / wx / fs_arc.h
index e98b3f82ad48f02b262ed7a2d276e37648613a09..583a5104f6ad6e297d0307b3ad92b69bea8207d8 100644 (file)
@@ -1,56 +1,56 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        fs_zip.h
-// Purpose:     ZIP file system
-// Author:      Vaclav Slavik
-// Copyright:   (c) 1999 Vaclav Slavik
+// Name:        wx/fs_arc.h
+// Purpose:     Archive file system
+// Author:      Vaclav Slavik, Mike Wetherell
+// Copyright:   (c) 1999 Vaclav Slavik, (c) 2006 Mike Wetherell
 // CVS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // CVS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef _WX_FS_ZIP_H_
-#define _WX_FS_ZIP_H_
+#ifndef _WX_FS_ARC_H_
+#define _WX_FS_ARC_H_
 
 #include "wx/defs.h"
 
 
 #include "wx/defs.h"
 
-#if wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS
+#if wxUSE_FS_ARCHIVE
 
 #include "wx/filesys.h"
 #include "wx/hashmap.h"
 
 
 #include "wx/filesys.h"
 #include "wx/hashmap.h"
 
-
-WX_DECLARE_STRING_HASH_MAP(int, wxZipFilenameHashMap);
-
+WX_DECLARE_STRING_HASH_MAP(int, wxArchiveFilenameHashMap);
 
 //---------------------------------------------------------------------------
 
 //---------------------------------------------------------------------------
-// wxZipFSHandler
+// wxArchiveFSHandler
 //---------------------------------------------------------------------------
 
 //---------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxZipFSHandler : public wxFileSystemHandler
+class WXDLLIMPEXP_BASE wxArchiveFSHandler : public wxFileSystemHandler
 {
 {
-    public:
-        wxZipFSHandler();
-        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();
-        void Cleanup();
-        virtual ~wxZipFSHandler();
-
-    private:
-        // these vars are used by FindFirst/Next:
-        class wxZipInputStream *m_Archive;
-        wxString m_Pattern, m_BaseDir, m_ZipFile;
-        bool m_AllowDirs, m_AllowFiles;
-        wxZipFilenameHashMap *m_DirsFound;
-
-        wxString DoFind();
-
-    DECLARE_NO_COPY_CLASS(wxZipFSHandler)
+public:
+    wxArchiveFSHandler();
+    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();
+    void Cleanup();
+    virtual ~wxArchiveFSHandler();
+
+private:
+    class wxArchiveFSCache *m_cache;
+    wxFileSystem m_fs;
+
+    // these vars are used by FindFirst/Next:
+    class wxArchiveFSCacheData *m_Archive;
+    struct wxArchiveFSEntry *m_FindEntry;
+    wxString m_Pattern, m_BaseDir, m_ZipFile;
+    bool m_AllowDirs, m_AllowFiles;
+    wxArchiveFilenameHashMap *m_DirsFound;
+
+    wxString DoFind();
+
+    wxDECLARE_NO_COPY_CLASS(wxArchiveFSHandler);
+    DECLARE_DYNAMIC_CLASS(wxArchiveFSHandler)
 };
 
 };
 
+#endif // wxUSE_FS_ARCHIVE
 
 
-#endif
-  // wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS
-
-#endif // _WX_FS_ZIP_H_
-
+#endif // _WX_FS_ARC_H_