00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TDataSetIter
00013 #define ROOT_TDataSetIter
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "TList.h"
00031 #include "TNamed.h"
00032
00033 #include "TDataSet.h"
00034
00035 class TDataSetIter : public TObject{
00036 protected:
00037 TIter *fNext;
00038 TIter *fNextSet[100];
00039 Int_t fDepth;
00040 Int_t fMaxDepth;
00041
00042 TDataSet *fDataSet;
00043 TDataSet *fRootDataSet;
00044 TDataSet *fWorkingDataSet;
00045 TDataSet *NextDataSet(TIter &next);
00046 TDataSet *NextDataSet(Int_t nDataSet);
00047 TDataSet *GetNullSet();
00048
00049 static TDataSet *fgNullDataSet;
00050 public:
00051 TDataSetIter(TDataSet *l=0, Int_t depth=1, Bool_t dir=kIterForward);
00052 TDataSetIter(TDataSet *l, Bool_t dir);
00053 virtual ~TDataSetIter();
00054
00055 virtual TDataSet *Add(TDataSet *set){return Add(set,(TDataSet *)0);}
00056 virtual TDataSet *Add(TDataSet *set, const Char_t *path);
00057 virtual TDataSet *Add(TDataSet *set, TDataSet *dataset);
00058
00059 virtual TDataSet *Cd(const Char_t *dirname);
00060 virtual TDataSet *Cd(TDataSet *ds);
00061 virtual TDataSet *operator()( TDataSet::EDataSetPass mode=TDataSet::kContinue ) {return Next(mode);}
00062 virtual TDataSet *operator()(const Char_t *path) { return Find(path); }
00063 virtual TDataSet *operator[](const Char_t *path);
00064 virtual Int_t GetDepth() const {return fDepth;}
00065 virtual TDataSet *Cwd() const {return fWorkingDataSet;}
00066 virtual TDataSet *Dir(Char_t *dirname);
00067 virtual Int_t Du() const;
00068 virtual Int_t Df() const {return 0;}
00069
00070 virtual TDataSet *Find(const Char_t *path, TDataSet *rootset=0,Bool_t mkdir=kFALSE,Bool_t titleFlag=kFALSE);
00071 virtual TDataSet *FindByPath(const Char_t *path, TDataSet *rootset=0,Bool_t mkdir=kFALSE);
00072 virtual TDataSet *FindDataSet(const Char_t *name,const Char_t *path="",Option_t *opt="");
00073 virtual TDataSet *FindByName(const Char_t *name,const Char_t *path="",Option_t *opt="");
00074 virtual TDataSet *FindByTitle(const Char_t *title,const Char_t *path="",Option_t *opt="");
00075 virtual TDataSet *FindDataSet(TDataSet *set,const Char_t *path,Option_t *opt="");
00076 virtual TDataSet *FindByPointer(TDataSet *set,const Char_t *path=0,Option_t *opt="");
00077 virtual TObject *FindObject(const Char_t *name) const;
00078 virtual TObject *FindObject(const TObject *obj) const;
00079
00080 virtual Int_t Flag(UInt_t flag=TDataSet::kMark,TDataSet::EBitOpt reset=TDataSet::kSet){return Flag((TDataSet *)0,flag,reset);}
00081 virtual Int_t Flag(const Char_t *path,UInt_t flag=TDataSet::kMark,TDataSet::EBitOpt reset=TDataSet::kSet);
00082 virtual Int_t Flag(TDataSet *dataset,UInt_t flag=TDataSet::kMark,TDataSet::EBitOpt reset=TDataSet::kSet);
00083
00084 virtual TDataSet *Ls(const Char_t *dirname="",Option_t *opt="") const;
00085 virtual TDataSet *Ls(const Char_t *dirname,Int_t depth) const;
00086 virtual void ls(Option_t *dirname="") const { Ls(dirname,"");}
00087 virtual TDataSet *ls(TString dirname,Option_t *opt="") const {return Ls(dirname.Data(),opt);}
00088 virtual TDataSet *ls(const Char_t *dirname,Int_t depth) const {return Ls(dirname,depth);}
00089 virtual TDataSet *Mkdir(const Char_t *dirname);
00090 virtual TDataSet *Md(const Char_t *dirname) {return Mkdir(dirname);}
00091 virtual TString Path(const Char_t *path) {TDataSet *set = Find(path); return set ? set->Path():TString ("");}
00092 virtual TString Path() {return fWorkingDataSet ? fWorkingDataSet->Path() : TString ("");}
00093 virtual TDataSet *Pwd(Option_t *opt="") const {if (Cwd()) Cwd()->ls(opt); return Cwd();}
00094 virtual TDataSet *Rmdir(TDataSet *dataset,Option_t *option="");
00095 virtual TDataSet *Rmdir(const Char_t *dirname,Option_t *option=""){return Rmdir(Find(dirname),option);}
00096 virtual TDataSet *Rd(const Char_t *dirname,Option_t *option="") {return Rmdir(Find(dirname),option);}
00097
00098 virtual TDataSet *Shunt(TDataSet *set){return Shunt(set,(TDataSet *)0);}
00099 virtual TDataSet *Shunt(TDataSet *set, const Char_t *path);
00100 virtual TDataSet *Shunt(TDataSet *set, TDataSet *dataset);
00101
00102 virtual TDataSet *Next( TDataSet::EDataSetPass mode=TDataSet::kContinue);
00103 virtual TDataSet *Next(const Char_t *path, TDataSet *rootset=0,Bool_t mkdir=kFALSE){return Find(path,rootset,mkdir);}
00104 virtual Bool_t Notify() { return TObject::Notify();}
00105 virtual void Notify(TDataSet *dataset);
00106 const Option_t *GetOption() const { return fNext ? fNext->GetOption():0; }
00107 virtual void Reset(TDataSet *l=0,Int_t depth=0);
00108 virtual TDataSet *operator *() const ;
00109
00110 ClassDef(TDataSetIter,0)
00111 };
00112
00113 #endif
00114