Salome HOME
Issue #1941 Split auxiliary line.
[modules/shaper.git] / src / Model / Model_AttributeString.cpp
index 8a9d6f0ebcea225222a1361f5842200645c65647..72eb091932cb241b7662ab9bab9047f64196f48a 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        Model_AttributeString.cpp
 // Created:     25 august 2014
 // Author:      sbh
@@ -11,8 +13,6 @@
 #include <Standard_TypeDef.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TCollection_ExtendedString.hxx>
-#include <TDataStd_Integer.hxx>
-#include <TDataStd_Name.hxx>
 
 #include <string>
 
@@ -20,6 +20,8 @@ void Model_AttributeString::setValue(const std::string& theValue)
 {
   TCollection_ExtendedString aValue(theValue.c_str());
   if (!myIsInitialized || myString->Get() != aValue) {
+    if (myString.IsNull())
+      myString = TDataStd_Name::Set(myLab, TCollection_ExtendedString());
     myString->Set(aValue);
     owner()->data()->sendAttributeUpdated(this);
   }
@@ -27,15 +29,19 @@ void Model_AttributeString::setValue(const std::string& theValue)
 
 std::string Model_AttributeString::value()
 {
+  if (myString.IsNull())
+    return "";  // not initialized
   return TCollection_AsciiString(myString->Get()).ToCString();
 }
 
 Model_AttributeString::Model_AttributeString(TDF_Label& theLabel)
+{
+  myLab = theLabel;
+  reinit();
+}
+
+void Model_AttributeString::reinit()
 {
   // check the attribute could be already presented in this doc (after load document)
-  myIsInitialized = theLabel.FindAttribute(TDataStd_Integer::GetID(), myString) == Standard_True;
-  if (!myIsInitialized) {
-    // create attribute: not initialized by value yet, just empty string
-    myString = TDataStd_Name::Set(theLabel, TCollection_ExtendedString());
-  }
+  myIsInitialized = myLab.FindAttribute(TDataStd_Name::GetID(), myString) == Standard_True;
 }