40 class TMap :
public TCollection {
42 friend class TMapIter;
47 TMap(
const TMap& map);
48 TMap& operator=(
const TMap& map);
51 enum EStatusBits { kIsOwnerValue = BIT(15) };
53 virtual void PrintCollectionEntry(TObject* entry, Option_t* option, Int_t recurse)
const;
56 typedef TMapIter Iterator_t;
58 TMap(Int_t capacity = TCollection::kInitHashTableCapacity, Int_t rehash = 0);
60 void Add(TObject *obj);
61 void Add(TObject *key, TObject *value);
62 Float_t AverageCollisions()
const;
63 Int_t Capacity()
const;
64 void Clear(Option_t *option=
"");
65 Int_t Collisions(
const char *keyname)
const;
66 Int_t Collisions(TObject *key)
const;
67 void Delete(Option_t *option=
"");
68 void DeleteKeys() { Delete(); }
71 Bool_t DeleteEntry(TObject *key);
72 TObject *FindObject(
const char *keyname)
const;
73 TObject *FindObject(
const TObject *key)
const;
74 TObject **GetObjectRef(
const TObject *obj)
const {
return fTable->GetObjectRef(obj); }
75 const THashTable *GetTable()
const {
return fTable; }
76 TObject *GetValue(
const char *keyname)
const;
77 TObject *GetValue(
const TObject *key)
const;
78 Bool_t IsOwnerValue()
const {
return TestBit(kIsOwnerValue); }
79 TObject *operator()(
const char *keyname)
const {
return GetValue(keyname); }
80 TObject *operator()(
const TObject *key)
const {
return GetValue(key); }
81 TIterator *MakeIterator(Bool_t dir = kIterForward)
const;
82 void Rehash(Int_t newCapacity, Bool_t checkObjValidity = kTRUE);
83 TObject *Remove(TObject *key);
84 TPair *RemoveEntry(TObject *key);
85 virtual void SetOwnerValue(Bool_t enable = kTRUE);
86 virtual void SetOwnerKeyValue(Bool_t ownkeys = kTRUE, Bool_t ownvals = kTRUE);
87 virtual Int_t Write(
const char *name=0, Int_t option=0, Int_t bufsize=0);
88 virtual Int_t Write(
const char *name=0, Int_t option=0, Int_t bufsize=0)
const;
102 class TPair :
public TObject {
108 TPair& operator=(
const TPair&);
111 TPair(TObject *key, TObject *value) : fKey(key), fValue(value) { }
112 TPair(
const TPair &a) : TObject(), fKey(a.fKey), fValue(a.fValue) { }
114 Bool_t IsFolder()
const {
return kTRUE;}
115 virtual void Browse(TBrowser *b);
116 const char *GetName()
const {
return fKey->GetName(); }
117 const char *GetTitle()
const {
return fKey->GetTitle(); }
118 ULong_t Hash()
const {
return fKey->Hash(); }
119 Bool_t IsEqual(
const TObject *obj)
const {
return fKey->IsEqual(obj); }
120 TObject *Key()
const {
return fKey; }
121 TObject *Value()
const {
return fValue; }
122 void SetValue(TObject *val) { fValue = val; }
127 typedef TPair TAssoc;
131 #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600
132 #pragma GCC diagnostic push
133 #pragma GCC diagnostic ignored "-Weffc++"
144 class TMapIter :
public TIterator,
145 public std::iterator<std::bidirectional_iterator_tag,
146 TObject*, std::ptrdiff_t,
147 const TObject**, const TObject*&> {
151 THashTableIter *fCursor;
154 TMapIter() : fMap(0), fCursor(0), fDirection(kIterForward) { }
157 TMapIter(
const TMap *map, Bool_t dir = kIterForward);
158 TMapIter(
const TMapIter &iter);
160 TIterator &operator=(
const TIterator &rhs);
161 TMapIter &operator=(
const TMapIter &rhs);
163 const TCollection *GetCollection()
const {
return fMap; }
166 Bool_t operator!=(
const TIterator &aIter)
const;
167 Bool_t operator!=(
const TMapIter &aIter)
const;
168 TObject *operator*()
const;
173 #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600
174 #pragma GCC diagnostic pop