128 Warning(
"TRefArray",
"size (%d) < 0",
s);
145 Warning(
"TRefArray",
"size (%d) < 0",
s);
161 Init(
a.fSize,
a.fLowerBound);
183 Init(
a.fSize,
a.fLowerBound);
224 Info(
TString::Format(
"TRefArray::%s",methodname),
"The ProcessID for the %p has been switched to %s/%s:%d.",
245 Warning(
TString::Format(
"TRefArray::%s",methodname),
"The ProcessID for the %p has been switched to %s/%s:%d. There are too many referenced objects.",
249 Error(
TString::Format(
"TRefArray::%s",methodname),
"The object at %p can not be registered in the process the TRefArray points to (pid = %s/%s) because the ProcessID has too many objects and the TRefArray already contains other objects.",obj,
fPID->
GetName(),
fPID->
GetTitle());
257 "The object at %p is not registered in the process the TRefArray points to (pid = %s/%s)",obj,
fPID->
GetName(),
fPID->
GetTitle());
301 Error(
"AddBefore",
"before not found, object not added");
325 Error(
"AddAfter",
"after not found, object not added");
340 Error(
"AddAt",
"out of bounds at %d in %lx", idx, (
Long_t)
this);
362 if (!
BoundsOk(
"AddAt", idx))
return;
382 for (i = 0; i <
fSize; i++)
403 if (!obj || !
fPID)
return 0;
406 if (idx == -1 || idx ==
fSize-1)
return 0;
416 if (!obj || !
fPID)
return 0;
419 if (idx == -1 || idx == 0)
return 0;
477 Error (
"Expand",
"newSize must be positive (%d)", newSize);
480 if (newSize ==
fSize)
return;
492 if (temp)
delete [] temp;
513void TRefArray::Streamer(
TBuffer &R__b)
520 TObject::Streamer(R__b);
521 fName.Streamer(R__b);
529 if (
gDebug > 1) printf(
"Reading TRefArray, pidf=%d, fPID=%lx, nobjects=%d\n",pidf,(
Long_t)
fPID,nobjects);
530 for (
Int_t i = 0; i < nobjects; i++) {
534 printf(
" %d",
fUIDs[i]);
535 if ((i > 0 && i%10 == 0) || (i == nobjects-1)) printf(
"\n");
543 TObject::Streamer(R__b);
544 fName.Streamer(R__b);
550 if (
gDebug > 1) printf(
"Writing TRefArray, pidf=%d, fPID=%lx, nobjects=%d\n",pidf,(
Long_t)
fPID,nobjects);
552 for (
Int_t i = 0; i < nobjects; i++) {
555 printf(
" %d",
fUIDs[i]);
556 if ((i > 0 && i%10 == 0) || (i == nobjects-1)) printf(
"\n");
644 if (j >= 0 && j <
fSize) {
666 for (i = 0; i <
fSize; i++)
670 for (i = 0; i <
fSize; i++)
714 Error(where,
"index %d out of bounds (size: %d, this: 0x%lx)", i,
fSize, (
Long_t)
this);
723 if (!
BoundsOk(
"RemoveAt", idx))
return 0;
752 if (idx == -1)
return 0;
786 Error(
"Sort",
"Function not yet implemented");
810 Error(
"BinarySearch",
"Function not yet implemented");
906 if (fCursor < fArray->Capacity()) {
961 return (((
fCurCursor >= 0) && (fCurCursor < fArray->Capacity())) ?
const Bool_t kIterForward
Buffer base class used for serializing objects.
virtual TProcessID * ReadProcessID(UShort_t pidf)=0
Return the current Process-ID.
virtual UShort_t WriteProcessID(TProcessID *pid)=0
Always return 0 (current processID).
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE)=0
virtual UShort_t GetPidOffset() const =0
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
virtual Int_t GrowBy(Int_t delta) const
Increase the collection's capacity by delta slots.
Iterator abstract base class.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Mother of all ROOT objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual UInt_t GetUniqueID() const
Return the unique object id.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
@ kHasUUID
if object has a TUUID (its fUniqueID=UUIDNumber)
@ kIsReferenced
if object is referenced by a TRef or TRefArray
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
A TProcessID identifies a ROOT job in a unique way in time and space.
static Bool_t IsValid(TProcessID *pid)
static function. return kTRUE if pid is a valid TProcessID
static UInt_t AssignID(TObject *obj)
static function returning the ID assigned to obj If the object is not yet referenced,...
static TProcessID * GetSessionProcessID()
static function returning the pointer to the session TProcessID
static TProcessID * GetProcessWithUID(const TObject *obj)
static function returning a pointer to TProcessID with its pid encoded in the highest byte of obj->Ge...
TObject * GetObjectWithID(UInt_t uid)
returns the TObject with unique identifier uid in the table of objects
static UInt_t GetObjectCount()
Return the current referenced object count fgNumber is incremented every time a new object is referen...
Iterator of object array.
TObject * operator*() const
Return current object or nullptr.
TObject * Next()
Return next object in array. Returns 0 when no more objects in array.
TIterator & operator=(const TIterator &rhs)
Overridden assignment operator.
Bool_t operator!=(const TIterator &aIter) const
This operator compares two TIterator objects.
void Reset()
Reset array iterator.
An array of references to TObjects.
TIterator * MakeIterator(Bool_t dir=kIterForward) const
Returns an array iterator.
void SetLast(Int_t last)
Set index of last object in array, effectively truncating the array.
virtual void AddBefore(const TObject *before, TObject *obj)
Add object in the slot before object before.
void Init(Int_t s, Int_t lowerBound)
Initialize a TRefArray.
virtual void Clear(Option_t *option="")
Remove all objects from the array.
virtual Int_t AddAtFree(TObject *obj)
Return the position of the new object.
TObject * First() const
Return the object in the first slot.
TObject * GetFromTable(Int_t idx) const
the reference may be in the TRefTable
virtual TObject * Remove(TObject *obj)
Remove object from array.
UInt_t GetUID(Int_t at) const
Return UID of element at.
virtual void AddFirst(TObject *obj)
Add object in the first slot of the array.
virtual ~TRefArray()
Usual destructor (The object pointed to by the array are never deleted).
virtual void Expand(Int_t newSize)
Expand or shrink the array to newSize elements.
TRefArray(TProcessID *pid=0)
default constructor
Int_t IndexOf(const TObject *obj) const
Bool_t BoundsOk(const char *where, Int_t at) const
TObject * After(const TObject *obj) const
Return the object after obj. Returns 0 if obj is last object.
Bool_t OutOfBoundsError(const char *where, Int_t i) const
Generate an out-of-bounds error. Always returns false.
TObject * Before(const TObject *obj) const
Return the object before obj. Returns 0 if obj is first object.
Int_t GetLast() const
Return index of last object in array.
virtual Int_t BinarySearch(TObject *obj, Int_t upto=kMaxInt)
Find object using a binary search.
friend class TRefArrayIter
virtual void AddAt(TObject *obj, Int_t idx)
Add object at position ids.
virtual void AddAfter(const TObject *after, TObject *obj)
Add object in the slot after object after.
TObject * Last() const
Return the object in the last filled slot. Returns 0 if no entries.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t GetAbsLast() const
Return absolute index to last object in array.
Int_t GetEntries() const
Return the number of objects in array (i.e.
virtual void AddLast(TObject *obj)
Add object in the next empty slot in the array.
virtual void Delete(Option_t *option="")
Remove all objects from the array and free the internal memory.
TObject * At(Int_t idx) const
TRefArray & operator=(const TRefArray &a)
Assignment operator.
virtual void Sort(Int_t upto=kMaxInt)
If objects in array are sortable (i.e.
Bool_t GetObjectUID(Int_t &uid, TObject *obj, const char *methodname)
Private/static function, check for validity of pid.
virtual TObject * RemoveAt(Int_t idx)
Remove object at index idx.
virtual void Compress()
Remove empty slots from array.
TObject ** GetObjectRef(const TObject *obj) const
Return address of pointer obj.
A TRefTable maintains the association between a referenced object and the parent object supporting th...
virtual Bool_t Notify()
This function is called by TRef::Streamer or TStreamerInfo::ReadBuffer when reading a reference.
static TRefTable * GetRefTable()
Static function returning the current TRefTable.
virtual void SetUID(UInt_t uid, TProcessID *context=0)
Sequenceable collection abstract base class.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
static constexpr double s
Short_t Max(Short_t a, Short_t b)