00001
00004 #ifndef ROOT_StFileI
00005 #define ROOT_StFileI
00006
00007 #include "TNamed.h"
00008 #include "assert.h"
00009 #include "string.h"
00010
00011 const UInt_t kUMAX = (UInt_t)(-1);
00012
00013 class StUKey
00014 {
00015 public:
00016 StUKey(const char *name=0,UInt_t *uk=0,int nk=1);
00017 StUKey(const char *name,UInt_t uk);
00018 StUKey(UInt_t uRun,UInt_t uEvent=0);
00019 virtual ~StUKey(){}
00020 virtual StUKey &operator=( const StUKey &from);
00021 virtual StUKey &operator=( UInt_t from);
00022 virtual StUKey &operator=( Int_t from){return *this=(UInt_t)from;}
00023 virtual StUKey &operator=( const char *from);
00024 virtual void Update(const StUKey &from,const char *name=0);
00025 virtual void SetName(const char *name){fName=name;}
00026 virtual const char *GetName() const {return fName;}
00027 virtual TString GetKey() const;
00028 virtual Int_t GetNInt() const{ return fNUrr;}
00029 virtual const UInt_t *GetUrr() const{ return fUrr;}
00030 virtual void SetKey(const char *key);
00031 virtual void SetUrr(const UInt_t *key,int nk);
00032 virtual UInt_t GetSum() const;
00033 virtual Int_t EOK() const { return fUrr[0]==kUMAX;}
00034 virtual Int_t IsNull() const { return !fUrr[0];}
00035 virtual Int_t Compare(StUKey &uk2) const
00036 { return strcmp(GetKey().Data(),uk2.GetKey().Data());}
00037 virtual Int_t GetRunId() const { return fUrr[0]; }
00038 virtual Int_t GetEventId() const { return fUrr[1]; }
00039 private:
00040 TString fName;
00041 Int_t fNUrr;
00042 UInt_t fUrr[9];
00043 };
00044
00045
00046 class StFileI : public TNamed
00047 {
00048 public:
00049 StFileI(const char *name="",const char *titl=""):TNamed(name,titl){SetDebug(0);}
00050 virtual ~StFileI(){}
00051 virtual Int_t SetDebug(Int_t dbl=1){fDebug=dbl; return fDebug;}
00052 virtual Int_t GetDebug() const {return fDebug;}
00053 virtual Int_t Init(int Argc=0, const char** Argv=0){return 0;}
00054 virtual Int_t Init(const char *argv)
00055 {const char *Argv[1]; Argv[0]=argv; return Init(1,Argv);};
00056
00057 virtual void ls(Option_t *opt="") const {if(opt){};};
00058 virtual Int_t AddFile(const char *file,const char *opt=0){return 0;};
00059 virtual Int_t AddFile(const char **fileList){return 0;};
00060 virtual Int_t AddWild(const char *file,const char *opt=0){return 0;};
00061 virtual Int_t GetNFiles()=0;
00062 virtual Int_t GetNBundles()=0;
00063 virtual Int_t GetBundleSize()=0;
00064 virtual const char *GetFileName(Int_t idx=-1)=0;
00065 virtual const char *GetCompName(Int_t idx=0)=0;
00066 virtual const char *GetFormat(Int_t idx=0)=0;
00067 virtual Int_t GetNextBundle()=0;
00068 virtual Int_t GetNextEvent(UInt_t *NextEventNumber)
00069 {*NextEventNumber=0;return 0;}
00070 virtual StUKey GetNextEvent();
00071 virtual void Rewind(){assert(0);};
00072 protected:
00073 Int_t fDebug;
00074
00075 ClassDef(StFileI,0)
00076 };
00077 #endif