ROOT  6.06/09
Reference Guide
TProcessID.h
Go to the documentation of this file.
1 // @(#)root/cont:$Id$
2 // Author: Rene Brun 28/09/2001
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TProcessID
13 #define ROOT_TProcessID
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TProcessID //
19 // //
20 // Process Identifier object //
21 // //
22 //////////////////////////////////////////////////////////////////////////
23 
24 
25 #ifndef ROOT_TNamed
26 #include "TNamed.h"
27 #endif
28 #ifndef ROOT_TObjArray
29 #include "TObjArray.h"
30 #endif
31 
32 class TExMap;
33 
34 class TProcessID : public TNamed {
35 
36 private:
37  TProcessID(const TProcessID &ref); // TProcessID are not copiable.
38  TProcessID& operator=(const TProcessID &ref); // TProcessID are not copiable.
39 
40 protected:
41  Int_t fCount; //!Reference count to this object (from TFile)
42  TObjArray *fObjects; //!Array pointing to the referenced objects
43 
44  static TProcessID *fgPID; //Pointer to current session ProcessID
45  static TObjArray *fgPIDs; //Table of ProcessIDs
46  static TExMap *fgObjPIDs; //Table pointer to pids
47  static UInt_t fgNumber; //Referenced objects count
48 
49 public:
50  TProcessID();
51  virtual ~TProcessID();
52  void CheckInit();
53  virtual void Clear(Option_t *option="");
56  Int_t GetCount() const {return fCount;}
57  TObjArray *GetObjects() const {return fObjects;}
59  void PutObjectWithID(TObject *obj, UInt_t uid=0);
60  virtual void RecursiveRemove(TObject *obj);
61 
62  static TProcessID *AddProcessID();
63  static UInt_t AssignID(TObject *obj);
64  static void Cleanup();
65  static UInt_t GetNProcessIDs();
66  static TProcessID *GetPID();
67  static TObjArray *GetPIDs();
68  static TProcessID *GetProcessID(UShort_t pid);
69  static TProcessID *GetProcessWithUID(const TObject *obj);
70  static TProcessID *GetProcessWithUID(UInt_t uid,const void *obj);
72  static UInt_t GetObjectCount();
73  static Bool_t IsValid(TProcessID *pid);
74  static void SetObjectCount(UInt_t number);
75 
76  ClassDef(TProcessID,1) //Process Unique Identifier in time and space
77 };
78 
79 #endif
static TProcessID * GetPID()
static: returns pointer to current TProcessID
Definition: TProcessID.cxx:298
static TProcessID * GetProcessID(UShort_t pid)
static function returning a pointer to TProcessID number pid in fgPIDs
Definition: TProcessID.cxx:217
virtual void RecursiveRemove(TObject *obj)
called by the object destructor remove reference to obj from the current table if it is referenced ...
Definition: TProcessID.cxx:356
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...
Definition: TProcessID.cxx:329
An array of TObjects.
Definition: TObjArray.h:39
const char Option_t
Definition: RtypesCore.h:62
static UInt_t GetNProcessIDs()
Return the (static) number of process IDs.
Definition: TProcessID.cxx:225
unsigned short UShort_t
Definition: RtypesCore.h:36
virtual ~TProcessID()
Destructor.
Definition: TProcessID.cxx:78
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
static TObjArray * GetPIDs()
static: returns array of TProcessIDs
Definition: TProcessID.cxx:306
static TObjArray * fgPIDs
Definition: TProcessID.h:45
#define ClassDef(name, id)
Definition: Rtypes.h:254
static TProcessID * fgPID
Array pointing to the referenced objects.
Definition: TProcessID.h:44
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:33
static void SetObjectCount(UInt_t number)
static function to set the current referenced object count fgNumber is incremented every time a new o...
Definition: TProcessID.cxx:375
A TProcessID identifies a ROOT job in a unique way in time and space.
Definition: TProcessID.h:34
static void Cleanup()
static function (called by TROOT destructor) to delete all TProcessIDs
Definition: TProcessID.cxx:173
TProcessID & operator=(const TProcessID &ref)
Int_t fCount
Definition: TProcessID.h:41
TObjArray * GetObjects() const
Definition: TProcessID.h:57
static TProcessID * GetProcessWithUID(const TObject *obj)
static function returning a pointer to TProcessID with its pid encoded in the highest byte of obj->Ge...
Definition: TProcessID.cxx:252
TProcessID()
Default constructor.
Definition: TProcessID.cxx:69
TObjArray * fObjects
Reference count to this object (from TFile)
Definition: TProcessID.h:42
Int_t IncrementCount()
Increase the reference count to this object.
Definition: TProcessID.cxx:268
unsigned int UInt_t
Definition: RtypesCore.h:42
Int_t DecrementCount()
The reference fCount is used to delete the TProcessID in the TFile destructor when fCount = 0...
Definition: TProcessID.cxx:207
static TProcessID * AddProcessID()
Static function to add a new TProcessID to the list of PIDs.
Definition: TProcessID.cxx:89
TObject * GetObjectWithID(UInt_t uid)
returns the TObject with unique identifier uid in the table of objects
Definition: TProcessID.cxx:287
void CheckInit()
Initialize fObjects.
Definition: TProcessID.cxx:165
static UInt_t fgNumber
Definition: TProcessID.h:47
static TExMap * fgObjPIDs
Definition: TProcessID.h:46
virtual void Clear(Option_t *option="")
delete the TObjArray pointing to referenced objects this function is called by TFile::Close("R") ...
Definition: TProcessID.cxx:187
static TProcessID * GetSessionProcessID()
static function returning the pointer to the session TProcessID
Definition: TProcessID.cxx:260
Mother of all ROOT objects.
Definition: TObject.h:58
Int_t GetCount() const
Definition: TProcessID.h:56
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.
Definition: TProcessID.cxx:128
static UInt_t GetObjectCount()
Return the current referenced object count fgNumber is incremented every time a new object is referen...
Definition: TProcessID.cxx:279
static Bool_t IsValid(TProcessID *pid)
static function. return kTRUE if pid is a valid TProcessID
Definition: TProcessID.cxx:315
TObject * obj
This class stores a (key,value) pair using an external hash.
Definition: TExMap.h:35