X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_Data.h;h=4e96a5be5c65e126cc2352ca2fc2f07e72904e44;hb=9b0703c45ab066f8421c72865b1b701f5c169860;hp=4695446ce9b29eadd7e256b30c837d3f462338b3;hpb=b04995d04df6376eb662cd2ce52b64f59573a334;p=modules%2Fshaper.git diff --git a/src/Model/Model_Data.h b/src/Model/Model_Data.h index 4695446ce..4e96a5be5 100644 --- a/src/Model/Model_Data.h +++ b/src/Model/Model_Data.h @@ -163,7 +163,10 @@ class Model_Data : public ModelAPI_Data MODEL_EXPORT virtual ModelAPI_ExecState execState(); /// Registers error during the execution, causes the ExecutionFailed state - MODEL_EXPORT virtual void setError(const std::string& theError); + MODEL_EXPORT virtual void setError(const std::string& theError, bool theSend = true); + + /// Registers error during the execution, causes the ExecutionFailed state + MODEL_EXPORT virtual std::string error() const; /// Returns the identifier of feature-owner, unique in this document MODEL_EXPORT virtual int featureId() const; @@ -176,11 +179,47 @@ class Model_Data : public ModelAPI_Data MODEL_EXPORT virtual void referencesToObjects( std::list > >& theRefs); + /// Copies all atributes content into theTarget data + MODEL_EXPORT virtual void copyTo(std::shared_ptr theTarget); + private: - /// removes all information about back references + /// Removes all information about back references void eraseBackReferences(); - // adds a back reference (with identifier which attribute references to this object - void addBackReference(FeaturePtr theFeature, std::string theAttrID); + /// Adds a back reference (with identifier which attribute references to this object + /// It does not change the consealment flag of the data object result + /// \param theFeature feature referenced to this + /// \param theAttrID identifier of the attribute that is references from theFeature to this + void removeBackReference(FeaturePtr theFeature, std::string theAttrID); + /// Adds a back reference (with identifier which attribute references to this object + /// \param theFeature feature referenced to this + /// \param theAttrID identifier of the attribute that is references from theFeature to this + /// \param theApplyConcealment applies consealment flag changes + void addBackReference(FeaturePtr theFeature, std::string theAttrID, + const bool theApplyConcealment = true); }; +/// Generic method to register back reference, used in referencing attributes. +/// Without concealment change, it will be done later, on synchronization. +#define ADD_BACK_REF(TARGET) \ + if (TARGET.get() != NULL) { \ + FeaturePtr anAttributeOwnerFeature = std::dynamic_pointer_cast(owner()); \ + if (anAttributeOwnerFeature.get()) { \ + std::shared_ptr aTargetData = std::dynamic_pointer_cast( \ + (TARGET)->data()); \ + aTargetData->addBackReference(anAttributeOwnerFeature, id(), false); \ + } \ + } + +/// Generic method to unregister back reference, used in referencing attributes. +/// Without concealment change, it will be done later, on synchronization. +#define REMOVE_BACK_REF(TARGET) \ + if (TARGET.get() != NULL) { \ + FeaturePtr anAttOwnerFeature = std::dynamic_pointer_cast(owner()); \ + if (anAttOwnerFeature.get()) { \ + std::shared_ptr aTargetData = std::dynamic_pointer_cast( \ + (TARGET)->data()); \ + aTargetData->removeBackReference(anAttOwnerFeature, id()); \ + } \ + } + #endif