+ bool myIsAutomatic;
+ /// to know that some parameter was changed during this operation
+ bool myIsParamUpdated;
+ /// to execute features of finish if perview is not needed
+ bool myIsFinish;
+
+ /// internal structure that contains the updating iteration information:
+ /// which object and subobject is iterated, t ocontinue iteration
+ class IterationItem {
+ /// The main object, subs of it are iterated
+ std::shared_ptr<ModelAPI_CompositeFeature> myMain;
+ /// The currently iterated sub-object of root document
+ std::shared_ptr<ModelAPI_Feature> mySub;
+ /// 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;}
+ };
+ /// List of iterated features: composite feature to the currently iterated sub.
+ /// The first element in the list has no "main": the root document is not feature.
+ std::list<IterationItem> myProcessIterator;