// @(#)root/table:$Id$
// Author: Valery Fine(fine@bnl.gov)   03/12/99

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TTableIter - class iterator to loop over sorted TTable's             //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TTableIter.h"
#include "TTableSorter.h"

ClassImp(TTableIter)

//_____________________________________________________________________
TTableIter::TTableIter(const TTableSorter *table, Float_t &keyvalue)
           : fTableSorter(table), fIndx(0), fFirstIndx(0)
{
   //to be documented
   CountKey(keyvalue);
}

//_____________________________________________________________________
TTableIter::TTableIter(const TTableSorter *table, Long_t &keyvalue)
           : fTableSorter(table), fIndx(0), fFirstIndx(0)
{
   //to be documented
   CountKey(keyvalue);
}

//_____________________________________________________________________
TTableIter::TTableIter(const TTableSorter *table, Int_t &keyvalue)
           : fTableSorter(table), fIndx(0), fFirstIndx(0)
{
   //to be documented
   CountKey(keyvalue);
}

//_____________________________________________________________________
TTableIter::TTableIter(const TTableSorter *table, Short_t &keyvalue)
           : fTableSorter(table), fIndx(0), fFirstIndx(0)
{
   //to be documented
   CountKey(keyvalue);
}

//_____________________________________________________________________
TTableIter::TTableIter(const TTableSorter *table, Double_t &keyvalue)
           : fTableSorter(table), fIndx(0), fFirstIndx(0)
{
   //to be documented
   CountKey(keyvalue);
}

//_____________________________________________________________________
Int_t TTableIter::CountKey(Float_t &keyvalue)
{
   //to be documented
   fTotalKeys = fTableSorter->CountKey(&keyvalue,0,kTRUE,&fFirstIndx);
   return GetNRows();
}
//_____________________________________________________________________
Int_t TTableIter::CountKey(Long_t &keyvalue)
{
   //to be documented
   fTotalKeys = fTableSorter->CountKey(&keyvalue,0,kTRUE,&fFirstIndx);
   return GetNRows();
}

//_____________________________________________________________________
Int_t TTableIter::CountKey(Int_t &keyvalue)
{
   //to be documented
   fTotalKeys = fTableSorter->CountKey(&keyvalue,0,kTRUE,&fFirstIndx);
   return GetNRows();
}

//_____________________________________________________________________
Int_t TTableIter::CountKey(Short_t &keyvalue)
{
   //to be documented
   fTotalKeys = fTableSorter->CountKey(&keyvalue,0,kTRUE,&fFirstIndx);
   return GetNRows();
}

//_____________________________________________________________________
Int_t TTableIter::CountKey(Double_t &keyvalue)
{
   //to be documented
   fTotalKeys = fTableSorter->CountKey(&keyvalue,0,kTRUE,&fFirstIndx);
   return GetNRows();
}

//_____________________________________________________________________
Int_t TTableIter::Next()
{
   //to be documented
   Int_t rowIndx = -1;
   if (fIndx < fTotalKeys) {
      rowIndx = fTableSorter->GetIndex(UInt_t(fFirstIndx+fIndx));
      fIndx++;
   }
   return rowIndx;
}

//_____________________________________________________________________
Int_t TTableIter::Next(Int_t idx)
{
   //to be documented
   Int_t rowIndx = -1;
   if (idx < fTotalKeys)
      rowIndx = fTableSorter->GetIndex(UInt_t(fFirstIndx+idx));
   return rowIndx;
}

