PMD module
[u/mrichter/AliRoot.git] / MUON / MUONcore / AliMpExMapIterator.h
1 #ifndef ALIMPEXMAPITERATOR_H
2 #define ALIMPEXMAPITERATOR_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup core
10 /// \class AliMpExMapIterator
11 /// \brief Implementation of TIterator for AliMpExMap
12 /// 
13 //  Author Laurent Aphecetche
14
15 #ifndef ROOT_TIterator
16 #  include "TIterator.h"
17 #endif
18
19 class AliMpExMap;
20 class TString;
21 class TExMapIter;
22
23 //_____________________________________________________________________________
24 class AliMpExMapIterator : public TIterator
25 {
26   friend class AliMpExMap;
27
28 public:
29   AliMpExMapIterator(const AliMpExMap& theMap);
30   AliMpExMapIterator(const AliMpExMapIterator& rhs);
31   AliMpExMapIterator& operator=(const AliMpExMapIterator& rhs);
32   AliMpExMapIterator& operator=(const TIterator& rhs);
33   
34   virtual ~AliMpExMapIterator();
35   
36   /// The returned object must not be deleted by the user.  
37
38   // Iterating without retrieving a key
39   virtual TObject* Next();
40
41   // Iterating with retrieving a key
42   TObject*  Next(Int_t& key);
43   TObject*  Next(Int_t& keyFirst, Int_t& keySecond);
44   TObject*  Next(TString& key);
45   
46   virtual void Reset(); 
47   
48   virtual const TCollection* GetCollection() const;
49
50 private:
51 #if (defined(ROOT_VERSION_CODE) && ROOT_VERSION_CODE >= 334082) || \
52   (defined(ROOT_SVN_REVISION) && ROOT_SVN_REVISION >= 29598) 
53   // ROOT_VERSION_CODE = 334082 corresponds to Root version 5.25/02
54   // ROOT_SVN_REVISION is not defined in Root versions after moving in git
55   typedef Long64_t Index_t;
56 #else    
57   typedef Long_t Index_t;
58 #endif    
59   Bool_t Next(Index_t& index, TObject*& object);
60   
61   TExMapIter* fIterator; ///< iterator we are wrapping
62
63   ClassDef(AliMpExMapIterator,0) // TIterator for AliMpExMap
64 };
65
66
67 #endif