ROOT logo
#include "hlinearcatiter.h"
#include "hlinearcategory.h"
#include "TClass.h"

#include "TClonesArray.h"
#include "TIterator.h"

//*-- Author : Manuel Sanchez
//*-- Modified : 9/11/1998 by Manuel Sanchez

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////
//HLinearCatIter
//
// This is a iterator for a HLinearCategory
///////////////////////////////////////

HLinearCatIter::HLinearCatIter(void) {
  //Private constructor
}

HLinearCatIter::HLinearCatIter(HLinearCategory *cat,Bool_t dir) {
  //Constructor. "cat" is the category being iterated and "dir" is the
  //iteration direction.
  fArray=cat->fData;
  fDir=dir;
  fCurrentLoc.set(1,0);
  fIterator=fArray->MakeIterator(dir);
  fLocated=fLast=kFALSE;
}

HLinearCatIter::~HLinearCatIter(void) {
  //Destructor
  if (fIterator) delete fIterator;
}

TCollection *HLinearCatIter::GetCollection(void) const {
  return fArray;
}

TObject *HLinearCatIter::Next(void) {
  //Advances to next object in the category and returns the current one.
  //warning "HLinearCatIter::Next needs optimization..."
  if (fLocated && fLast) {
    fCurrent=NULL;
  } else {
    fCurrent=fIterator->Next();
    fLast=kTRUE;
  }
  return fCurrent;
}

void HLinearCatIter::Reset(void) {
  //Resets the iterator
  fLocated=fLast=kFALSE;
  fIterator->Reset();
}

Bool_t HLinearCatIter::gotoLocation(HLocation &loc) {
  if (loc.getNIndex()==0) {
    Reset();
  } else {
    fLocated=kTRUE; fLast=kFALSE;
    fCurrent=fArray->At(loc[0]);
    if (!fCurrent) return kFALSE;
  }
  return kTRUE;
}

HLocation &HLinearCatIter::getLocation(void) {
  fCurrentLoc[0]=fArray->IndexOf(fCurrent);
  return fCurrentLoc;
}


ClassImp(HLinearCatIter)


 hlinearcatiter.cc:1
 hlinearcatiter.cc:2
 hlinearcatiter.cc:3
 hlinearcatiter.cc:4
 hlinearcatiter.cc:5
 hlinearcatiter.cc:6
 hlinearcatiter.cc:7
 hlinearcatiter.cc:8
 hlinearcatiter.cc:9
 hlinearcatiter.cc:10
 hlinearcatiter.cc:11
 hlinearcatiter.cc:12
 hlinearcatiter.cc:13
 hlinearcatiter.cc:14
 hlinearcatiter.cc:15
 hlinearcatiter.cc:16
 hlinearcatiter.cc:17
 hlinearcatiter.cc:18
 hlinearcatiter.cc:19
 hlinearcatiter.cc:20
 hlinearcatiter.cc:21
 hlinearcatiter.cc:22
 hlinearcatiter.cc:23
 hlinearcatiter.cc:24
 hlinearcatiter.cc:25
 hlinearcatiter.cc:26
 hlinearcatiter.cc:27
 hlinearcatiter.cc:28
 hlinearcatiter.cc:29
 hlinearcatiter.cc:30
 hlinearcatiter.cc:31
 hlinearcatiter.cc:32
 hlinearcatiter.cc:33
 hlinearcatiter.cc:34
 hlinearcatiter.cc:35
 hlinearcatiter.cc:36
 hlinearcatiter.cc:37
 hlinearcatiter.cc:38
 hlinearcatiter.cc:39
 hlinearcatiter.cc:40
 hlinearcatiter.cc:41
 hlinearcatiter.cc:42
 hlinearcatiter.cc:43
 hlinearcatiter.cc:44
 hlinearcatiter.cc:45
 hlinearcatiter.cc:46
 hlinearcatiter.cc:47
 hlinearcatiter.cc:48
 hlinearcatiter.cc:49
 hlinearcatiter.cc:50
 hlinearcatiter.cc:51
 hlinearcatiter.cc:52
 hlinearcatiter.cc:53
 hlinearcatiter.cc:54
 hlinearcatiter.cc:55
 hlinearcatiter.cc:56
 hlinearcatiter.cc:57
 hlinearcatiter.cc:58
 hlinearcatiter.cc:59
 hlinearcatiter.cc:60
 hlinearcatiter.cc:61
 hlinearcatiter.cc:62
 hlinearcatiter.cc:63
 hlinearcatiter.cc:64
 hlinearcatiter.cc:65
 hlinearcatiter.cc:66
 hlinearcatiter.cc:67
 hlinearcatiter.cc:68
 hlinearcatiter.cc:69
 hlinearcatiter.cc:70
 hlinearcatiter.cc:71
 hlinearcatiter.cc:72
 hlinearcatiter.cc:73
 hlinearcatiter.cc:74
 hlinearcatiter.cc:75
 hlinearcatiter.cc:76
 hlinearcatiter.cc:77
 hlinearcatiter.cc:78