36 while ((ob = next())) {
37 if (ob->
IsEqual(obj))
return idx;
58 if (!
a && !
b)
return 0;
78 while (last - first > 1) {
100 if (j - first < last - (j + 1)) {
126 static int depth = 0;
127 if (depth == 0 && nBs > 0) tmp2 =
new TObject*[nBs];
130 while (last - first > 1) {
135 while (--j > first &&
ObjCompare(
a[j],
a[first]) > 0) {}
138 tmp1 =
a[i];
for(k=0;k<nBs;k++) tmp2[k] =
b[k][i];
139 a[i] =
a[j];
for(k=0;k<nBs;k++)
b[k][i] =
b[k][j];
140 a[j] = tmp1;
for(k=0;k<nBs;k++)
b[k][j] = tmp2[k];
146 tmp1 =
a[first];
for(k=0;k<nBs;k++) tmp2[k] =
b[k][first];
147 a[first] =
a[j];
for(k=0;k<nBs;k++)
b[k][first] =
b[k][j];
148 a[j] = tmp1;
for(k=0;k<nBs;k++)
b[k][j] = tmp2[k];
149 if (j - first < last - (j + 1)) {
159 if (depth == 0 && nBs > 0)
delete [] tmp2;
189 Warning(
"Merge",
"list is empty - nothing to merge");
193 Warning(
"Merge",
"input list is empty - nothing to merge with");
196 TIter nextobject(
this);
197 TIter nextlist(list);
206 while ((
object = nextobject())) {
226 while ((collcrt = nextlist())) {
228 Error(
"Merge",
"some objects in the input list are not collections - merging aborted");
240 Warning(
"Merge",
"object of type %s (position %d in list) not found in list %d. Continuing...",
241 object->ClassName(), indobj, indcoll);
253 if (
object->IsA() != objtomerge->
IsA()) {
254 Error(
"Merge",
"object of type %s at index %d not matching object of type %s in input list",
261 templist->
Add(objtomerge);
265 if (!notmergeable &&
IsA())
268 notmergeable->
Add(objtomerge);
270 Warning(
"Merge",
"temp list for non mergeable objects not created!");
283 if (notmergeable && notmergeable->
GetSize() > 0) {
284 TIter nxnm(notmergeable);
285 while (
auto onm = nxnm())
R__EXTERN TVirtualMutex * gCollectionMutex
#define R__LOCKGUARD2(mutex)
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Collection abstract base class.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual Bool_t IsEmpty() const
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Method or function calling interface.
void Execute(const char *, const char *, int *=nullptr) override
Execute method on this object with the given parameter string, e.g.
Bool_t IsValid() const
Return true if the method call has been properly initialized and is usable.
void InitWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Initialize the method invocation environment.
void SetParam(Long_t l)
Add a long method parameter.
Mother of all ROOT objects.
virtual Bool_t IsEqual(const TObject *obj) const
Default equal comparison (objects are equal if they have the same address in memory).
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual TClass * IsA() const
Sequenceable collection abstract base class.
virtual Int_t IndexOf(const TObject *obj) const
Return index of object in collection.
TClass * IsA() const override
virtual TObject * Last() const =0
static void QSort(TObject **a, Int_t first, Int_t last)
Sort array of TObject pointers using a quicksort algorithm.
Long64_t Merge(TCollection *list)
Merge this collection with all collections coming in the input list.
virtual Int_t GetLast() const
Returns index of last object in collection.
static Int_t ObjCompare(TObject *a, TObject *b)
Compare to objects in the collection. Use member Compare() of object a.
void Add(TObject *obj) override