zipfile.h
Go to the documentation of this file.00001 #ifndef ZIPFILE_H
00002 #define ZIPFILE_H
00003
00004 #include "zipios-config.h"
00005
00006 #include <vector>
00007 #include "meta-iostreams.h"
00008
00009 #include "fcoll.h"
00010 #include "ziphead.h"
00011 #include "virtualseeker.h"
00012
00013 namespace zipios {
00014
00015 using std::ifstream ;
00016
00020 class BaseExport ZipFile : public FileCollection {
00021 public:
00033 static ZipFile openEmbeddedZipFile( const string &name ) ;
00034
00037 ZipFile() {}
00038
00039
00040
00055 explicit ZipFile( const string &name, int s_off = 0, int e_off = 0
00056 ) ;
00057
00058 virtual FileCollection *clone() const ;
00059
00061 virtual ~ZipFile() ;
00062
00063 virtual void close() ;
00064
00065 virtual istream *getInputStream( const ConstEntryPointer &entry ) ;
00066 virtual istream *getInputStream( const string &entry_name,
00067 MatchPath matchpath = MATCH ) ;
00068 private:
00069 VirtualSeeker _vs ;
00070 EndOfCentralDirectory _eocd ;
00071
00072 bool init( istream &_zipfile ) ;
00073 bool readCentralDirectory( istream &_zipfile ) ;
00074 bool readEndOfCentralDirectory( istream &_zipfile ) ;
00075 bool confirmLocalHeaders( istream &_zipfile ) ;
00076 void setError( string error_str ) ;
00077 };
00078
00079 }
00080
00081 #endif
00082
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104