Salome HOME
Update comments
[modules/gui.git] / src / SUIT / SUIT_DataObjectIterator.h
1 #ifndef SUIT_DATAOBJECT_ITERATOR_H
2 #define SUIT_DATAOBJECT_ITERATOR_H
3
4 #include "SUIT_DataObject.h"
5
6 /*!
7   Class provide data object iterator.
8 */
9 class SUIT_EXPORT SUIT_DataObjectIterator
10 {
11 public:
12   typedef enum { DepthLeft, DepthRight, BreadthLeft, BreadthRight, User } DetourType;
13
14   SUIT_DataObjectIterator( SUIT_DataObject* root, const int det, const bool fromTrueRoot = false );
15
16   virtual void      operator++();
17   SUIT_DataObject*  current() const;
18
19   int               depth() const;
20   int               detour() const;
21
22 protected: 
23   SUIT_DataObject*  parent( SUIT_DataObject* ) const;
24   SUIT_DataObject*  extreme( DataObjectList&, bool FromLeft ) const;
25   SUIT_DataObject*  globalSibling( SUIT_DataObject*, bool next ) const;
26
27 protected:
28   SUIT_DataObject*  myRoot;
29   SUIT_DataObject*  myCurrent;
30
31 private:
32   SUIT_DataObject*  myExtremeChild;
33   int               myDetourType, myCurrentLevel;
34 };
35
36 class SUIT_DataObjectLevelIterator : public SUIT_DataObjectIterator
37 {
38 public:
39   SUIT_DataObjectLevelIterator( SUIT_DataObject* root, const int start, const int end = 0,
40                                   const bool LeftToRight = true );
41   virtual void      operator++();
42
43 protected:
44   int myStartLevel;
45   int myEndLevel;
46 };
47
48 #endif