00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TArchiveFile
00013 #define ROOT_TArchiveFile
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef ROOT_TObject
00026 #include "TObject.h"
00027 #endif
00028 #ifndef ROOT_TString
00029 #include "TString.h"
00030 #endif
00031 #ifndef ROOT_TDatime
00032 #include "TDatime.h"
00033 #endif
00034
00035 class TFile;
00036 class TArchiveMember;
00037 class TObjArray;
00038
00039
00040 class TArchiveFile : public TObject {
00041
00042 private:
00043 TArchiveFile(const TArchiveFile&);
00044 TArchiveFile& operator=(const TArchiveFile&);
00045
00046 protected:
00047 TString fArchiveName;
00048 TString fMemberName;
00049 Int_t fMemberIndex;
00050 TFile *fFile;
00051 TObjArray *fMembers;
00052 TArchiveMember *fCurMember;
00053
00054 static Bool_t ParseUrl(const char *url, TString &archive, TString &member, TString &type);
00055
00056 public:
00057 TArchiveFile() : fArchiveName(""), fMemberName(""), fMemberIndex(-1), fFile(0), fMembers(0), fCurMember(0) { }
00058 TArchiveFile(const char *archive, const char *member, TFile *file);
00059 virtual ~TArchiveFile();
00060
00061 virtual Int_t OpenArchive() = 0;
00062 virtual Int_t SetCurrentMember() = 0;
00063 virtual Int_t SetMember(const char *member);
00064 virtual Int_t SetMember(Int_t idx);
00065
00066 Long64_t GetMemberFilePosition() const;
00067 TArchiveMember *GetMember() const { return fCurMember; }
00068 TObjArray *GetMembers() const { return fMembers; }
00069 Int_t GetNumberOfMembers() const;
00070
00071 const char *GetArchiveName() const { return fArchiveName; }
00072 const char *GetMemberName() const { return fMemberName; }
00073 Int_t GetMemberIndex() const { return fMemberIndex; }
00074
00075 static TArchiveFile *Open(const char *url, TFile *file);
00076
00077 ClassDef(TArchiveFile,1)
00078 };
00079
00080
00081 class TArchiveMember : public TObject {
00082
00083 friend class TArchiveFile;
00084
00085 protected:
00086 TString fName;
00087 TString fComment;
00088 TDatime fModTime;
00089 Long64_t fPosition;
00090 Long64_t fFilePosition;
00091 Long64_t fCsize;
00092 Long64_t fDsize;
00093 Bool_t fDirectory;
00094
00095 public:
00096 TArchiveMember();
00097 TArchiveMember(const char *name);
00098 TArchiveMember(const TArchiveMember &member);
00099 TArchiveMember &operator=(const TArchiveMember &rhs);
00100 virtual ~TArchiveMember() { }
00101
00102 const char *GetName() const { return fName; }
00103 const char *GetComment() const { return fComment; }
00104 TDatime GetModTime() const { return fModTime; }
00105 Long64_t GetPosition() const { return fPosition; }
00106 Long64_t GetFilePosition() const { return fFilePosition; }
00107 Long64_t GetCompressedSize() const { return fCsize; }
00108 Long64_t GetDecompressedSize() const { return fDsize; }
00109 Bool_t IsDirectory() const { return fDirectory; }
00110
00111 ClassDef(TArchiveMember,1)
00112 };
00113
00114 #endif