ROOT logo
// @(#)root/cont:$Id: THashList.h 27904 2009-03-20 19:44:39Z pcanal $
// Author: Fons Rademakers   10/08/95

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_THashList
#define ROOT_THashList


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// THashList                                                            //
//                                                                      //
// THashList implements a hybrid collection class consisting of a       //
// hash table and a list to store TObject's. The hash table is used for //
// quick access and lookup of objects while the list allows the objects //
// to be ordered. The hash value is calculated using the value returned //
// by the TObject's Hash() function. Each class inheriting from TObject //
// can override Hash() as it sees fit.                                  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TList
#include "TList.h"
#endif

class THashTable;


class THashList : public TList {

protected:
   THashTable   *fTable;    //Hashtable used for quick lookup of objects

private:
   THashList(const THashList&);              // not implemented
   THashList& operator=(const THashList&);   // not implemented

public:
   THashList(Int_t capacity=TCollection::kInitHashTableCapacity, Int_t rehash=0);
   THashList(TObject *parent, Int_t capacity=TCollection::kInitHashTableCapacity, Int_t rehash=0);
   virtual    ~THashList();
   Float_t    AverageCollisions() const;
   void       Clear(Option_t *option="");
   void       Delete(Option_t *option="");

   TObject   *FindObject(const char *name) const;
   TObject   *FindObject(const TObject *obj) const;

   TList     *GetListForObject(const char *name) const;
   TList     *GetListForObject(const TObject *obj) const;

   void       AddFirst(TObject *obj);
   void       AddFirst(TObject *obj, Option_t *opt);
   void       AddLast(TObject *obj);
   void       AddLast(TObject *obj, Option_t *opt);
   void       AddAt(TObject *obj, Int_t idx);
   void       AddAfter(const TObject *after, TObject *obj);
   void       AddAfter(TObjLink *after, TObject *obj);
   void       AddBefore(const TObject *before, TObject *obj);
   void       AddBefore(TObjLink *before, TObject *obj);
   void       RecursiveRemove(TObject *obj);
   void       Rehash(Int_t newCapacity);
   TObject   *Remove(TObject *obj);
   TObject   *Remove(TObjLink *lnk);

   ClassDef(THashList,0)  //Doubly linked list with hashtable for lookup
};

#endif
 THashList.h:1
 THashList.h:2
 THashList.h:3
 THashList.h:4
 THashList.h:5
 THashList.h:6
 THashList.h:7
 THashList.h:8
 THashList.h:9
 THashList.h:10
 THashList.h:11
 THashList.h:12
 THashList.h:13
 THashList.h:14
 THashList.h:15
 THashList.h:16
 THashList.h:17
 THashList.h:18
 THashList.h:19
 THashList.h:20
 THashList.h:21
 THashList.h:22
 THashList.h:23
 THashList.h:24
 THashList.h:25
 THashList.h:26
 THashList.h:27
 THashList.h:28
 THashList.h:29
 THashList.h:30
 THashList.h:31
 THashList.h:32
 THashList.h:33
 THashList.h:34
 THashList.h:35
 THashList.h:36
 THashList.h:37
 THashList.h:38
 THashList.h:39
 THashList.h:40
 THashList.h:41
 THashList.h:42
 THashList.h:43
 THashList.h:44
 THashList.h:45
 THashList.h:46
 THashList.h:47
 THashList.h:48
 THashList.h:49
 THashList.h:50
 THashList.h:51
 THashList.h:52
 THashList.h:53
 THashList.h:54
 THashList.h:55
 THashList.h:56
 THashList.h:57
 THashList.h:58
 THashList.h:59
 THashList.h:60
 THashList.h:61
 THashList.h:62
 THashList.h:63
 THashList.h:64
 THashList.h:65
 THashList.h:66
 THashList.h:67
 THashList.h:68
 THashList.h:69
 THashList.h:70
 THashList.h:71
 THashList.h:72
 THashList.h:73
 THashList.h:74
 THashList.h:75
 THashList.h:76