- static Events_ID anEvent = Events_Loop::eventByName(EVENT_FEATURE_UPDATED);
- Model_FeatureUpdatedMessage aMsg(feature(), anEvent);
- Events_Loop::loop()->send(aMsg);
+std::shared_ptr<ModelAPI_Attribute> Model_AttributeRefAttr::attr()
+{
+ ObjectPtr anObj = object();
+ if (anObj) {
+ std::shared_ptr<Model_Data> aData = std::dynamic_pointer_cast<Model_Data>(anObj->data());
+ return aData->attribute(TCollection_AsciiString(myID->Get()).ToCString());
+ }
+ // not initialized
+ return std::shared_ptr<ModelAPI_Attribute>();
+}
+
+void Model_AttributeRefAttr::setObject(ObjectPtr theObject)
+{
+ if (theObject && (!myIsInitialized || myID->Get().Length() != 0 || object() != theObject)) {
+ std::shared_ptr<Model_Data> aData = std::dynamic_pointer_cast<Model_Data>(
+ theObject->data());
+ myRef->Set(aData->label().Father());
+ myID->Set(""); // feature is identified by the empty ID
+ owner()->data()->sendAttributeUpdated(this);