00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TDataSet
00013 #define ROOT_TDataSet
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "TList.h"
00026 #include "TObjArray.h"
00027
00028 #include "TNamed.h"
00029 #include "TNode.h"
00030
00031 class TDataSetIter;
00032 class TBrowser;
00033
00034 class TDataSet : public TNamed
00035 {
00036 friend class TDataSetIter;
00037 public:
00038
00039
00040 typedef enum {
00041 kContinue,
00042 kPrune,
00043 kStop,
00044 kUp,
00045 kStruct,
00046 kAll,
00047 kRefs,
00048 kMarked
00049 } EDataSetPass;
00050
00051 private:
00052 void operator=(const TDataSet &){}
00053
00054
00055
00056 protected:
00057 static TDataSet *fgMainSet;
00058 TDataSet *fParent;
00059 TSeqCollection *fList;
00060
00061 virtual void SetMother(TObject *mother) {SetParent((TDataSet*)mother);}
00062 TDataSet(const char *name,const char *title):
00063 TNamed(name,title),fParent(0),fList(0){}
00064 void AddMain(TDataSet *set);
00065 static EDataSetPass SortIt(TDataSet *ds);
00066 static EDataSetPass SortIt(TDataSet *ds,void *user);
00067 TDataSet *GetRealParent();
00068 void MakeCollection();
00069
00070
00071 public:
00072
00073
00074 enum ESetBits {
00075 kMark = BIT(22)
00076 ,kArray = BIT(20)
00077 };
00078
00079 enum EBitOpt {
00080 kSet = kTRUE,
00081 kReset = kFALSE
00082 };
00083
00084 TDataSet(const char *name="", TDataSet *parent=0, Bool_t arrayFlag = kFALSE);
00085 TDataSet(const TDataSet &src,EDataSetPass iopt=kAll);
00086 TDataSet(TNode &src);
00087 virtual ~TDataSet();
00088 virtual void Add(TDataSet *dataset);
00089 virtual void AddAt(TDataSet *dataset,Int_t idx=0);
00090 virtual void AddAtAndExpand(TDataSet *dataset, Int_t idx=0);
00091 virtual void AddFirst(TDataSet *dataset);
00092 virtual void AddLast(TDataSet *dataset);
00093 TDataSet *At(Int_t idx) const;
00094 virtual void Browse(TBrowser *b);
00095 virtual TObject *Clone(const char *newname="") const;
00096 virtual void Delete(Option_t *opt="");
00097 virtual TDataSet *Find(const char *path) const;
00098 virtual TDataSet *FindByName(const char *name,const char *path="",Option_t *opt="") const;
00099 virtual TDataSet *FindByPath(const char *path) const;
00100 virtual TDataSet *FindByTitle(const char *title,const char *path="",Option_t *opt="") const;
00101 TObject *FindObject(const char *name) const {return FindByName(name);}
00102 TObject *FindObject(const TObject *o) const { return TObject::FindObject(o);}
00103 virtual TDataSet *First() const;
00104 TObjArray *GetObjArray() const { return (TObjArray *)fList; }
00105 virtual TSeqCollection *GetCollection() const { return (TSeqCollection *)fList; }
00106 TList *GetList() const { return (TList *)fList; }
00107 virtual Int_t GetListSize() const;
00108 static TDataSet *GetMainSet();
00109 TObject *GetMother() const { return (TObject*)GetParent();}
00110 virtual TObject *GetObject() const;
00111 virtual TDataSet *GetParent() const { return fParent;}
00112 virtual Long_t HasData() const {return 0;}
00113 virtual TDataSet *Instance() const;
00114 static TDataSet *instance();
00115 virtual TString Path() const;
00116 virtual EDataSetPass Pass(EDataSetPass ( *callback)(TDataSet *),Int_t depth=0);
00117 virtual EDataSetPass Pass(EDataSetPass ( *callback)(TDataSet *,void*),void *user,Int_t depth=0);
00118 virtual void PrintContents(Option_t *opt="") const;
00119 virtual Int_t Purge(Option_t *opt="");
00120 virtual void Remove(TDataSet *set);
00121 virtual TDataSet *RemoveAt(Int_t idx);
00122 virtual void SetMother(TDataSet *parent=0){SetParent(parent);};
00123 virtual void SetObject(TObject *obj);
00124 virtual void SetParent(TDataSet *parent=0);
00125 virtual void SetWrite();
00126 virtual void Shunt(TDataSet *newParent=0);
00127 virtual void Sort();
00128 virtual Bool_t IsEmpty() const;
00129 virtual Bool_t IsFolder() const {return kTRUE;}
00130 virtual Bool_t IsMarked() const ;
00131 virtual Bool_t IsThisDir(const char *dirname,int len=-1,int ignorecase=0) const ;
00132 virtual TDataSet *Last() const;
00133 virtual void ls(Option_t *option="") const;
00134 virtual void ls(Int_t depth) const;
00135 void Mark();
00136 void UnMark();
00137 void MarkAll();
00138 void UnMarkAll();
00139 void InvertAllMarks();
00140 void Mark(UInt_t flag,EBitOpt reset=kSet);
00141 virtual TDataSet *Next() const;
00142 virtual TDataSet *Prev() const;
00143 virtual void Update();
00144 virtual void Update(TDataSet *set,UInt_t opt=0);
00145 virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0);
00146 virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0) const;
00147 ClassDef(TDataSet,1)
00148 };
00149
00150 inline void TDataSet::Add(TDataSet *dataset){ AddLast(dataset); }
00151 inline TDataSet *TDataSet::At(Int_t idx) const {return fList ? (TDataSet *)fList->At(idx) : 0; }
00152 inline Int_t TDataSet::GetListSize() const {return (fList) ? fList->GetSize():0;}
00153 inline TDataSet *TDataSet::instance() { return new TDataSet();}
00154 inline Bool_t TDataSet::IsMarked() const { return TestBit(kMark); }
00155 inline void TDataSet::Mark(UInt_t flag,EBitOpt reset){ SetBit(flag,reset); }
00156 inline void TDataSet::Mark() { Mark(kMark,kSet); }
00157 inline void TDataSet::UnMark() { Mark(kMark,kReset); }
00158
00159
00160 #endif