diff --git a/core/cont/inc/THashList.h b/core/cont/inc/THashList.h index 7eba9a1f0d62f..5cc92fcb41d7e 100644 --- a/core/cont/inc/THashList.h +++ b/core/cont/inc/THashList.h @@ -59,10 +59,15 @@ class THashList : public TList { void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; void RecursiveRemove(TObject *obj) override; void Rehash(Int_t newCapacity); TObject *Remove(TObject *obj) override; diff --git a/core/cont/inc/TList.h b/core/cont/inc/TList.h index a86af707c175c..6cd12327def61 100644 --- a/core/cont/inc/TList.h +++ b/core/cont/inc/TList.h @@ -85,10 +85,15 @@ friend class TListIter; void AddLast(TObject *obj) override; virtual void AddLast(TObject *obj, Option_t *opt); void AddAt(TObject *obj, Int_t idx) override; + virtual void AddAt(TObject *obj, Int_t idx, Option_t *opt); void AddAfter(const TObject *after, TObject *obj) override; virtual void AddAfter(TObjLink *after, TObject *obj); + virtual void AddAfter(const TObject *after, TObject *obj, Option_t *opt); + virtual void AddAfter(TObjLink *after, TObject *obj, Option_t *opt); void AddBefore(const TObject *before, TObject *obj) override; virtual void AddBefore(TObjLink *before, TObject *obj); + virtual void AddBefore(const TObject *before, TObject *obj, Option_t *opt); + virtual void AddBefore(TObjLink *before, TObject *obj, Option_t *opt); TObject *Remove(TObject *obj) override; virtual TObject *Remove(TObjLink *lnk); TObject *Remove(const TObjLinkPtr_t &lnk) { return Remove(lnk.get()); } diff --git a/core/cont/inc/TSortedList.h b/core/cont/inc/TSortedList.h index 167103761ec7b..c4761c1c5f512 100644 --- a/core/cont/inc/TSortedList.h +++ b/core/cont/inc/TSortedList.h @@ -41,10 +41,15 @@ class TSortedList : public TList { void AddLast(TObject *obj) override { Add(obj); } void AddLast(TObject *obj, Option_t *opt) override { Add(obj, opt); } void AddAt(TObject *obj, Int_t) override { Add(obj); } + void AddAt(TObject *obj, Int_t, Option_t* opt) override { Add(obj, opt); } void AddAfter(const TObject *, TObject *obj) override { Add(obj); } void AddAfter(TObjLink *, TObject *obj) override { Add(obj); } + void AddAfter(const TObject *, TObject *obj, Option_t *opt) override { Add(obj, opt); } + void AddAfter(TObjLink *, TObject *obj, Option_t *opt) override { Add(obj, opt); } void AddBefore(const TObject *, TObject *obj) override { Add(obj); } void AddBefore(TObjLink *, TObject *obj) override { Add(obj); } + void AddBefore(const TObject *, TObject *obj, Option_t *opt) override { Add(obj, opt); } + void AddBefore(TObjLink *, TObject *obj, Option_t *opt) override { Add(obj, opt); } void Sort(Bool_t = kSortAscending) override { } ClassDefOverride(TSortedList,0) //A sorted list diff --git a/core/cont/src/THashList.cxx b/core/cont/src/THashList.cxx index 221931cc90b87..18cd7ce000a75 100644 --- a/core/cont/src/THashList.cxx +++ b/core/cont/src/THashList.cxx @@ -137,6 +137,28 @@ void THashList::AddBefore(TObjLink *before, TObject *obj) fTable->AddBefore(before->GetObject(), obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void THashList::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + TList::AddBefore(before, obj, opt); + fTable->AddBefore(before, obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void THashList::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + TList::AddBefore(before, obj, opt); + fTable->AddBefore(before->GetObject(), obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object after object after in the list. @@ -158,6 +180,27 @@ void THashList::AddAfter(TObjLink *after, TObject *obj) TList::AddAfter(after, obj); fTable->Add(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void THashList::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + TList::AddAfter(after, obj, opt); + fTable->Add(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void THashList::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + TList::AddAfter(after, obj, opt); + fTable->Add(obj); +} //////////////////////////////////////////////////////////////////////////////// /// Insert object at location idx in the list. @@ -170,6 +213,17 @@ void THashList::AddAt(TObject *obj, Int_t idx) fTable->Add(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at location idx in the list, with options. + +void THashList::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + TList::AddAt(obj, idx, opt); + fTable->Add(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Return the average collision rate. The higher the number the longer /// the linked lists in the hashtable, the slower the lookup. If the number diff --git a/core/cont/src/TList.cxx b/core/cont/src/TList.cxx index 30a4b69628d62..3f820140b021e 100644 --- a/core/cont/src/TList.cxx +++ b/core/cont/src/TList.cxx @@ -298,6 +298,116 @@ void TList::AddAfter(TObjLink *after, TObject *obj) } } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TList::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_GUARD(); + + if (IsArgNull("AddBefore", obj)) return; + + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + if (!before) + TList::AddFirst(obj, opt); + else { + Int_t idx; + TObjLink *t = FindLink(before, idx); + if (!t) { + Error("AddBefore", "before not found, object not added"); + return; + } + if (t == fFirst.get()) + TList::AddFirst(obj, opt); + else { + NewOptLink(obj, opt, t->fPrev.lock()); + fSize++; + Changed(); + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before the specified ObjLink object. If before = 0 then add +/// to the head of the list. An ObjLink can be obtained by looping over a list +/// using the above describe iterator method 3. Options can be specified. + +void TList::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_GUARD(); + + if (IsArgNull("AddBefore", obj)) return; + + if (!before) + TList::AddFirst(obj, opt); + else { + if (before == fFirst.get()) + TList::AddFirst(obj, opt); + else { + NewOptLink(obj, opt, before->fPrev.lock()); + fSize++; + Changed(); + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TList::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_GUARD(); + + if (IsArgNull("AddAfter", obj)) return; + + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + if (!after) + TList::AddLast(obj, opt); + else { + Int_t idx; + TObjLink *t = FindLink(after, idx); + if (!t) { + Error("AddAfter", "after not found, object not added"); + return; + } + if (t == fLast.get()) + TList::AddLast(obj, opt); + else { + NewOptLink(obj, opt, t->shared_from_this()); + fSize++; + Changed(); + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after the specified ObjLink object. If after = 0 then add +/// to the tail of the list. An ObjLink can be obtained by looping over a list +/// using the above describe iterator method 3. Options can be specified. + +void TList::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + R__COLLECTION_WRITE_GUARD(); + + if (IsArgNull("AddAfter", obj)) return; + + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + if (!after) + TList::AddLast(obj, opt); + else { + if (after == fLast.get()) + TList::AddLast(obj, opt); + else { + NewOptLink(obj, opt, after->shared_from_this()); + fSize++; + Changed(); + } + } +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object at position idx in the list. @@ -321,6 +431,29 @@ void TList::AddAt(TObject *obj, Int_t idx) } } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at position idx in the list, with options. + +void TList::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + R__COLLECTION_WRITE_GUARD(); + + if (IsArgNull("AddAt", obj)) return; + + R__COLLECTION_WRITE_LOCKGUARD(ROOT::gCoreMutex); + + TObjLink *lnk = LinkAt(idx); + if (!lnk) + TList::AddLast(obj, opt); + else if (lnk == fFirst.get()) + TList::AddFirst(obj, opt); + else { + NewOptLink(obj, opt, lnk->fPrev.lock()); + fSize++; + Changed(); + } +} + //////////////////////////////////////////////////////////////////////////////// /// Returns the object after object obj. Obj is found using the /// object's IsEqual() method. Returns 0 if obj is last in list. diff --git a/core/meta/inc/TListOfDataMembers.h b/core/meta/inc/TListOfDataMembers.h index e51e3adf8243b..df635de24091b 100644 --- a/core/meta/inc/TListOfDataMembers.h +++ b/core/meta/inc/TListOfDataMembers.h @@ -82,10 +82,15 @@ class TListOfDataMembers : public THashList void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; TClass *GetClass() const { return fClass; } void SetClass(TClass* cl) { fClass = cl; } diff --git a/core/meta/inc/TListOfEnums.h b/core/meta/inc/TListOfEnums.h index a80faed55d229..901c01f17e8d1 100644 --- a/core/meta/inc/TListOfEnums.h +++ b/core/meta/inc/TListOfEnums.h @@ -83,10 +83,15 @@ class TListOfEnums : public THashList void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; void RecursiveRemove(TObject *obj) override; TObject *Remove(TObject *obj) override; diff --git a/core/meta/inc/TListOfEnumsWithLock.h b/core/meta/inc/TListOfEnumsWithLock.h index 45ed03fb42fe8..21ed01403ee6b 100644 --- a/core/meta/inc/TListOfEnumsWithLock.h +++ b/core/meta/inc/TListOfEnumsWithLock.h @@ -14,7 +14,7 @@ ////////////////////////////////////////////////////////////////////////// // // -// TListOfEnumsWithLock // +// TListOfEnumsWithLock // // // // A collection of TEnum objects designed for fast access given a // // DeclId_t and for keep track of TEnum that were described // @@ -68,10 +68,15 @@ class TListOfEnumsWithLock : public TListOfEnums void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; void RecursiveRemove(TObject *obj) override; TObject *Remove(TObject *obj) override; diff --git a/core/meta/inc/TListOfFunctionTemplates.h b/core/meta/inc/TListOfFunctionTemplates.h index 3eb5246ec6871..bb97b7a652b09 100644 --- a/core/meta/inc/TListOfFunctionTemplates.h +++ b/core/meta/inc/TListOfFunctionTemplates.h @@ -71,10 +71,15 @@ class TListOfFunctionTemplates : public THashList void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; void RecursiveRemove(TObject *obj) override; TObject *Remove(TObject *obj) override; diff --git a/core/meta/inc/TListOfFunctions.h b/core/meta/inc/TListOfFunctions.h index d5626a62bff76..28811351ce282 100644 --- a/core/meta/inc/TListOfFunctions.h +++ b/core/meta/inc/TListOfFunctions.h @@ -86,10 +86,15 @@ class TListOfFunctions : public THashList void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; void RecursiveRemove(TObject *obj) override; TObject *Remove(TObject *obj) override; diff --git a/core/meta/src/TListOfDataMembers.cxx b/core/meta/src/TListOfDataMembers.cxx index 217efecfee9f5..52d276b765fdb 100644 --- a/core/meta/src/TListOfDataMembers.cxx +++ b/core/meta/src/TListOfDataMembers.cxx @@ -117,6 +117,16 @@ void TListOfDataMembers::AddAt(TObject *obj, Int_t idx) MapObject(obj); } + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at location idx in the list, with options. + +void TListOfDataMembers::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + THashList::AddAt(obj, idx, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object after object after in the list. @@ -135,6 +145,24 @@ void TListOfDataMembers::AddAfter(TObjLink *after, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfDataMembers::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfDataMembers::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object before object before in the list. @@ -153,6 +181,24 @@ void TListOfDataMembers::AddBefore(TObjLink *before, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfDataMembers::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfDataMembers::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Remove all objects from the list. Does not delete the objects unless /// the THashList is the owner (set via SetOwner()). diff --git a/core/meta/src/TListOfEnums.cxx b/core/meta/src/TListOfEnums.cxx index da7b4a664b46d..af23be77dcd60 100644 --- a/core/meta/src/TListOfEnums.cxx +++ b/core/meta/src/TListOfEnums.cxx @@ -114,6 +114,15 @@ void TListOfEnums::AddAt(TObject *obj, Int_t idx) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at location idx in the list, with options. + +void TListOfEnums::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + THashList::AddAt(obj, idx, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object after object after in the list. @@ -132,6 +141,24 @@ void TListOfEnums::AddAfter(TObjLink *after, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfEnums::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfEnums::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object before object before in the list. @@ -150,6 +177,24 @@ void TListOfEnums::AddBefore(TObjLink *before, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfEnums::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfEnums::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Remove all objects from the list. Does not delete the objects unless /// the THashList is the owner (set via SetOwner()). diff --git a/core/meta/src/TListOfEnumsWithLock.cxx b/core/meta/src/TListOfEnumsWithLock.cxx index a2c22c5a868f9..ce0d613fdad5d 100644 --- a/core/meta/src/TListOfEnumsWithLock.cxx +++ b/core/meta/src/TListOfEnumsWithLock.cxx @@ -94,6 +94,15 @@ void TListOfEnumsWithLock::AddAt(TObject *obj, Int_t idx) TListOfEnums::AddAt(obj, idx); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at location idx in the list, with options. + +void TListOfEnumsWithLock::AddAt(TObject *obj, Int_t idx, Option_t* opt) +{ + R__LOCKGUARD(gInterpreterMutex); + TListOfEnums::AddAt(obj, idx, opt); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object after object after in the list. @@ -112,6 +121,24 @@ void TListOfEnumsWithLock::AddAfter(TObjLink *after, TObject *obj) TListOfEnums::AddAfter(after, obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfEnumsWithLock::AddAfter(const TObject *after, TObject *obj, Option_t* opt) +{ + R__LOCKGUARD(gInterpreterMutex); + TListOfEnums::AddAfter(after, obj, opt); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfEnumsWithLock::AddAfter(TObjLink *after, TObject *obj, Option_t* opt) +{ + R__LOCKGUARD(gInterpreterMutex); + TListOfEnums::AddAfter(after, obj, opt); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object before object before in the list. @@ -130,6 +157,24 @@ void TListOfEnumsWithLock::AddBefore(TObjLink *before, TObject *obj) TListOfEnums::AddBefore(before, obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfEnumsWithLock::AddBefore(const TObject *before, TObject *obj, Option_t* opt) +{ + R__LOCKGUARD(gInterpreterMutex); + TListOfEnums::AddBefore(before, obj, opt); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfEnumsWithLock::AddBefore(TObjLink *before, TObject *obj, Option_t* opt) +{ + R__LOCKGUARD(gInterpreterMutex); + TListOfEnums::AddBefore(before, obj, opt); +} + //////////////////////////////////////////////////////////////////////////////// /// Remove all objects from the list. Does not delete the objects unless /// the THashList is the owner (set via SetOwner()). diff --git a/core/meta/src/TListOfFunctionTemplates.cxx b/core/meta/src/TListOfFunctionTemplates.cxx index 2aa99a5aba128..8d3e4950a1d0d 100644 --- a/core/meta/src/TListOfFunctionTemplates.cxx +++ b/core/meta/src/TListOfFunctionTemplates.cxx @@ -111,6 +111,15 @@ void TListOfFunctionTemplates::AddAt(TObject *obj, Int_t idx) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at location idx in the list, with options. + +void TListOfFunctionTemplates::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + THashList::AddAt(obj, idx, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object after object after in the list. @@ -129,6 +138,24 @@ void TListOfFunctionTemplates::AddAfter(TObjLink *after, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfFunctionTemplates::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfFunctionTemplates::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object before object before in the list. @@ -147,6 +174,24 @@ void TListOfFunctionTemplates::AddBefore(TObjLink *before, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfFunctionTemplates::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfFunctionTemplates::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Remove all objects from the list. Does not delete the objects unless /// the THashList is the owner (set via SetOwner()). diff --git a/core/meta/src/TListOfFunctions.cxx b/core/meta/src/TListOfFunctions.cxx index 7c0baed0081a1..c879567178763 100644 --- a/core/meta/src/TListOfFunctions.cxx +++ b/core/meta/src/TListOfFunctions.cxx @@ -110,6 +110,15 @@ void TListOfFunctions::AddAt(TObject *obj, Int_t idx) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object at location idx in the list, with options. + +void TListOfFunctions::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + THashList::AddAt(obj, idx, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object after object after in the list. @@ -128,6 +137,24 @@ void TListOfFunctions::AddAfter(TObjLink *after, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfFunctions::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object after object after in the list, with options. + +void TListOfFunctions::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + THashList::AddAfter(after, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Insert object before object before in the list. @@ -146,6 +173,24 @@ void TListOfFunctions::AddBefore(TObjLink *before, TObject *obj) MapObject(obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfFunctions::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Insert object before object before in the list, with options. + +void TListOfFunctions::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + THashList::AddBefore(before, obj, opt); + MapObject(obj); +} + //////////////////////////////////////////////////////////////////////////////// /// Remove all objects from the list. Does not delete the objects unless /// the THashList is the owner (set via SetOwner()). diff --git a/core/meta/src/TViewPubDataMembers.cxx b/core/meta/src/TViewPubDataMembers.cxx index 5c4b59561b413..737a570f1b614 100644 --- a/core/meta/src/TViewPubDataMembers.cxx +++ b/core/meta/src/TViewPubDataMembers.cxx @@ -169,6 +169,15 @@ void TViewPubDataMembers::AddAt(TObject * /* obj */, Int_t /* idx */) ::Error("TViewPubDataMembers::AddAt","Operation not allowed on a view."); } +//////////////////////////////////////////////////////////////////////////////// +/// AddAt is not allowed in this class. +/// See TList::AddAt for the intended behavior. + +void TViewPubDataMembers::AddAt(TObject * /* obj */, Int_t /* idx */, Option_t * /* opt */) +{ + ::Error("TViewPubDataMembers::AddAt","Operation not allowed on a view."); +} + //////////////////////////////////////////////////////////////////////////////// /// AddAfter is not allowed in this class. /// See TList::AddAfter for the intended behavior. @@ -187,6 +196,24 @@ void TViewPubDataMembers::AddAfter(TObjLink * /* after */, TObject * /* obj */) ::Error("TViewPubDataMembers::AddAfter","Operation not allowed on a view."); } +//////////////////////////////////////////////////////////////////////////////// +/// AddAfter is not allowed in this class. +/// See TList::AddAfter for the intended behavior. + +void TViewPubDataMembers::AddAfter(const TObject * /* after */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubDataMembers::RemAddLastove","Operation not allowed on a view."); +} + +//////////////////////////////////////////////////////////////////////////////// +/// AddAfter is not allowed in this class. +/// See TList::AddAfter for the intended behavior. + +void TViewPubDataMembers::AddAfter(TObjLink * /* after */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubDataMembers::AddAfter","Operation not allowed on a view."); +} + //////////////////////////////////////////////////////////////////////////////// /// AddBefore is not allowed in this class. /// See TList::AddBefore for the intended behavior. @@ -205,6 +232,24 @@ void TViewPubDataMembers::AddBefore(TObjLink * /* before */, TObject * /* obj */ ::Error("TViewPubDataMembers::AddBefore","Operation not allowed on a view."); } +//////////////////////////////////////////////////////////////////////////////// +/// AddBefore is not allowed in this class. +/// See TList::AddBefore for the intended behavior. + +void TViewPubDataMembers::AddBefore(const TObject * /* before */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubDataMembers::AddBefore","Operation not allowed on a view."); +} + +//////////////////////////////////////////////////////////////////////////////// +/// AddBefore is not allowed in this class. +/// See TList::AddBefore for the intended behavior. + +void TViewPubDataMembers::AddBefore(TObjLink * /* before */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubDataMembers::AddBefore","Operation not allowed on a view."); +} + //////////////////////////////////////////////////////////////////////////////// /// Returns the object at position idx. Returns 0 if idx is out of range. diff --git a/core/meta/src/TViewPubDataMembers.h b/core/meta/src/TViewPubDataMembers.h index 49f0b38f46c9b..80a327ea1d4ee 100644 --- a/core/meta/src/TViewPubDataMembers.h +++ b/core/meta/src/TViewPubDataMembers.h @@ -59,10 +59,15 @@ class TViewPubDataMembers : public TList { void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; TObject *After(const TObject *obj) const override; TObject *Before(const TObject *obj) const override; diff --git a/core/meta/src/TViewPubFunctions.cxx b/core/meta/src/TViewPubFunctions.cxx index 61da180c918b4..d00883eb01bda 100644 --- a/core/meta/src/TViewPubFunctions.cxx +++ b/core/meta/src/TViewPubFunctions.cxx @@ -169,6 +169,15 @@ void TViewPubFunctions::AddAt(TObject * /* obj */, Int_t /* idx */) ::Error("TViewPubFunctions::AddAt","Operation not allowed on a view."); } +//////////////////////////////////////////////////////////////////////////////// +/// AddAt is not allowed in this class. +/// See TList::AddAt for the intended behavior. + +void TViewPubFunctions::AddAt(TObject * /* obj */, Int_t /* idx */, Option_t * /* opt */) +{ + ::Error("TViewPubFunctions::AddAt","Operation not allowed on a view."); +} + //////////////////////////////////////////////////////////////////////////////// /// AddAfter is not allowed in this class. /// See TList::AddAfter for the intended behavior. @@ -187,6 +196,24 @@ void TViewPubFunctions::AddAfter(TObjLink * /* after */, TObject * /* obj */) ::Error("TViewPubFunctions::AddAfter","Operation not allowed on a view."); } +//////////////////////////////////////////////////////////////////////////////// +/// AddAfter is not allowed in this class. +/// See TList::AddAfter for the intended behavior. + +void TViewPubFunctions::AddAfter(const TObject * /* after */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubFunctions::RemAddLastove","Operation not allowed on a view."); +} + +//////////////////////////////////////////////////////////////////////////////// +/// AddAfter is not allowed in this class. +/// See TList::AddAfter for the intended behavior. + +void TViewPubFunctions::AddAfter(TObjLink * /* after */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubFunctions::AddAfter","Operation not allowed on a view."); +} + //////////////////////////////////////////////////////////////////////////////// /// AddBefore is not allowed in this class. /// See TList::AddBefore for the intended behavior. @@ -205,6 +232,24 @@ void TViewPubFunctions::AddBefore(TObjLink * /* before */, TObject * /* obj */) ::Error("TViewPubFunctions::AddBefore","Operation not allowed on a view."); } +//////////////////////////////////////////////////////////////////////////////// +/// AddBefore is not allowed in this class. +/// See TList::AddBefore for the intended behavior. + +void TViewPubFunctions::AddBefore(const TObject * /* before */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubFunctions::AddBefore","Operation not allowed on a view."); +} + +//////////////////////////////////////////////////////////////////////////////// +/// AddBefore is not allowed in this class. +/// See TList::AddBefore for the intended behavior. + +void TViewPubFunctions::AddBefore(TObjLink * /* before */, TObject * /* obj */, Option_t * /* opt */) +{ + ::Error("TViewPubFunctions::AddBefore","Operation not allowed on a view."); +} + //////////////////////////////////////////////////////////////////////////////// /// Returns the object at position idx. Returns 0 if idx is out of range. diff --git a/core/meta/src/TViewPubFunctions.h b/core/meta/src/TViewPubFunctions.h index fe7ba795e6090..24b3b8a14f7f1 100644 --- a/core/meta/src/TViewPubFunctions.h +++ b/core/meta/src/TViewPubFunctions.h @@ -59,10 +59,15 @@ class TViewPubFunctions : public TList { void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; TObject *After(const TObject *obj) const override; TObject *Before(const TObject *obj) const override; diff --git a/tree/tree/inc/TSelectorList.h b/tree/tree/inc/TSelectorList.h index b23178d222374..0bf11931aa91d 100644 --- a/tree/tree/inc/TSelectorList.h +++ b/tree/tree/inc/TSelectorList.h @@ -42,10 +42,15 @@ class TSelectorList : public THashList { void AddLast(TObject *obj) override; void AddLast(TObject *obj, Option_t *opt) override; void AddAt(TObject *obj, Int_t idx) override; + void AddAt(TObject *obj, Int_t idx, Option_t *opt) override; void AddAfter(const TObject *after, TObject *obj) override; void AddAfter(TObjLink *after, TObject *obj) override; + void AddAfter(const TObject *after, TObject *obj, Option_t *opt) override; + void AddAfter(TObjLink *after, TObject *obj, Option_t *opt) override; void AddBefore(const TObject *before, TObject *obj) override; void AddBefore(TObjLink *before, TObject *obj) override; + void AddBefore(const TObject *before, TObject *obj, Option_t *opt) override; + void AddBefore(TObjLink *before, TObject *obj, Option_t *opt) override; ClassDefOverride(TSelectorList,1) //Special TList used in the TSelector }; diff --git a/tree/tree/src/TSelectorList.cxx b/tree/tree/src/TSelectorList.cxx index 3cf5d05335159..ae5810fe75c6a 100644 --- a/tree/tree/src/TSelectorList.cxx +++ b/tree/tree/src/TSelectorList.cxx @@ -121,6 +121,16 @@ void TSelectorList::AddAt(TObject *obj, Int_t idx) THashList::AddAt(obj, idx); } +//////////////////////////////////////////////////////////////////////////////// +/// Add to the list, with options. + +void TSelectorList::AddAt(TObject *obj, Int_t idx, Option_t *opt) +{ + UnsetDirectory(obj); + if (CheckDuplicateName(obj)) + THashList::AddAt(obj, idx, opt); +} + //////////////////////////////////////////////////////////////////////////////// /// Add to the list. @@ -141,6 +151,26 @@ void TSelectorList::AddAfter(TObjLink *after, TObject *obj) THashList::AddAfter(after, obj); } +//////////////////////////////////////////////////////////////////////////////// +/// Add to the list, with options. + +void TSelectorList::AddAfter(const TObject *after, TObject *obj, Option_t *opt) +{ + UnsetDirectory(obj); + if (CheckDuplicateName(obj)) + THashList::AddAfter(after, obj, opt); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Add to the list, with options. + +void TSelectorList::AddAfter(TObjLink *after, TObject *obj, Option_t *opt) +{ + UnsetDirectory(obj); + if (CheckDuplicateName(obj)) + THashList::AddAfter(after, obj, opt); +} + //////////////////////////////////////////////////////////////////////////////// /// Add to the list. @@ -160,3 +190,23 @@ void TSelectorList::AddBefore(TObjLink *before, TObject *obj) if (CheckDuplicateName(obj)) THashList::AddBefore(before, obj); } + +//////////////////////////////////////////////////////////////////////////////// +/// Add to the list, with options. + +void TSelectorList::AddBefore(const TObject *before, TObject *obj, Option_t *opt) +{ + UnsetDirectory(obj); + if (CheckDuplicateName(obj)) + THashList::AddBefore(before, obj, opt); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Add to the list, with options. + +void TSelectorList::AddBefore(TObjLink *before, TObject *obj, Option_t *opt) +{ + UnsetDirectory(obj); + if (CheckDuplicateName(obj)) + THashList::AddBefore(before, obj, opt); +}