16 #ifndef ROO_HASH_TABLE
17 #define ROO_HASH_TABLE
24 class RooLinkedListElem ;
28 class RooHashTable :
public TObject {
31 enum HashMethod { Pointer=0, Name=1, Intrinsic=2 } ;
34 RooHashTable(Int_t initSize = 17, HashMethod hashMethod=Name) ;
35 RooHashTable(
const RooHashTable& other) ;
38 virtual ~RooHashTable() ;
40 void add(TObject* arg, TObject* hashArg=0) ;
41 Bool_t
remove(TObject* arg, TObject* hashArg=0) ;
42 TObject* find(
const char* name)
const ;
43 RooAbsArg* findArg(
const RooAbsArg* arg)
const ;
44 TObject* find(
const TObject* arg)
const ;
45 RooLinkedListElem* findLinkTo(
const TObject* arg)
const ;
46 RooSetPair* findSetPair(
const RooArgSet* set1,
const RooArgSet* set2)
const ;
47 Bool_t replace(
const TObject* oldArg,
const TObject* newArg,
const TObject* oldHashArg=0) ;
48 Int_t size()
const {
return _size ; }
49 Int_t entries()
const {
return _entries ; }
50 Double_t avgCollisions()
const ;
53 inline ULong_t hash(
const TObject* arg)
const {
56 case Pointer:
return TString::Hash((
void*)(&arg),
sizeof(
void*)) ;
57 case Name:
return TString::Hash(arg->GetName(),strlen(arg->GetName())) ;
58 case Intrinsic:
return arg->Hash() ;
63 HashMethod _hashMethod ;
67 RooLinkedList** _arr ;
69 ClassDef(RooHashTable,1)