Line data Source code
1 : /**************************************************************************
2 : * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 : * *
4 : * Author: The ALICE Off-line Project. *
5 : * Contributors are mentioned in the code where appropriate. *
6 : * *
7 : * Permission to use, copy, modify and distribute this software and its *
8 : * documentation strictly for non-commercial purposes is hereby granted *
9 : * without fee, provided that the above copyright notice appears in all *
10 : * copies and that both the copyright notice and this permission notice *
11 : * appear in the supporting documentation. The authors make no claims *
12 : * about the suitability of this software for any purpose. It is *
13 : * provided "as is" without express or implied warranty. *
14 : **************************************************************************/
15 :
16 : // $Id$
17 :
18 : #include "AliMUON2DMapIterator.h"
19 :
20 : //-----------------------------------------------------------------------------
21 : /// \class AliMUON2DMapIterator
22 : /// Implementation of TIterator for 2Dmaps
23 : ///
24 : /// A simple implementation of VDataIterator for 2Dmaps.
25 : ///
26 : /// \author Laurent Aphecetche
27 : //-----------------------------------------------------------------------------
28 :
29 : #include "AliMpExMap.h"
30 : #include "AliMpExMapIterator.h"
31 : #include "AliLog.h"
32 :
33 : /// \cond CLASSIMP
34 18 : ClassImp(AliMUON2DMapIterator)
35 : /// \endcond
36 :
37 : //_____________________________________________________________________________
38 : AliMUON2DMapIterator::AliMUON2DMapIterator(const AliMpExMap& theMap)
39 4 : : TIterator(),
40 4 : fkMap(&theMap),
41 8 : fIter1(theMap.CreateIterator()),
42 8 : fIter2(NextIterator())
43 20 : {
44 : /// default ctor
45 4 : Reset();
46 8 : }
47 :
48 : //_____________________________________________________________________________
49 : AliMUON2DMapIterator&
50 : AliMUON2DMapIterator::operator=(const TIterator& /*rhs*/)
51 : {
52 : // overriden operator= (imposed by Root's definition of TIterator::operator= ?)
53 :
54 0 : AliFatalGeneral("operator=(TIterator&)",""); // as in copy ctor
55 0 : return *this;
56 : }
57 :
58 : //_____________________________________________________________________________
59 : AliMUON2DMapIterator::~AliMUON2DMapIterator()
60 24 : {
61 : /// dtor
62 8 : delete fIter1;
63 4 : delete fIter2;
64 12 : }
65 :
66 : //_____________________________________________________________________________
67 : const TCollection*
68 : AliMUON2DMapIterator::GetCollection() const
69 : {
70 : /// Return 0 as we're not really dealing with a Root TCollection...
71 0 : return 0x0;
72 : }
73 :
74 : //_____________________________________________________________________________
75 : TIterator*
76 : AliMUON2DMapIterator::NextIterator()
77 : {
78 : /// Get next map (from fIter1) and create an iterator to it
79 :
80 644 : AliMpExMap* m = static_cast<AliMpExMap*>(fIter1->Next());
81 :
82 328 : if (!m) return 0x0;
83 :
84 316 : return m->CreateIterator();
85 322 : }
86 :
87 : //_____________________________________________________________________________
88 : TObject*
89 : AliMUON2DMapIterator::Next()
90 : {
91 : /// return next object
92 :
93 67952 : if (!fIter2) return 0x0;
94 :
95 33970 : TObject* o = fIter2->Next();
96 :
97 33970 : if (!o)
98 : {
99 624 : delete fIter2;
100 312 : fIter2 = NextIterator();
101 312 : return Next();
102 : }
103 :
104 33658 : return o;
105 33974 : }
106 :
107 : //_____________________________________________________________________________
108 : void
109 : AliMUON2DMapIterator::Reset()
110 : {
111 : /// rewind the iterator
112 :
113 16 : delete fIter2;
114 6 : fIter1->Reset();
115 6 : fIter2 = NextIterator();
116 6 : }
117 :
|