// @(#)root/cont
// Author: Bianca-Cristina Cristescu February 2014

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TListOfEnumsWithLock                                                         //
//                                                                      //
// A collection of TEnum objects designed for fast access given a       //
// DeclId_t and for keep track of TEnum that were described             //
// unloaded enum.                                                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include <forward_list>

#include "TListOfEnumsWithLock.h"
#include "TClass.h"
#include "TExMap.h"
#include "TEnum.h"
#include "TGlobal.h"
#include "TInterpreter.h"
#include "TVirtualMutex.h"

ClassImp(TListOfEnumsWithLock)

//______________________________________________________________________________
TListOfEnumsWithLock::TListOfEnumsWithLock(TClass *cl /*=0*/) :
TListOfEnums(cl)
{
}

//______________________________________________________________________________
TListOfEnumsWithLock::~TListOfEnumsWithLock()
{
   // Destructor.

}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddFirst(TObject *obj)
{
   // Add object at the beginning of the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddFirst(obj);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddFirst(TObject *obj, Option_t *opt)
{
   // Add object at the beginning of the list and also store option.
   // Storing an option is useful when one wants to change the behaviour
   // of an object a little without having to create a complete new
   // copy of the object. This feature is used, for example, by the Draw()
   // method. It allows the same object to be drawn in different ways.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddFirst(obj, opt);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddLast(TObject *obj)
{
   // Add object at the end of the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddLast(obj);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddLast(TObject *obj, Option_t *opt)
{
   // Add object at the end of the list and also store option.
   // Storing an option is useful when one wants to change the behaviour
   // of an object a little without having to create a complete new
   // copy of the object. This feature is used, for example, by the Draw()
   // method. It allows the same object to be drawn in different ways.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddLast(obj, opt);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddAt(TObject *obj, Int_t idx)
{
   // Insert object at location idx in the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddAt(obj, idx);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddAfter(const TObject *after, TObject *obj)
{
   // Insert object after object after in the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddAfter(after, obj);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddAfter(TObjLink *after, TObject *obj)
{
   // Insert object after object after in the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddAfter(after, obj);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddBefore(const TObject *before, TObject *obj)
{
   // Insert object before object before in the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddBefore(before, obj);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::AddBefore(TObjLink *before, TObject *obj)
{
   // Insert object before object before in the list.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::AddBefore(before, obj);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::Clear(Option_t *option)
{
   // Remove all objects from the list. Does not delete the objects unless
   // the THashList is the owner (set via SetOwner()).

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::Clear(option);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::Delete(Option_t *option /* ="" */)
{
   // Delete all TDataMember object files.

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::Delete(option);
}

//______________________________________________________________________________
TObject *TListOfEnumsWithLock::FindObject(const char *name) const
{
   // Specialize FindObject to do search for the
   // a enum just by name or create it if its not already in the list

   R__LOCKGUARD(gInterpreterMutex);
   TObject *result = TListOfEnums::FindObject(name);
   if (!result) {


      TInterpreter::DeclId_t decl;
      if (GetClass()) decl = gInterpreter->GetEnum(GetClass(), name);
      else        decl = gInterpreter->GetEnum(0, name);
      if (decl) result = const_cast<TListOfEnumsWithLock *>(this)->Get(decl, name);
   }
   return result;
}


//______________________________________________________________________________
TObject* TListOfEnumsWithLock::FindObject(const TObject* obj) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::FindObject(obj);
}

//______________________________________________________________________________
TEnum *TListOfEnumsWithLock::GetObject(const char *name) const
{
   // Return an object from the list of enums *if and only if* is has already
   // been loaded in the list.  This is an internal routine.

   R__LOCKGUARD(gInterpreterMutex);
   return (TEnum*)THashList::FindObject(name);
}

//______________________________________________________________________________
void TListOfEnumsWithLock::RecursiveRemove(TObject *obj)
{
   // Remove object from this collection and recursively remove the object
   // from all other objects (and collections).
   // This function overrides TCollection::RecursiveRemove that calls
   // the Remove function. THashList::Remove cannot be called because
   // it uses the hash value of the hash table. This hash value
   // is not available anymore when RecursiveRemove is called from
   // the TObject destructor.

   if (!obj) return;

   R__LOCKGUARD(gInterpreterMutex);
   TListOfEnums::RecursiveRemove(obj);
}

//______________________________________________________________________________
TObject *TListOfEnumsWithLock::Remove(TObject *obj)
{
   // Remove object from the list.

   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::Remove(obj);
}

//______________________________________________________________________________
TObject *TListOfEnumsWithLock::Remove(TObjLink *lnk)
{
   // Remove object via its objlink from the list.

   if (!lnk) return 0;

   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::Remove(lnk);
}

//______________________________________________________________________________
TIterator* TListOfEnumsWithLock::MakeIterator(Bool_t dir ) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return new TListOfEnumsWithLockIter(this,dir);
}

//______________________________________________________________________________
TObject* TListOfEnumsWithLock::At(Int_t idx) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::At(idx);
}

//______________________________________________________________________________
TObject* TListOfEnumsWithLock::After(const TObject *obj) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::After(obj);
}

//______________________________________________________________________________
TObject* TListOfEnumsWithLock::Before(const TObject *obj) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::Before(obj);
}

//______________________________________________________________________________
TObject* TListOfEnumsWithLock::First() const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::First();
}

//______________________________________________________________________________
TObjLink* TListOfEnumsWithLock::FirstLink() const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::FirstLink();
}

//______________________________________________________________________________
TObject** TListOfEnumsWithLock::GetObjectRef(const TObject *obj) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::GetObjectRef(obj);
}

//______________________________________________________________________________
TObject* TListOfEnumsWithLock::Last() const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::Last();
}

//______________________________________________________________________________
TObjLink* TListOfEnumsWithLock::LastLink() const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::LastLink();
}


