1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/fs_arc.h 3// Purpose: Archive file system 4// Author: Vaclav Slavik, Mike Wetherell 5// Copyright: (c) 1999 Vaclav Slavik, (c) 2006 Mike Wetherell 6// CVS-ID: $Id: fs_arc.h 42713 2006-10-30 11:56:12Z ABX $ 7// Licence: wxWindows licence 8///////////////////////////////////////////////////////////////////////////// 9 10#ifndef _WX_FS_ARC_H_ 11#define _WX_FS_ARC_H_ 12 13#include "wx/defs.h" 14 15#if wxUSE_FS_ARCHIVE 16 17#include "wx/filesys.h" 18#include "wx/hashmap.h" 19 20WX_DECLARE_STRING_HASH_MAP(int, wxArchiveFilenameHashMap); 21 22//--------------------------------------------------------------------------- 23// wxArchiveFSHandler 24//--------------------------------------------------------------------------- 25 26class WXDLLIMPEXP_BASE wxArchiveFSHandler : public wxFileSystemHandler 27{ 28public: 29 wxArchiveFSHandler(); 30 virtual bool CanOpen(const wxString& location); 31 virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location); 32 virtual wxString FindFirst(const wxString& spec, int flags = 0); 33 virtual wxString FindNext(); 34 void Cleanup(); 35 virtual ~wxArchiveFSHandler(); 36 37private: 38 class wxArchiveFSCache *m_cache; 39 wxFileSystem m_fs; 40 41 // these vars are used by FindFirst/Next: 42 class wxArchiveFSCacheData *m_Archive; 43 struct wxArchiveFSEntry *m_FindEntry; 44 wxString m_Pattern, m_BaseDir, m_ZipFile; 45 bool m_AllowDirs, m_AllowFiles; 46 wxArchiveFilenameHashMap *m_DirsFound; 47 48 wxString DoFind(); 49 50 DECLARE_NO_COPY_CLASS(wxArchiveFSHandler) 51 DECLARE_DYNAMIC_CLASS(wxArchiveFSHandler) 52}; 53 54#endif // wxUSE_FS_ARCHIVE 55 56#endif // _WX_FS_ARC_H_ 57