51 ClassImp(TProcessUUID);
56 TProcessUUID::TProcessUUID() : TProcessID()
58 fUUIDs =
new THashList(100,3);
59 fActive =
new TBits(100);
66 TProcessUUID::~TProcessUUID()
69 delete fUUIDs; fUUIDs = 0;
70 delete fActive; fActive = 0;
78 UInt_t TProcessUUID::AddUUID(TUUID &uuid, TObject *obj)
81 const char *uuids = uuid.AsString();
82 TObjString *objs = (TObjString*)fUUIDs->FindObject(uuids);
84 number = objs->GetUniqueID();
85 uuid.SetUUIDNumber(number);
86 objs->SetUniqueID(number);
87 obj->SetUniqueID(number);
88 obj->SetBit(kHasUUID);
89 if (number >= (UInt_t)fObjects->GetSize()) fObjects->AddAtAndExpand(obj,number);
90 if (fObjects->UncheckedAt(number) == 0) fObjects->AddAt(obj,number);
94 objs =
new TObjString(uuids);
96 number = fActive->FirstNullBit();
97 uuid.SetUUIDNumber(number);
98 objs->SetUniqueID(number);
99 obj->SetUniqueID(number);
100 obj->SetBit(kHasUUID);
101 fActive->SetBitNumber(number);
102 fObjects->AddAtAndExpand(obj,number);
110 UInt_t TProcessUUID::AddUUID(
const char *uuids)
113 TObjString *objs = (TObjString*)fUUIDs->FindObject(uuids);
114 if (objs)
return objs->GetUniqueID();
117 objs =
new TObjString(uuids);
119 number = fActive->FirstNullBit();
120 objs->SetUniqueID(number);
121 fActive->SetBitNumber(number);
128 TObjString *TProcessUUID::FindUUID(UInt_t number)
const
130 TObjLink *lnk = fUUIDs->FirstLink();
132 TObject *obj = lnk->GetObject();
133 if (obj->GetUniqueID() == number)
return (TObjString*)obj;
142 void TProcessUUID::RemoveUUID(UInt_t number)
144 if (number > (UInt_t)fObjects->GetSize())
return;
145 TObjLink *lnk = fUUIDs->FirstLink();
147 TObject *obj = lnk->GetObject();
148 if (obj->GetUniqueID() == number) {
151 fActive->ResetBitNumber(number);
152 fObjects->AddAt(0,number);