X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_ResultBody.h;h=629b7c808a91b5379192fa4e8a6167e4ae7d9455;hb=aefcc0ac0b2edd475d5cfac2991501259ea78ba3;hp=721ad71f33402952dc1babfbcd68809d34efdc6d;hpb=d4b0a5cb916f4eccf4a0bce02e43a54c7a67cb93;p=modules%2Fshaper.git diff --git a/src/Model/Model_ResultBody.h b/src/Model/Model_ResultBody.h index 721ad71f3..629b7c808 100644 --- a/src/Model/Model_ResultBody.h +++ b/src/Model/Model_ResultBody.h @@ -26,6 +26,8 @@ #include #include +#include + /**\class Model_ResultBody * \ingroup DataModel * \brief The body (shape) result of a feature. @@ -43,6 +45,14 @@ class Model_ResultBody : public ModelAPI_ResultBody std::map mySubsMap; /// Keeps the last state of the concealment flag in order to update it when needed. bool myLastConcealed; + /// History information for update subs + std::shared_ptr myAlgo; + /// All old shapes used for the root result construction + std::list myOlds; + /// Information about the kind of the history information: modified or generated + bool myIsGenerated; + /// Map from old shape to list of new shapes, cash for computeOldForSub method + TopTools_DataMapOfShapeListOfShape myHistoryCash; public: @@ -98,6 +108,9 @@ public: /// Returns true is the topology is connected. MODEL_EXPORT virtual bool isConnectedTopology(); + /// Cleans cash related to the already stored elements + MODEL_EXPORT virtual void cleanCash() override; + protected: /// Makes a body on the given feature Model_ResultBody(); @@ -106,9 +119,18 @@ protected: void updateSubs(const std::shared_ptr& theThisShape, const bool theShapeChanged = true); + /// Updates the sub-bodies in accordance to the algorithm history information + void updateSubs( + const GeomShapePtr& theThisShape, const std::list& theOlds, + const std::shared_ptr theMakeShape, const bool isGenerated); + // Checks the state of children and parents to send events of creation/erase when needed void updateConcealment(); + /// Adds to theOldForSub only old shapes that where used for theSub creation + void computeOldForSub(const GeomShapePtr& theSub, + const std::list& theAllOlds, std::list& theOldForSub); + friend class Model_Objects; };