// @(#)root/table:$Id$
// Author: Valery Fine(fine@bnl.gov)   25/01/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.             *
 *************************************************************************/

#ifndef ROOT_TVolumeViewIter
#define ROOT_TVolumeViewIter

#include "TDataSetIter.h"
#include "TVolumePosition.h"

class TObjArray;
class TVolumeView;

class TVolumeViewIter : public TDataSetIter {
private:
protected:
   friend class TVolumeView;
   TObjArray    *fPositions; // the array of the Node position in the absolute system
   virtual const TVolumePosition *GetPosition(Int_t level=0) const;
   virtual TVolumePosition *SetPositionAt(TVolume *node,Double_t x=0, Double_t y=0, Double_t z=0, TRotMatrix *matrix=0);
   virtual TVolumePosition *SetPositionAt(TVolumePosition &curPosition);
public:
   TVolumeViewIter(TVolumeView *view, Int_t depth=1, Bool_t dir=kIterForward);
   ~TVolumeViewIter();
   virtual Bool_t          Notify();
   virtual void            Notify(TDataSet *set);
   virtual void            Reset(TDataSet *l=0,Int_t depth=0);

   virtual TDataSet       *operator[](const Char_t *path);
   TVolumePosition        *operator[](Int_t level);

   TVolumePosition        *UpdateTempMatrix(TVolumePosition *curPosition);
   void                    ResetPosition(Int_t level=0, TVolumePosition *newPosition=0);
   ClassDef(TVolumeViewIter,0)  // Volume view iterator
};

inline Bool_t  TVolumeViewIter::Notify() { return TDataSetIter::Notify();}
inline TDataSet  *TVolumeViewIter::operator[](const Char_t *path)
{return TDataSetIter::operator[](path); }

#endif

 TVolumeViewIter.h:1
 TVolumeViewIter.h:2
 TVolumeViewIter.h:3
 TVolumeViewIter.h:4
 TVolumeViewIter.h:5
 TVolumeViewIter.h:6
 TVolumeViewIter.h:7
 TVolumeViewIter.h:8
 TVolumeViewIter.h:9
 TVolumeViewIter.h:10
 TVolumeViewIter.h:11
 TVolumeViewIter.h:12
 TVolumeViewIter.h:13
 TVolumeViewIter.h:14
 TVolumeViewIter.h:15
 TVolumeViewIter.h:16
 TVolumeViewIter.h:17
 TVolumeViewIter.h:18
 TVolumeViewIter.h:19
 TVolumeViewIter.h:20
 TVolumeViewIter.h:21
 TVolumeViewIter.h:22
 TVolumeViewIter.h:23
 TVolumeViewIter.h:24
 TVolumeViewIter.h:25
 TVolumeViewIter.h:26
 TVolumeViewIter.h:27
 TVolumeViewIter.h:28
 TVolumeViewIter.h:29
 TVolumeViewIter.h:30
 TVolumeViewIter.h:31
 TVolumeViewIter.h:32
 TVolumeViewIter.h:33
 TVolumeViewIter.h:34
 TVolumeViewIter.h:35
 TVolumeViewIter.h:36
 TVolumeViewIter.h:37
 TVolumeViewIter.h:38
 TVolumeViewIter.h:39
 TVolumeViewIter.h:40
 TVolumeViewIter.h:41
 TVolumeViewIter.h:42
 TVolumeViewIter.h:43
 TVolumeViewIter.h:44
 TVolumeViewIter.h:45
 TVolumeViewIter.h:46
 TVolumeViewIter.h:47
 TVolumeViewIter.h:48
 TVolumeViewIter.h:49