ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

//-----------------------------------------------------------------------------
// Class AliMpExMapIterator
// ------------------------
// Implementation of TIterator for AliMpExMap
// Author: Laurent Aphecetche
//-----------------------------------------------------------------------------

#include "AliMpExMapIterator.h"
#include "AliMpExMap.h"

#include "AliLog.h"

#include <TClass.h>
#include <TExMap.h>
#include <TString.h>

/// \cond CLASSIMP
ClassImp(AliMpExMapIterator)
/// \endcond

//_____________________________________________________________________________
AliMpExMapIterator::AliMpExMapIterator(const AliMpExMap& theMap)
: TIterator(),
  fIterator(new TExMapIter(&(theMap.fMap)))
{
/// Standard constructor
}

//_____________________________________________________________________________
AliMpExMapIterator::AliMpExMapIterator(const AliMpExMapIterator& rhs)
: TIterator(rhs),
  fIterator(rhs.fIterator)
{
/// Copy constructor
}

//_____________________________________________________________________________
AliMpExMapIterator& 
AliMpExMapIterator::operator=(const AliMpExMapIterator& rhs)
{
/// Assignment operator

  if  ( this != &rhs )
  {
    fIterator = rhs.fIterator;
  }
  return *this;
}

//_____________________________________________________________________________
AliMpExMapIterator& 
AliMpExMapIterator::operator=(const TIterator& rhs)
{
  /// Overriden operator= (imposed by Root's definition of TIterator::operator= ?)
  
  if ( this != &rhs && rhs.IsA() == AliMpExMapIterator::Class() ) 
  {
    const AliMpExMapIterator& rhs1 = static_cast<const AliMpExMapIterator&>(rhs);
    fIterator = rhs1.fIterator;
  }
  return *this;
}

//_____________________________________________________________________________
AliMpExMapIterator::~AliMpExMapIterator()
{
/// Destructor

  delete fIterator;
}

//_____________________________________________________________________________
Bool_t 
AliMpExMapIterator::Next(Index_t& index, TObject*& object)
{
/// Move to next object in iteration

  Index_t value  = 0;

  object = 0;
  
  Bool_t rv = fIterator->Next(index,value);

  if ( rv )
  {
    object = reinterpret_cast<TObject*> (value);
  }
  
  return rv;
}

//_____________________________________________________________________________
TObject* 
AliMpExMapIterator::Next()
{
/// Return the next object in iteration.
/// The returned object must not be deleted by the user.  
  Index_t dummy;
  TObject* o(0x0);
  Next(dummy,o);
  return o;
}

//_____________________________________________________________________________
TObject* 
AliMpExMapIterator::Next(Int_t& key)
{
/// Return the next object in iteration and fill the key.
/// The returned object must not be deleted by the user.  

  TObject* o;
  Index_t index;
  Next(index,o);
  key = (Int_t)(index);
  return o;
}

//_____________________________________________________________________________
TObject* 
AliMpExMapIterator::Next(Int_t& keyFirst, Int_t& keySecond)
{
/// Return the next object in iteration and fill the key.
/// The returned object must not be deleted by the user.  
  Index_t index;
  TObject* o(0x0);
  Next(index,o);
  keyFirst = AliMpExMap::GetPairFirst(index);
  keySecond = AliMpExMap::GetPairSecond(index);
  return o;
}

//_____________________________________________________________________________
TObject* 
AliMpExMapIterator::Next(TString& key)
{
/// Return the next object in iteration and fill the key.
/// The returned object must not be deleted by the user.  
  Index_t index;
  TObject* o(0x0);
  Next(index,o);
  key = AliMpExMap::GetString(index);
  return o;
}

//_____________________________________________________________________________
void 
AliMpExMapIterator::Reset()
{
/// Reset

  fIterator->Reset();
}

