LCOV - code coverage report
Current view: top level - MUON/MUONcore - AliMUON2DMapIterator.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 28 31 90.3 %
Date: 2016-06-14 17:26:59 Functions: 9 11 81.8 %

          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             : 

Generated by: LCOV version 1.11