#ifndef ROOT_TRefTable
#define ROOT_TRefTable
#ifndef ROOT_TObject
#include "TObject.h"
#endif
#include <string>
#include <vector>
class TObjArray;
class TProcessID;
class TRefTable : public TObject {
protected:
Int_t fNumPIDs;
Int_t *fAllocSize;
Int_t *fN;
Int_t **fParentIDs;
Int_t fParentID;
Int_t fDefaultSize;
UInt_t fUID;
TProcessID *fUIDContext;
Int_t fSize;
TObjArray *fParents;
TObject *fOwner;
std::vector<std::string> fProcessGUIDs;
std::vector<Int_t> fMapPIDtoInternal;
static TRefTable *fgRefTable;
Int_t AddInternalIdxForPID(TProcessID* procid);
virtual Int_t ExpandForIID(Int_t iid, Int_t newsize);
void ExpandPIDs(Int_t numpids);
Int_t FindPIDGUID(const char* guid) const;
Int_t GetInternalIdxForPID(TProcessID* procid) const;
Int_t GetInternalIdxForPID(Int_t pid) const;
public:
enum {
kHaveWarnedReadingOld = BIT(14)
};
TRefTable();
TRefTable(TObject *owner, Int_t size);
virtual ~TRefTable();
virtual Int_t Add(Int_t uid, TProcessID* context = 0);
virtual void Clear(Option_t * ="");
virtual Int_t Expand(Int_t pid, Int_t newsize);
virtual void FillBuffer(TBuffer &b);
static TRefTable *GetRefTable();
Int_t GetNumPIDs() const {return fNumPIDs;}
Int_t GetSize(Int_t pid) const {return fAllocSize[GetInternalIdxForPID(pid)];}
Int_t GetN(Int_t pid) const {return fN[GetInternalIdxForPID(pid)];}
TObject *GetOwner() const {return fOwner;}
TObject *GetParent(Int_t uid, TProcessID* context = 0) const;
TObjArray *GetParents() const {return fParents;}
UInt_t GetUID() const {return fUID;}
TProcessID *GetUIDContext() const {return fUIDContext;}
virtual Bool_t Notify();
virtual void ReadBuffer(TBuffer &b);
virtual void Reset(Option_t * ="");
virtual Int_t SetParent(const TObject* parent, const Int_t branchID);
static void SetRefTable(TRefTable *table);
virtual void SetUID(UInt_t uid, TProcessID* context = 0) {fUID=uid; fUIDContext = context;}
ClassDef(TRefTable,3)
};
#endif
Last change: Wed Jun 25 08:52:08 2008
Last generated: 2008-06-25 08:52
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.