//_____________________________________________________________________________
const TCollection* 
AliMpExMapIterator::GetCollection() const 
{
/// Nothing to be returned here, AliMpExMap is not a TCollection

  return 0x0;
}
 AliMpExMapIterator.cxx:1
 AliMpExMapIterator.cxx:2
 AliMpExMapIterator.cxx:3
 AliMpExMapIterator.cxx:4
 AliMpExMapIterator.cxx:5
 AliMpExMapIterator.cxx:6
 AliMpExMapIterator.cxx:7
 AliMpExMapIterator.cxx:8
 AliMpExMapIterator.cxx:9
 AliMpExMapIterator.cxx:10
 AliMpExMapIterator.cxx:11
 AliMpExMapIterator.cxx:12
 AliMpExMapIterator.cxx:13
 AliMpExMapIterator.cxx:14
 AliMpExMapIterator.cxx:15
 AliMpExMapIterator.cxx:16
 AliMpExMapIterator.cxx:17
 AliMpExMapIterator.cxx:18
 AliMpExMapIterator.cxx:19
 AliMpExMapIterator.cxx:20
 AliMpExMapIterator.cxx:21
 AliMpExMapIterator.cxx:22
 AliMpExMapIterator.cxx:23
 AliMpExMapIterator.cxx:24
 AliMpExMapIterator.cxx:25
 AliMpExMapIterator.cxx:26
 AliMpExMapIterator.cxx:27
 AliMpExMapIterator.cxx:28
 AliMpExMapIterator.cxx:29
 AliMpExMapIterator.cxx:30
 AliMpExMapIterator.cxx:31
 AliMpExMapIterator.cxx:32
 AliMpExMapIterator.cxx:33
 AliMpExMapIterator.cxx:34
 AliMpExMapIterator.cxx:35
 AliMpExMapIterator.cxx:36
 AliMpExMapIterator.cxx:37
 AliMpExMapIterator.cxx:38
 AliMpExMapIterator.cxx:39
 AliMpExMapIterator.cxx:40
 AliMpExMapIterator.cxx:41
 AliMpExMapIterator.cxx:42
 AliMpExMapIterator.cxx:43
 AliMpExMapIterator.cxx:44
 AliMpExMapIterator.cxx:45
 AliMpExMapIterator.cxx:46
 AliMpExMapIterator.cxx:47
 AliMpExMapIterator.cxx:48
 AliMpExMapIterator.cxx:49
 AliMpExMapIterator.cxx:50
 AliMpExMapIterator.cxx:51
 AliMpExMapIterator.cxx:52
 AliMpExMapIterator.cxx:53
 AliMpExMapIterator.cxx:54
 AliMpExMapIterator.cxx:55
 AliMpExMapIterator.cxx:56
 AliMpExMapIterator.cxx:57
 AliMpExMapIterator.cxx:58
 AliMpExMapIterator.cxx:59
 AliMpExMapIterator.cxx:60
 AliMpExMapIterator.cxx:61
 AliMpExMapIterator.cxx:62
 AliMpExMapIterator.cxx:63
 AliMpExMapIterator.cxx:64
 AliMpExMapIterator.cxx:65
 AliMpExMapIterator.cxx:66
 AliMpExMapIterator.cxx:67
 AliMpExMapIterator.cxx:68
 AliMpExMapIterator.cxx:69
 AliMpExMapIterator.cxx:70
 AliMpExMapIterator.cxx:71
 AliMpExMapIterator.cxx:72
 AliMpExMapIterator.cxx:73
 AliMpExMapIterator.cxx:74
 AliMpExMapIterator.cxx:75
 AliMpExMapIterator.cxx:76
 AliMpExMapIterator.cxx:77
 AliMpExMapIterator.cxx:78
 AliMpExMapIterator.cxx:79
 AliMpExMapIterator.cxx:80
 AliMpExMapIterator.cxx:81
 AliMpExMapIterator.cxx:82
 AliMpExMapIterator.cxx:83
 AliMpExMapIterator.cxx:84
 AliMpExMapIterator.cxx:85
 AliMpExMapIterator.cxx:86
 AliMpExMapIterator.cxx:87
 AliMpExMapIterator.cxx:88
 AliMpExMapIterator.cxx:89
 AliMpExMapIterator.cxx:90
 AliMpExMapIterator.cxx:91
 AliMpExMapIterator.cxx:92
 AliMpExMapIterator.cxx:93
 AliMpExMapIterator.cxx:94
 AliMpExMapIterator.cxx:95
 AliMpExMapIterator.cxx:96
 AliMpExMapIterator.cxx:97
 AliMpExMapIterator.cxx:98
 AliMpExMapIterator.cxx:99
 AliMpExMapIterator.cxx:100
 AliMpExMapIterator.cxx:101
 AliMpExMapIterator.cxx:102
 AliMpExMapIterator.cxx:103
 AliMpExMapIterator.cxx:104
 AliMpExMapIterator.cxx:105
 AliMpExMapIterator.cxx:106
 AliMpExMapIterator.cxx:107
 AliMpExMapIterator.cxx:108
 AliMpExMapIterator.cxx:109
 AliMpExMapIterator.cxx:110
 AliMpExMapIterator.cxx:111
 AliMpExMapIterator.cxx:112
 AliMpExMapIterator.cxx:113
 AliMpExMapIterator.cxx:114
 AliMpExMapIterator.cxx:115
 AliMpExMapIterator.cxx:116
 AliMpExMapIterator.cxx:117
 AliMpExMapIterator.cxx:118
 AliMpExMapIterator.cxx:119
 AliMpExMapIterator.cxx:120
 AliMpExMapIterator.cxx:121
 AliMpExMapIterator.cxx:122
 AliMpExMapIterator.cxx:123
 AliMpExMapIterator.cxx:124
 AliMpExMapIterator.cxx:125
 AliMpExMapIterator.cxx:126
 AliMpExMapIterator.cxx:127
 AliMpExMapIterator.cxx:128
 AliMpExMapIterator.cxx:129
 AliMpExMapIterator.cxx:130
 AliMpExMapIterator.cxx:131
 AliMpExMapIterator.cxx:132
 AliMpExMapIterator.cxx:133
 AliMpExMapIterator.cxx:134
 AliMpExMapIterator.cxx:135
 AliMpExMapIterator.cxx:136
 AliMpExMapIterator.cxx:137
 AliMpExMapIterator.cxx:138
 AliMpExMapIterator.cxx:139
 AliMpExMapIterator.cxx:140
 AliMpExMapIterator.cxx:141
 AliMpExMapIterator.cxx:142
 AliMpExMapIterator.cxx:143
 AliMpExMapIterator.cxx:144
 AliMpExMapIterator.cxx:145
 AliMpExMapIterator.cxx:146
 AliMpExMapIterator.cxx:147
 AliMpExMapIterator.cxx:148
 AliMpExMapIterator.cxx:149
 AliMpExMapIterator.cxx:150
 AliMpExMapIterator.cxx:151
 AliMpExMapIterator.cxx:152
 AliMpExMapIterator.cxx:153
 AliMpExMapIterator.cxx:154
 AliMpExMapIterator.cxx:155
 AliMpExMapIterator.cxx:156
 AliMpExMapIterator.cxx:157
 AliMpExMapIterator.cxx:158
 AliMpExMapIterator.cxx:159
 AliMpExMapIterator.cxx:160
 AliMpExMapIterator.cxx:161
 AliMpExMapIterator.cxx:162
 AliMpExMapIterator.cxx:163
 AliMpExMapIterator.cxx:164
 AliMpExMapIterator.cxx:165
 AliMpExMapIterator.cxx:166
 AliMpExMapIterator.cxx:167
 AliMpExMapIterator.cxx:168
 AliMpExMapIterator.cxx:169
 AliMpExMapIterator.cxx:170
 AliMpExMapIterator.cxx:171
 AliMpExMapIterator.cxx:172
 AliMpExMapIterator.cxx:173
 AliMpExMapIterator.cxx:174
 AliMpExMapIterator.cxx:175
 AliMpExMapIterator.cxx:176
 AliMpExMapIterator.cxx:177
 AliMpExMapIterator.cxx:178