Salome HOME
DCQ : Merge with Ecole_ete_a6.
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_AttributeSequenceOfReal_i.cxx
index 8b48632b28472d113bb83b701a2ced6fe7f1ffbe..d7f480a160c7c86fd72fa6fb241a0fc2bf4001de 100644 (file)
@@ -79,3 +79,32 @@ CORBA::Long SALOMEDS_AttributeSequenceOfReal_i::Length()
 {
   return Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Length();
 }
+
+char* SALOMEDS_AttributeSequenceOfReal_i::Store() {
+  Handle(SALOMEDS_SequenceOfRealAttribute) CasCadeSeq = Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr);
+  Standard_Integer aLength = CasCadeSeq->Length();
+  char* aResult = new char[aLength * 25];
+  aResult[0] = 0;
+  Standard_Integer aPosition = 0;
+  for (int i = 1; i <= aLength; i++) {
+    sprintf(aResult + aPosition , "%f ", CasCadeSeq->Value(i));
+    aPosition += strlen(aResult + aPosition);
+  }
+  return aResult;
+}
+
+void SALOMEDS_AttributeSequenceOfReal_i::Restore(const char* value) {
+  Handle(TColStd_HSequenceOfReal) CasCadeSeq = new TColStd_HSequenceOfReal;
+  
+  char* aCopy = strdup(value);
+  char* adr = strtok(aCopy, " ");
+  char *err = NULL;
+  while (adr) {
+    CORBA::Double r =  strtod(adr, &err);
+    if (err == adr) break;
+    else CasCadeSeq->Append(r);
+    adr = strtok(NULL, " ");
+  }
+  delete(aCopy);
+  Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Assign(CasCadeSeq);
+}