home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / zipstrm.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  2KB  |  60 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        zipstream.h
  3. // Purpose:     wxZipInputStream for reading files from ZIP archive
  4. // Author:      Vaclav Slavik
  5. // Copyright:   (c) 1999 Vaclav Slavik
  6. // Licence:     wxWindows Licence
  7. /////////////////////////////////////////////////////////////////////////////
  8.  
  9. #ifndef __ZIPSTREAM_H__
  10. #define __ZIPSTREAM_H__
  11.  
  12. #if defined(__GNUG__) && !defined(__APPLE__)
  13. #pragma interface "zipstrm.h"
  14. #endif
  15.  
  16. #include "wx/defs.h"
  17.  
  18. #if wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB 
  19.  
  20. #include "wx/stream.h"
  21.  
  22. //--------------------------------------------------------------------------------
  23. // wxZipInputStream
  24. //                  This class is input stream from ZIP archive. The archive
  25. //                  must be local file (accessible via FILE*)
  26. //--------------------------------------------------------------------------------
  27.  
  28.  
  29. class WXDLLEXPORT wxZipInputStream : public wxInputStream
  30. {
  31. public:
  32.     wxZipInputStream(const wxString& archive, const wxString& file);
  33.             // archive is name of .zip archive, file is name of file to be extracted.
  34.             // Remember that archive must be local file accesible via fopen, fread functions!
  35.     ~wxZipInputStream();
  36.  
  37.     virtual size_t GetSize() const {return m_Size;}
  38.     virtual bool Eof() const;
  39.  
  40. protected:
  41.     virtual size_t OnSysRead(void *buffer, size_t bufsize);
  42.     virtual off_t OnSysSeek(off_t seek, wxSeekMode mode);
  43.     virtual off_t OnSysTell() const {return m_Pos;}
  44.  
  45. private:
  46.     size_t m_Size;
  47.     off_t m_Pos;
  48.  
  49.     // this void* is handle of archive . I'm sorry it is void and not proper
  50.     // type but I don't want to make unzip.h header public.
  51.     void *m_Archive;
  52. };
  53.  
  54.  
  55. #endif 
  56.    // wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB 
  57.  
  58. #endif 
  59.    // __ZIPSTREAM_H__
  60.