home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2003 May / VPR0305.ISO / OLS / TAR32223 / tar32223.lzh / tar32_2 / src / arcfile.h < prev    next >
C/C++ Source or Header  |  2003-01-17  |  1KB  |  44 lines

  1. /*
  2.     arcfile.h
  3.         archive file input/output virtual class.
  4.         by Yoshioka Tsuneo(QWF00133@nifty.ne.jp)
  5. */
  6. #ifndef __ARCFILE_H
  7. #define __ARCFILE_H
  8. #include <string>
  9. using namespace std;
  10.  
  11. #define ARCHIVETYPE_AUTO -1
  12. // enum{TARARCFILE_AUTO, TARARCFILE_NORMAL,TARARCFILE_GZIP,TARARCFILE_BZIP2};
  13. #define interface struct
  14. interface ITarArcFile{
  15.     static ITarArcFile *s_open(const char *arcfile, const char *mode, int type);
  16.     static int s_get_archive_type(const char *arcfile);
  17.     virtual bool open(const char *arcfile, const char *mode) = 0;
  18.     virtual int read(void *buf, int size) = 0;
  19.     virtual int write(void *buf, int size) = 0;
  20.     virtual int seek(int offset, int origin);
  21.     virtual void close() = 0;
  22.     virtual int get_archive_type() = 0;
  23.     ITarArcFile(){
  24.         m_mtime = 0;
  25.         m_orig_filesize = -1;
  26.     }
  27.     virtual ~ITarArcFile(){;};
  28.  
  29.     virtual string get_orig_filename(){
  30.         if(! m_orig_filename.empty()){return m_orig_filename;}
  31.         return m_arcfile + "_extracted";
  32.     }
  33.     virtual size_t get_orig_size(){return m_orig_filesize;}
  34.     virtual time_t get_mtime(){return m_mtime;}
  35.     string get_arc_filename(){return m_arcfile;}
  36. protected:
  37.     string m_arcfile;
  38.     string m_orig_filename;
  39.     size_t m_orig_filesize;
  40.     time_t m_mtime;
  41. };
  42.  
  43. #endif //__ARCFILE_H
  44.