12 #ifndef ROOT_TSeqCollection
13 #define ROOT_TSeqCollection
28 class TSeqCollection :
public TCollection {
33 TSeqCollection() : fSorted(kFALSE) { }
34 virtual void Changed() { fSorted = kFALSE; }
37 virtual ~TSeqCollection() { }
38 virtual void Add(TObject *obj) { AddLast(obj); }
39 virtual void AddFirst(TObject *obj) = 0;
40 virtual void AddLast(TObject *obj) = 0;
41 virtual void AddAt(TObject *obj, Int_t idx) = 0;
42 virtual void AddAfter(
const TObject *after, TObject *obj) = 0;
43 virtual void AddBefore(
const TObject *before, TObject *obj) = 0;
44 virtual void RemoveFirst() { Remove(First()); }
45 virtual void RemoveLast() { Remove(Last()); }
46 virtual TObject *RemoveAt(Int_t idx) {
return Remove(At(idx)); }
47 virtual void RemoveAfter(TObject *after) { Remove(After(after)); }
48 virtual void RemoveBefore(TObject *before) { Remove(Before(before)); }
50 virtual TObject *At(Int_t idx)
const = 0;
51 virtual TObject *Before(
const TObject *obj)
const = 0;
52 virtual TObject *After(
const TObject *obj)
const = 0;
53 virtual TObject *First()
const = 0;
54 virtual TObject *Last()
const = 0;
55 Int_t LastIndex()
const {
return GetSize() - 1; }
56 virtual Int_t GetLast()
const;
57 virtual Int_t IndexOf(
const TObject *obj)
const;
58 virtual Bool_t IsSorted()
const {
return fSorted; }
59 void UnSort() { fSorted = kFALSE; }
60 Long64_t Merge(TCollection *list);
62 static Int_t ObjCompare(TObject *a, TObject *b);
63 static void QSort(TObject **a, Int_t first, Int_t last);
64 static inline void QSort(TObject **a, TObject **b, Int_t first, Int_t last) { QSort(a, 1, &b, first, last); }
65 static void QSort(TObject **a, Int_t nBs, TObject ***b, Int_t first, Int_t last);
67 ClassDef(TSeqCollection,0)