-void SALOMEDS_AttributeTreeNode_i::Restore(const char* value) {
- Handle(TDataStd_TreeNode) aNode = Handle(TDataStd_TreeNode)::DownCast(_myAttr);
- Handle(TDF_Data) DF = TDocStd_Document::Get(_myAttr->Label())->GetData();
-
- char* aCopy = CORBA::string_dup(value);
- char* adr = strtok(aCopy, " ");
-
- TDF_Label aLabel;
- Handle(TDataStd_TreeNode) aDepNode;
-
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
- aNode->SetFather(aDepNode);
- }
-
- adr = strtok(NULL, " ");
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
- aNode->SetPrevious(aDepNode);
- }
-
- adr = strtok(NULL, " ");
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
- aNode->SetNext(aDepNode);
- }
-
- adr = strtok(NULL, " ");
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
- aNode->SetFirst(aDepNode);
- }
- delete(aCopy);
-}