Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SUIT_DATAOBJECT_ITERATOR_H
00024 #define SUIT_DATAOBJECT_ITERATOR_H
00025
00026 #include "SUIT_DataObject.h"
00027
00034 class SUIT_EXPORT SUIT_DataObjectIterator
00035 {
00036 public:
00037 typedef enum { DepthLeft, DepthRight, BreadthLeft, BreadthRight, User } DetourType;
00038
00039 SUIT_DataObjectIterator( SUIT_DataObject* root, const int det, const bool fromTrueRoot = false );
00040
00041 virtual void operator++();
00042 SUIT_DataObject* current() const;
00043
00044 int depth() const;
00045 int detour() const;
00046
00047 protected:
00048 SUIT_DataObject* parent( SUIT_DataObject* ) const;
00049 SUIT_DataObject* extreme( DataObjectList&, bool FromLeft ) const;
00050 SUIT_DataObject* globalSibling( SUIT_DataObject*, bool next ) const;
00051
00052 protected:
00053 SUIT_DataObject* myRoot;
00054 SUIT_DataObject* myCurrent;
00055
00056 private:
00057 SUIT_DataObject* myExtremeChild;
00058 int myDetourType, myCurrentLevel;
00059 };
00060
00066 class SUIT_DataObjectLevelIterator : public SUIT_DataObjectIterator
00067 {
00068 public:
00069 SUIT_DataObjectLevelIterator( SUIT_DataObject* root, const int start, const int end = 0,
00070 const bool LeftToRight = true );
00071 virtual void operator++();
00072
00073 protected:
00074 int myStartLevel;
00075 int myEndLevel;
00076 };
00077
00078 #endif