X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2FSALOMEDS%2FSALOMEDS_AttributeSequenceOfReal_i.cxx;h=d7f480a160c7c86fd72fa6fb241a0fc2bf4001de;hb=1f742af859d50d34c63f9dc02f9a705089bf060e;hp=8b48632b28472d113bb83b701a2ced6fe7f1ffbe;hpb=102608ce8b69dd1ea798169e30223b67742ec26d;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.cxx b/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.cxx index 8b48632b2..d7f480a16 100644 --- a/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.cxx +++ b/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.cxx @@ -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); +}