Salome HOME
Initial version
[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 class SUIT_EXPORT SUIT_DataObjectIterator
7 {
8 public:
9   typedef enum { DepthLeft, DepthRight, BreadthLeft, BreadthRight, User } DetourType;
10
11   SUIT_DataObjectIterator( SUIT_DataObject* root, const int det, const bool fromTrueRoot = false );
12
13   virtual void      operator++();
14   SUIT_DataObject*  current() const;
15
16   int               depth() const;
17   int               detour() const;
18
19 protected: 
20   SUIT_DataObject*  parent( SUIT_DataObject* ) const;
21   SUIT_DataObject*  extreme( DataObjectList&, bool FromLeft ) const;
22   SUIT_DataObject*  globalSibling( SUIT_DataObject*, bool next ) const;
23
24 protected:
25   SUIT_DataObject*  myRoot;
26   SUIT_DataObject*  myCurrent;
27
28 private:
29   SUIT_DataObject*  myExtremeChild;
30   int               myDetourType, myCurrentLevel;
31 };
32
33 class SUIT_DataObjectLevelIterator : public SUIT_DataObjectIterator
34 {
35 public:
36   SUIT_DataObjectLevelIterator( SUIT_DataObject* root, const int start, const int end = 0,
37                                   const bool LeftToRight = true );
38   virtual void      operator++();
39
40 protected:
41   int myStartLevel;
42   int myEndLevel;
43 };
44
45 #endif