127 Warning(
"TRefArray",
"size (%d) < 0", s);
145 Warning(
"TRefArray",
"size (%d) < 0", s);
163 Init(
a.fSize,
a.fLowerBound);
183 Init(
a.fSize,
a.fLowerBound);
225 Info(
TString::Format(
"TRefArray::%s",methodname),
"The ProcessID for the %p has been switched to %s/%s:%d.",
246 Warning(
TString::Format(
"TRefArray::%s",methodname),
"The ProcessID for the %p has been switched to %s/%s:%d. There are too many referenced objects.",
250 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());
258 "The object at %p is not registered in the process the TRefArray points to (pid = %s/%s)",obj,
fPID->
GetName(),
fPID->
GetTitle());
302 Error(
"AddBefore",
"before not found, object not added");
326 Error(
"AddAfter",
"after not found, object not added");
341 Error(
"AddAt",
"out of bounds at %d in %zx", idx, (
size_t)
this);
363 if (!
BoundsOk(
"AddAt", idx))
return;
383 for (i = 0; i <
fSize; i++)
404 if (!obj || !
fPID)
return nullptr;
407 if (idx == -1 || idx ==
fSize-1)
return nullptr;
417 if (!obj || !
fPID)
return nullptr;
420 if (idx == -1 || idx == 0)
return nullptr;
478 Error (
"Expand",
"newSize must be positive (%d)", newSize);
481 if (newSize ==
fSize)
return;
485 if (newSize <
fSize) {
496 if (temp)
delete [] temp;
533 if (
gDebug > 1) printf(
"Reading TRefArray, pidf=%d, fPID=%zx, nobjects=%d\n",pidf,(
size_t)
fPID,nobjects);
534 for (
Int_t i = 0; i < nobjects; i++) {
538 printf(
" %d",
fUIDs[i]);
539 if ((i > 0 && i%10 == 0) || (i == nobjects-1)) printf(
"\n");
554 if (
gDebug > 1) printf(
"Writing TRefArray, pidf=%d, fPID=%zx, nobjects=%d\n",pidf,(
size_t)
fPID,nobjects);
556 for (
Int_t i = 0; i < nobjects; i++) {
559 printf(
" %d",
fUIDs[i]);
560 if ((i > 0 && i%10 == 0) || (i == nobjects-1)) printf(
"\n");
648 if (j >= 0 && j <
fSize) {
670 for (i = 0; i <
fSize; i++)
674 for (i = 0; i <
fSize; i++)
696 for (
Int_t i=0;i<s;i++)
719 Error(where,
"index %d out of bounds (size: %d, this: 0x%zx)", i,
fSize, (
size_t)
this);
728 if (!
BoundsOk(
"RemoveAt", idx))
return nullptr;
753 if (!obj)
return nullptr;
757 if (idx == -1)
return nullptr;
791 Error(
"Sort",
"Function not yet implemented");
815 Error(
"BinarySearch",
"Function not yet implemented");
911 if (fCursor < fArray->Capacity()) {
966 return (((
fCurCursor >= 0) && (fCurCursor < fArray->Capacity())) ?
const Bool_t kIterForward
Buffer base class used for serializing objects.
virtual Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr)=0
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 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 TClass * IsA() const
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title 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 Streamer(TBuffer &)
Stream an object of class TObject.
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 * Next() override
Return next object in array. Returns 0 when no more objects in array.
void Reset() override
Reset array iterator.
TIterator & operator=(const TIterator &rhs) override
Overridden assignment operator.
Bool_t operator!=(const TIterator &aIter) const override
This operator compares two TIterator objects.
TObject * operator*() const override
Return current object or nullptr.
An array of references to TObjects.
void AddAt(TObject *obj, Int_t idx) override
Add object at position ids.
TObject * At(Int_t idx) const override
void SetLast(Int_t last)
Set index of last object in array, effectively truncating the array.
TRefArray(TProcessID *pid=nullptr)
default constructor
TObject * RemoveAt(Int_t idx) override
Remove object at index idx.
void Init(Int_t s, Int_t lowerBound)
Initialize a TRefArray.
virtual Int_t AddAtFree(TObject *obj)
Return the position of the new object.
TObject * GetFromTable(Int_t idx) const
the reference may be in the TRefTable
void AddFirst(TObject *obj) override
Add object in the first slot of the array.
UInt_t GetUID(Int_t at) const
Return UID of element at.
TClass * IsA() const override
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.
void Delete(Option_t *option="") override
Remove all objects from the array and free the internal memory.
Bool_t BoundsOk(const char *where, Int_t at) const
Bool_t OutOfBoundsError(const char *where, Int_t i) const
Generate an out-of-bounds error. Always returns false.
Int_t GetLast() const override
Return index of last object in array.
TIterator * MakeIterator(Bool_t dir=kIterForward) const override
Returns an array iterator.
void AddLast(TObject *obj) override
Add object in the next empty slot in the array.
virtual Int_t BinarySearch(TObject *obj, Int_t upto=kMaxInt)
Find object using a binary search.
TObject * After(const TObject *obj) const override
Return the object after obj. Returns 0 if obj is last object.
void AddAfter(const TObject *after, TObject *obj) override
Add object in the slot after object after.
friend class TRefArrayIter
void AddBefore(const TObject *before, TObject *obj) override
Add object in the slot before object before.
void Clear(Option_t *option="") override
Remove all objects from the array.
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.
TObject * Remove(TObject *obj) override
Remove object from array.
Int_t IndexOf(const TObject *obj) const override
void Streamer(TBuffer &) override
Stream all objects in the array to or from the I/O buffer.
TRefArray & operator=(const TRefArray &a)
Assignment operator.
virtual void Sort(Int_t upto=kMaxInt)
If objects in array are sortable (i.e.
TObject * First() const override
Return the object in the first slot.
TObject ** GetObjectRef(const TObject *obj) const override
Return address of pointer obj.
Bool_t GetObjectUID(Int_t &uid, TObject *obj, const char *methodname)
Private/static function, check for validity of pid.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
virtual void Compress()
Remove empty slots from array.
TObject * Before(const TObject *obj) const override
Return the object before obj. Returns 0 if obj is first object.
TObject * Last() const override
Return the object in the last filled slot. Returns 0 if no entries.
A TRefTable maintains the association between a referenced object and the parent object supporting th...
virtual void SetUID(UInt_t uid, TProcessID *context=nullptr)
static TRefTable * GetRefTable()
Static function returning the current TRefTable.
Bool_t Notify() override
This function is called by TRef::Streamer or TStreamerInfo::ReadBuffer when reading a reference.
Sequenceable collection abstract base class.
virtual void Streamer(TBuffer &)
Stream a string object.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.