//_____________________________________________________________________
Int_t TTableIter::Reset(Int_t indx)
{
   //to be documented
   Int_t oldIdx = fIndx;
   fIndx = TMath::Min(indx,fTotalKeys);
   return oldIdx;
}
 TTableIter.cxx:1
 TTableIter.cxx:2
 TTableIter.cxx:3
 TTableIter.cxx:4
 TTableIter.cxx:5
 TTableIter.cxx:6
 TTableIter.cxx:7
 TTableIter.cxx:8
 TTableIter.cxx:9
 TTableIter.cxx:10
 TTableIter.cxx:11
 TTableIter.cxx:12
 TTableIter.cxx:13
 TTableIter.cxx:14
 TTableIter.cxx:15
 TTableIter.cxx:16
 TTableIter.cxx:17
 TTableIter.cxx:18
 TTableIter.cxx:19
 TTableIter.cxx:20
 TTableIter.cxx:21
 TTableIter.cxx:22
 TTableIter.cxx:23
 TTableIter.cxx:24
 TTableIter.cxx:25
 TTableIter.cxx:26
 TTableIter.cxx:27
 TTableIter.cxx:28
 TTableIter.cxx:29
 TTableIter.cxx:30
 TTableIter.cxx:31
 TTableIter.cxx:32
 TTableIter.cxx:33
 TTableIter.cxx:34
 TTableIter.cxx:35
 TTableIter.cxx:36
 TTableIter.cxx:37
 TTableIter.cxx:38
 TTableIter.cxx:39
 TTableIter.cxx:40
 TTableIter.cxx:41
 TTableIter.cxx:42
 TTableIter.cxx:43
 TTableIter.cxx:44
 TTableIter.cxx:45
 TTableIter.cxx:46
 TTableIter.cxx:47
 TTableIter.cxx:48
 TTableIter.cxx:49
 TTableIter.cxx:50
 TTableIter.cxx:51
 TTableIter.cxx:52
 TTableIter.cxx:53
 TTableIter.cxx:54
 TTableIter.cxx:55
 TTableIter.cxx:56
 TTableIter.cxx:57
 TTableIter.cxx:58
 TTableIter.cxx:59
 TTableIter.cxx:60
 TTableIter.cxx:61
 TTableIter.cxx:62
 TTableIter.cxx:63
 TTableIter.cxx:64
 TTableIter.cxx:65
 TTableIter.cxx:66
 TTableIter.cxx:67
 TTableIter.cxx:68
 TTableIter.cxx:69
 TTableIter.cxx:70
 TTableIter.cxx:71
 TTableIter.cxx:72
 TTableIter.cxx:73
 TTableIter.cxx:74
 TTableIter.cxx:75
 TTableIter.cxx:76
 TTableIter.cxx:77
 TTableIter.cxx:78
 TTableIter.cxx:79
 TTableIter.cxx:80
 TTableIter.cxx:81
 TTableIter.cxx:82
 TTableIter.cxx:83
 TTableIter.cxx:84
 TTableIter.cxx:85
 TTableIter.cxx:86
 TTableIter.cxx:87
 TTableIter.cxx:88
 TTableIter.cxx:89
 TTableIter.cxx:90
 TTableIter.cxx:91
 TTableIter.cxx:92
 TTableIter.cxx:93
 TTableIter.cxx:94
 TTableIter.cxx:95
 TTableIter.cxx:96
 TTableIter.cxx:97
 TTableIter.cxx:98
 TTableIter.cxx:99
 TTableIter.cxx:100
 TTableIter.cxx:101
 TTableIter.cxx:102
 TTableIter.cxx:103
 TTableIter.cxx:104
 TTableIter.cxx:105
 TTableIter.cxx:106
 TTableIter.cxx:107
 TTableIter.cxx:108
 TTableIter.cxx:109
 TTableIter.cxx:110
 TTableIter.cxx:111
 TTableIter.cxx:112
 TTableIter.cxx:113
 TTableIter.cxx:114
 TTableIter.cxx:115
 TTableIter.cxx:116
 TTableIter.cxx:117
 TTableIter.cxx:118
 TTableIter.cxx:119
 TTableIter.cxx:120
 TTableIter.cxx:121
 TTableIter.cxx:122
 TTableIter.cxx:123
 TTableIter.cxx:124
 TTableIter.cxx:125
 TTableIter.cxx:126
 TTableIter.cxx:127
 TTableIter.cxx:128
 TTableIter.cxx:129
 TTableIter.cxx:130
 TTableIter.cxx:131