//______________________________________________________________________________
Int_t TListOfEnumsWithLock::GetLast() const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::GetLast();
}

//______________________________________________________________________________
Int_t TListOfEnumsWithLock::IndexOf(const TObject *obj) const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::IndexOf(obj);
}


//______________________________________________________________________________
Int_t TListOfEnumsWithLock::GetSize() const
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListOfEnums::GetSize();
}

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TListOfEnumsWithLockIter                                                 //
//                                                                      //
// Iterator for TListOfEnumsWithLock.                                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

ClassImp(TListOfEnumsWithLockIter)

//______________________________________________________________________________
TListOfEnumsWithLockIter::TListOfEnumsWithLockIter(const TListOfEnumsWithLock *l, Bool_t dir ):
TListIter(l,dir) {}

//______________________________________________________________________________
TObject *TListOfEnumsWithLockIter::Next()
{
   R__LOCKGUARD(gInterpreterMutex);
   return TListIter::Next();
}
 TListOfEnumsWithLock.cxx:1
 TListOfEnumsWithLock.cxx:2
 TListOfEnumsWithLock.cxx:3
 TListOfEnumsWithLock.cxx:4
 TListOfEnumsWithLock.cxx:5
 TListOfEnumsWithLock.cxx:6
 TListOfEnumsWithLock.cxx:7
 TListOfEnumsWithLock.cxx:8
 TListOfEnumsWithLock.cxx:9
 TListOfEnumsWithLock.cxx:10
 TListOfEnumsWithLock.cxx:11
 TListOfEnumsWithLock.cxx:12
 TListOfEnumsWithLock.cxx:13
 TListOfEnumsWithLock.cxx:14
 TListOfEnumsWithLock.cxx:15
 TListOfEnumsWithLock.cxx:16
 TListOfEnumsWithLock.cxx:17
 TListOfEnumsWithLock.cxx:18
 TListOfEnumsWithLock.cxx:19
 TListOfEnumsWithLock.cxx:20
 TListOfEnumsWithLock.cxx:21
 TListOfEnumsWithLock.cxx:22
 TListOfEnumsWithLock.cxx:23
 TListOfEnumsWithLock.cxx:24
 TListOfEnumsWithLock.cxx:25
 TListOfEnumsWithLock.cxx:26
 TListOfEnumsWithLock.cxx:27
 TListOfEnumsWithLock.cxx:28
 TListOfEnumsWithLock.cxx:29
 TListOfEnumsWithLock.cxx:30
 TListOfEnumsWithLock.cxx:31
 TListOfEnumsWithLock.cxx:32
 TListOfEnumsWithLock.cxx:33
 TListOfEnumsWithLock.cxx:34
 TListOfEnumsWithLock.cxx:35
 TListOfEnumsWithLock.cxx:36
 TListOfEnumsWithLock.cxx:37
 TListOfEnumsWithLock.cxx:38
 TListOfEnumsWithLock.cxx:39
 TListOfEnumsWithLock.cxx:40
 TListOfEnumsWithLock.cxx:41
 TListOfEnumsWithLock.cxx:42
 TListOfEnumsWithLock.cxx:43
 TListOfEnumsWithLock.cxx:44
 TListOfEnumsWithLock.cxx:45
 TListOfEnumsWithLock.cxx:46
 TListOfEnumsWithLock.cxx:47
 TListOfEnumsWithLock.cxx:48
 TListOfEnumsWithLock.cxx:49
 TListOfEnumsWithLock.cxx:50
 TListOfEnumsWithLock.cxx:51
 TListOfEnumsWithLock.cxx:52
 TListOfEnumsWithLock.cxx:53
 TListOfEnumsWithLock.cxx:54
 TListOfEnumsWithLock.cxx:55
 TListOfEnumsWithLock.cxx:56
 TListOfEnumsWithLock.cxx:57
 TListOfEnumsWithLock.cxx:58
 TListOfEnumsWithLock.cxx:59
 TListOfEnumsWithLock.cxx:60
 TListOfEnumsWithLock.cxx:61
 TListOfEnumsWithLock.cxx:62
 TListOfEnumsWithLock.cxx:63
 TListOfEnumsWithLock.cxx:64
 TListOfEnumsWithLock.cxx:65
 TListOfEnumsWithLock.cxx:66
 TListOfEnumsWithLock.cxx:67
 TListOfEnumsWithLock.cxx:68
 TListOfEnumsWithLock.cxx:69
 TListOfEnumsWithLock.cxx:70
 TListOfEnumsWithLock.cxx:71
 TListOfEnumsWithLock.cxx:72
 TListOfEnumsWithLock.cxx:73
 TListOfEnumsWithLock.cxx:74
 TListOfEnumsWithLock.cxx:75
 TListOfEnumsWithLock.cxx:76
 TListOfEnumsWithLock.cxx:77
 TListOfEnumsWithLock.cxx:78
 TListOfEnumsWithLock.cxx:79
 TListOfEnumsWithLock.cxx:80
 TListOfEnumsWithLock.cxx:81
 TListOfEnumsWithLock.cxx:82
 TListOfEnumsWithLock.cxx:83
 TListOfEnumsWithLock.cxx:84
 TListOfEnumsWithLock.cxx:85
 TListOfEnumsWithLock.cxx:86
 TListOfEnumsWithLock.cxx:87
 TListOfEnumsWithLock.cxx:88
 TListOfEnumsWithLock.cxx:89
 TListOfEnumsWithLock.cxx:90
 TListOfEnumsWithLock.cxx:91
 TListOfEnumsWithLock.cxx:92
 TListOfEnumsWithLock.cxx:93
 TListOfEnumsWithLock.cxx:94
 TListOfEnumsWithLock.cxx:95
 TListOfEnumsWithLock.cxx:96
 TListOfEnumsWithLock.cxx:97
 TListOfEnumsWithLock.cxx:98
 TListOfEnumsWithLock.cxx:99
 TListOfEnumsWithLock.cxx:100
 TListOfEnumsWithLock.cxx:101
 TListOfEnumsWithLock.cxx:102
 TListOfEnumsWithLock.cxx:103
 TListOfEnumsWithLock.cxx:104
 TListOfEnumsWithLock.cxx:105
 TListOfEnumsWithLock.cxx:106
 TListOfEnumsWithLock.cxx:107
 TListOfEnumsWithLock.cxx:108
 TListOfEnumsWithLock.cxx:109
 TListOfEnumsWithLock.cxx:110
 TListOfEnumsWithLock.cxx:111
 TListOfEnumsWithLock.cxx:112
 TListOfEnumsWithLock.cxx:113
 TListOfEnumsWithLock.cxx:114
 TListOfEnumsWithLock.cxx:115
 TListOfEnumsWithLock.cxx:116
 TListOfEnumsWithLock.cxx:117
 TListOfEnumsWithLock.cxx:118
 TListOfEnumsWithLock.cxx:119
 TListOfEnumsWithLock.cxx:120
 TListOfEnumsWithLock.cxx:121
 TListOfEnumsWithLock.cxx:122
 TListOfEnumsWithLock.cxx:123
 TListOfEnumsWithLock.cxx:124
 TListOfEnumsWithLock.cxx:125
 TListOfEnumsWithLock.cxx:126
 TListOfEnumsWithLock.cxx:127
 TListOfEnumsWithLock.cxx:128
 TListOfEnumsWithLock.cxx:129
 TListOfEnumsWithLock.cxx:130
 TListOfEnumsWithLock.cxx:131
 TListOfEnumsWithLock.cxx:132
 TListOfEnumsWithLock.cxx:133
 TListOfEnumsWithLock.cxx:134
 TListOfEnumsWithLock.cxx:135
 TListOfEnumsWithLock.cxx:136
 TListOfEnumsWithLock.cxx:137
 TListOfEnumsWithLock.cxx:138
 TListOfEnumsWithLock.cxx:139
 TListOfEnumsWithLock.cxx:140
 TListOfEnumsWithLock.cxx:141
 TListOfEnumsWithLock.cxx:142
 TListOfEnumsWithLock.cxx:143
 TListOfEnumsWithLock.cxx:144
 TListOfEnumsWithLock.cxx:145
 TListOfEnumsWithLock.cxx:146
 TListOfEnumsWithLock.cxx:147
 TListOfEnumsWithLock.cxx:148
 TListOfEnumsWithLock.cxx:149
 TListOfEnumsWithLock.cxx:150
 TListOfEnumsWithLock.cxx:151
 TListOfEnumsWithLock.cxx:152
 TListOfEnumsWithLock.cxx:153
 TListOfEnumsWithLock.cxx:154
 TListOfEnumsWithLock.cxx:155
 TListOfEnumsWithLock.cxx:156
 TListOfEnumsWithLock.cxx:157
 TListOfEnumsWithLock.cxx:158
 TListOfEnumsWithLock.cxx:159
 TListOfEnumsWithLock.cxx:160
 TListOfEnumsWithLock.cxx:161
 TListOfEnumsWithLock.cxx:162
 TListOfEnumsWithLock.cxx:163
 TListOfEnumsWithLock.cxx:164
 TListOfEnumsWithLock.cxx:165
 TListOfEnumsWithLock.cxx:166
 TListOfEnumsWithLock.cxx:167
 TListOfEnumsWithLock.cxx:168
 TListOfEnumsWithLock.cxx:169
 TListOfEnumsWithLock.cxx:170
 TListOfEnumsWithLock.cxx:171
 TListOfEnumsWithLock.cxx:172
 TListOfEnumsWithLock.cxx:173
 TListOfEnumsWithLock.cxx:174
 TListOfEnumsWithLock.cxx:175
 TListOfEnumsWithLock.cxx:176
 TListOfEnumsWithLock.cxx:177
 TListOfEnumsWithLock.cxx:178
 TListOfEnumsWithLock.cxx:179
 TListOfEnumsWithLock.cxx:180
 TListOfEnumsWithLock.cxx:181
 TListOfEnumsWithLock.cxx:182
 TListOfEnumsWithLock.cxx:183
 TListOfEnumsWithLock.cxx:184
 TListOfEnumsWithLock.cxx:185
 TListOfEnumsWithLock.cxx:186
 TListOfEnumsWithLock.cxx:187
 TListOfEnumsWithLock.cxx:188
 TListOfEnumsWithLock.cxx:189
 TListOfEnumsWithLock.cxx:190
 TListOfEnumsWithLock.cxx:191
 TListOfEnumsWithLock.cxx:192
 TListOfEnumsWithLock.cxx:193
 TListOfEnumsWithLock.cxx:194
 TListOfEnumsWithLock.cxx:195
 TListOfEnumsWithLock.cxx:196
 TListOfEnumsWithLock.cxx:197
 TListOfEnumsWithLock.cxx:198
 TListOfEnumsWithLock.cxx:199
 TListOfEnumsWithLock.cxx:200
 TListOfEnumsWithLock.cxx:201
 TListOfEnumsWithLock.cxx:202
 TListOfEnumsWithLock.cxx:203
 TListOfEnumsWithLock.cxx:204
 TListOfEnumsWithLock.cxx:205
 TListOfEnumsWithLock.cxx:206
 TListOfEnumsWithLock.cxx:207
 TListOfEnumsWithLock.cxx:208
 TListOfEnumsWithLock.cxx:209
 TListOfEnumsWithLock.cxx:210
 TListOfEnumsWithLock.cxx:211
 TListOfEnumsWithLock.cxx:212
 TListOfEnumsWithLock.cxx:213
 TListOfEnumsWithLock.cxx:214
 TListOfEnumsWithLock.cxx:215
 TListOfEnumsWithLock.cxx:216
 TListOfEnumsWithLock.cxx:217
 TListOfEnumsWithLock.cxx:218
 TListOfEnumsWithLock.cxx:219
 TListOfEnumsWithLock.cxx:220
 TListOfEnumsWithLock.cxx:221
 TListOfEnumsWithLock.cxx:222
 TListOfEnumsWithLock.cxx:223
 TListOfEnumsWithLock.cxx:224
 TListOfEnumsWithLock.cxx:225
 TListOfEnumsWithLock.cxx:226
 TListOfEnumsWithLock.cxx:227
 TListOfEnumsWithLock.cxx:228
 TListOfEnumsWithLock.cxx:229
 TListOfEnumsWithLock.cxx:230
 TListOfEnumsWithLock.cxx:231
 TListOfEnumsWithLock.cxx:232
 TListOfEnumsWithLock.cxx:233
 TListOfEnumsWithLock.cxx:234
 TListOfEnumsWithLock.cxx:235
 TListOfEnumsWithLock.cxx:236
 TListOfEnumsWithLock.cxx:237
 TListOfEnumsWithLock.cxx:238
 TListOfEnumsWithLock.cxx:239
 TListOfEnumsWithLock.cxx:240
 TListOfEnumsWithLock.cxx:241
 TListOfEnumsWithLock.cxx:242
 TListOfEnumsWithLock.cxx:243
 TListOfEnumsWithLock.cxx:244
 TListOfEnumsWithLock.cxx:245
 TListOfEnumsWithLock.cxx:246
 TListOfEnumsWithLock.cxx:247
 TListOfEnumsWithLock.cxx:248
 TListOfEnumsWithLock.cxx:249
 TListOfEnumsWithLock.cxx:250
 TListOfEnumsWithLock.cxx:251
 TListOfEnumsWithLock.cxx:252
 TListOfEnumsWithLock.cxx:253
 TListOfEnumsWithLock.cxx:254
 TListOfEnumsWithLock.cxx:255
 TListOfEnumsWithLock.cxx:256
 TListOfEnumsWithLock.cxx:257
 TListOfEnumsWithLock.cxx:258
 TListOfEnumsWithLock.cxx:259
 TListOfEnumsWithLock.cxx:260
 TListOfEnumsWithLock.cxx:261
 TListOfEnumsWithLock.cxx:262
 TListOfEnumsWithLock.cxx:263
 TListOfEnumsWithLock.cxx:264
 TListOfEnumsWithLock.cxx:265
 TListOfEnumsWithLock.cxx:266
 TListOfEnumsWithLock.cxx:267
 TListOfEnumsWithLock.cxx:268
 TListOfEnumsWithLock.cxx:269
 TListOfEnumsWithLock.cxx:270
 TListOfEnumsWithLock.cxx:271
 TListOfEnumsWithLock.cxx:272
 TListOfEnumsWithLock.cxx:273
 TListOfEnumsWithLock.cxx:274
 TListOfEnumsWithLock.cxx:275
 TListOfEnumsWithLock.cxx:276
 TListOfEnumsWithLock.cxx:277
 TListOfEnumsWithLock.cxx:278
 TListOfEnumsWithLock.cxx:279
 TListOfEnumsWithLock.cxx:280
 TListOfEnumsWithLock.cxx:281
 TListOfEnumsWithLock.cxx:282
 TListOfEnumsWithLock.cxx:283
 TListOfEnumsWithLock.cxx:284
 TListOfEnumsWithLock.cxx:285
 TListOfEnumsWithLock.cxx:286
 TListOfEnumsWithLock.cxx:287
 TListOfEnumsWithLock.cxx:288
 TListOfEnumsWithLock.cxx:289
 TListOfEnumsWithLock.cxx:290
 TListOfEnumsWithLock.cxx:291
 TListOfEnumsWithLock.cxx:292
 TListOfEnumsWithLock.cxx:293
 TListOfEnumsWithLock.cxx:294
 TListOfEnumsWithLock.cxx:295
 TListOfEnumsWithLock.cxx:296
 TListOfEnumsWithLock.cxx:297
 TListOfEnumsWithLock.cxx:298
 TListOfEnumsWithLock.cxx:299
 TListOfEnumsWithLock.cxx:300
 TListOfEnumsWithLock.cxx:301
 TListOfEnumsWithLock.cxx:302
 TListOfEnumsWithLock.cxx:303
 TListOfEnumsWithLock.cxx:304
 TListOfEnumsWithLock.cxx:305
 TListOfEnumsWithLock.cxx:306
 TListOfEnumsWithLock.cxx:307
 TListOfEnumsWithLock.cxx:308
 TListOfEnumsWithLock.cxx:309
 TListOfEnumsWithLock.cxx:310
 TListOfEnumsWithLock.cxx:311
 TListOfEnumsWithLock.cxx:312
 TListOfEnumsWithLock.cxx:313
 TListOfEnumsWithLock.cxx:314
 TListOfEnumsWithLock.cxx:315
 TListOfEnumsWithLock.cxx:316
 TListOfEnumsWithLock.cxx:317
 TListOfEnumsWithLock.cxx:318
 TListOfEnumsWithLock.cxx:319
 TListOfEnumsWithLock.cxx:320
 TListOfEnumsWithLock.cxx:321
 TListOfEnumsWithLock.cxx:322
 TListOfEnumsWithLock.cxx:323
 TListOfEnumsWithLock.cxx:324
 TListOfEnumsWithLock.cxx:325
 TListOfEnumsWithLock.cxx:326
 TListOfEnumsWithLock.cxx:327
 TListOfEnumsWithLock.cxx:328
 TListOfEnumsWithLock.cxx:329
 TListOfEnumsWithLock.cxx:330
 TListOfEnumsWithLock.cxx:331
 TListOfEnumsWithLock.cxx:332
 TListOfEnumsWithLock.cxx:333
 TListOfEnumsWithLock.cxx:334