00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __CHMINPUTSTREAM_H_
00023 #define __CHMINPUTSTREAM_H_
00024
00025 #include <wx/stream.h>
00026 #include <chmfile.h>
00027
00028
00035
00036 class CHMInputStream : public wxInputStream
00037 {
00038 public:
00046 CHMInputStream(const wxString& archive, const wxString& file);
00047
00049 virtual size_t GetSize() const;
00050
00052 virtual bool Eof() const;
00053
00061 static CHMFile* GetCache();
00068 static void Cleanup();
00069
00070 protected:
00077 virtual size_t OnSysRead(void *buffer, size_t bufsize);
00078
00085 virtual off_t OnSysSeek(off_t seek, wxSeekMode mode);
00086
00091 virtual off_t OnSysTell() const { return _currPos; }
00092
00093 private:
00095 bool Init(const wxString& archive);
00096
00097
00098 private:
00099 static CHMFile *_archiveCache;
00100 off_t _currPos;
00101 chmUnitInfo _ui;
00102 static wxString _path;
00103 };
00104
00105 #endif // __CHMINPUTSTREAM_H_
00106