Salome HOME
0021133: EDF 1605 ALL: Space in dump files instead of tabulations
[modules/kernel.git] / src / SALOMEDSImpl / SALOMEDSImpl_ScalarVariable.cxx
index 0bc795290d359bc6d899342f2237c465ede5371a..1bd9fb353129be07dc58bb37569dbaa6034d2835 100644 (file)
 //
 #include "SALOMEDSImpl_ScalarVariable.hxx"
 #include "SALOMEDSImpl_GenericVariable.hxx"
+#include "Basics_Utils.hxx"
 #include <iostream>
 #include <cstdlib>
 #include <cstdio>
 
+#define OLDSTUDY_COMPATIBILITY
+
 //============================================================================
 /*! Function : SALOMEDSImpl_ScalarVariable
  *  Purpose  : 
@@ -101,6 +104,8 @@ std::string SALOMEDSImpl_ScalarVariable::getStringValue() const
  */
 //============================================================================
 std::string SALOMEDSImpl_ScalarVariable::Save() const{
+  Kernel_Utils::Localizer loc;
+
   char buffer[255];
   switch(Type())
     {
@@ -117,7 +122,7 @@ std::string SALOMEDSImpl_ScalarVariable::Save() const{
       }
     case SALOMEDSImpl_GenericVariable::STRING_VAR:
       {
-        sprintf(buffer, "\"%s\"", myStrValue.c_str());
+        sprintf(buffer, "%s", myStrValue.c_str());
         break;
       }
     default:break;
@@ -132,6 +137,8 @@ std::string SALOMEDSImpl_ScalarVariable::Save() const{
 //============================================================================
 std::string SALOMEDSImpl_ScalarVariable::SaveToScript() const
 {
+  Kernel_Utils::Localizer loc;
+
   char buffer[255];
   switch(Type())
     {
@@ -147,10 +154,7 @@ std::string SALOMEDSImpl_ScalarVariable::SaveToScript() const
       }
     case SALOMEDSImpl_GenericVariable::BOOLEAN_VAR:
       {
-        if((bool)myValue)
-          sprintf(buffer, "%s", "True");
-        else
-          sprintf(buffer, "%s", "False");
+       sprintf(buffer, "%s", ((bool)myValue) ? "True" : "False");
         break;
       }
     case SALOMEDSImpl_GenericVariable::STRING_VAR:
@@ -181,6 +185,23 @@ std::string SALOMEDSImpl_ScalarVariable::SaveType() const{
 //============================================================================
 void SALOMEDSImpl_ScalarVariable::Load(const std::string& theStrValue)
 {
-  double aValue = atof(theStrValue.c_str());
-  setValue(aValue);
+  Kernel_Utils::Localizer loc;
+
+  std::string strCopy = theStrValue;
+  if ( Type() == SALOMEDSImpl_GenericVariable::STRING_VAR ) {
+#ifdef OLDSTUDY_COMPATIBILITY
+    if (strCopy.size() > 1 && strCopy[0] == '\"' && strCopy[strCopy.size()-1] == '\"')
+      strCopy = strCopy.substr(1, strCopy.size()-2);
+#endif // OLDSTUDY_COMPATIBILITY
+    setStringValue( strCopy );
+  }
+  else {
+#ifdef OLDSTUDY_COMPATIBILITY
+    int dotpos = strCopy.find(',');
+    if (dotpos != std::string::npos)
+      strCopy.replace(dotpos, 1, ".");
+#endif // OLDSTUDY_COMPATIBILITY
+    double aValue = atof(strCopy.c_str());
+    setValue(aValue);
+  }
 }