12 #ifndef ROOT_TProcessID
13 #define ROOT_TProcessID
29 #include <type_traits>
50 static_assert(std::is_pointer<T>::value,
"Only pointer types supported");
static TProcessID * GetPID()
static: returns pointer to current TProcessID
static TProcessID * GetProcessID(UShort_t pid)
static function returning a pointer to TProcessID number pid in fgPIDs
ROOT::Internal::TAtomicPointer< TObjArray * > fObjects
Reference count to this object (from TFile)
virtual void RecursiveRemove(TObject *obj)
called by the object destructor remove reference to obj from the current table if it is referenced ...
void PutObjectWithID(TObject *obj, UInt_t uid=0)
stores the object at the uid th slot in the table of objects The object uniqued is set as well as its...
static UInt_t GetNProcessIDs()
Return the (static) number of process IDs.
virtual ~TProcessID()
Destructor.
static TObjArray * GetPIDs()
static: returns array of TProcessIDs
static TObjArray * fgPIDs
#define ClassDef(name, id)
static TProcessID * fgPID
Spin lock for initialization of fObjects.
The TNamed class is the base class for all named ROOT classes.
static void SetObjectCount(UInt_t number)
static function to set the current referenced object count fgNumber is incremented every time a new o...
A TProcessID identifies a ROOT job in a unique way in time and space.
Helper class to manage atomic pointers.
static void Cleanup()
static function (called by TROOT destructor) to delete all TProcessIDs
TProcessID & operator=(const TProcessID &ref)
TObjArray * GetObjects() const
static TProcessID * GetProcessWithUID(const TObject *obj)
static function returning a pointer to TProcessID with its pid encoded in the highest byte of obj->Ge...
TProcessID()
Default constructor.
std::atomic_flag fLock
Array pointing to the referenced objects.
Int_t IncrementCount()
Increase the reference count to this object.
Int_t DecrementCount()
The reference fCount is used to delete the TProcessID in the TFile destructor when fCount = 0...
static TProcessID * AddProcessID()
Static function to add a new TProcessID to the list of PIDs.
TObject * GetObjectWithID(UInt_t uid)
returns the TObject with unique identifier uid in the table of objects
void CheckInit()
Initialize fObjects.
static TExMap * fgObjPIDs
virtual void Clear(Option_t *option="")
delete the TObjArray pointing to referenced objects this function is called by TFile::Close("R") ...
static TProcessID * GetSessionProcessID()
static function returning the pointer to the session TProcessID
Mother of all ROOT objects.
static UInt_t AssignID(TObject *obj)
static function returning the ID assigned to obj If the object is not yet referenced, its kIsReferenced bit is set and its fUniqueID set to the current number of referenced objects so far.
static UInt_t GetObjectCount()
Return the current referenced object count fgNumber is incremented every time a new object is referen...
static Bool_t IsValid(TProcessID *pid)
static function. return kTRUE if pid is a valid TProcessID
This class stores a (key,value) pair using an external hash.