+ /// If this is true, this iteration must be breaked immideately
+ bool myBreaked;
+ /// If this flag is true, the virtual iteration is performed, unbreackable
+ bool myIsVirtual;
+ /// For composite main contains the current index
+ int myIndex;
+ /// For root object constains the reference to objects
+ Model_Objects* myObjects;
+ /// If it is true, the next "next" will be ignored
+ bool mySkipNext;
+
+ public:
+ /// Constructs the iterator of subs
+ IterationItem(std::shared_ptr<ModelAPI_CompositeFeature> theFeature);
+ /// Increments the iteration if not-breaked
+ void next();
+ /// Returns true if current is not null
+ bool more();
+ /// Returns the current iterated sub-element
+ std::shared_ptr<ModelAPI_Feature> current();
+ /// Returns true if theFeature is in all iterated objects
+ bool isIterated(std::shared_ptr<ModelAPI_Feature> theFeature);
+ /// Returns true if theFeature is earlier than the current value
+ bool isEarlierThanCurrent(std::shared_ptr<ModelAPI_Feature> theFeature);
+ /// Make iteration breaked
+ void setBreaked();
+ /// Makes the iteration before the currently breaked (next "next" will be ignored)
+ void setCurrentBefore(std::shared_ptr<ModelAPI_Feature> theFeature);
+ /// Initializes iteration: virtual or real
+ void startIteration(const bool theVirtual);
+ /// Returns true if iteration was breaked
+ bool isBreaked() {return myBreaked;}