]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Kernel_Utils::Localizer - common interface to solve problems with non-"C" locales
authorouv <ouv@opencascade.com>
Mon, 2 Nov 2009 12:24:42 +0000 (12:24 +0000)
committerouv <ouv@opencascade.com>
Mon, 2 Nov 2009 12:24:42 +0000 (12:24 +0000)
src/GEOMImpl/GEOMImpl_SketcherDriver.cxx
src/IGESExport/IGESExport.cxx
src/IGESImport/IGESImport.cxx
src/STEPExport/STEPExport.cxx
src/STEPImport/STEPImport.cxx

index 8d477f541ec37577206c59f3cfde79a58e6fcdd1..cf2407d3f8fa792b0739e941d7dfe1ba726d4e42 100644 (file)
@@ -28,6 +28,8 @@
 
 #include <GEOMImpl_IMeasureOperations.hxx>
 
+#include <Basics_Utils.hxx>
+
 // OCCT Includes
 #include <BRepBuilderAPI_Transform.hxx>
 #include <BRep_Tool.hxx>
@@ -79,15 +81,11 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const
   TopoDS_Shape aShape;
 
   // Set "C" numeric locale to save numbers correctly
-  std::string aCurLocale = setlocale(LC_NUMERIC, 0);
-  setlocale(LC_NUMERIC, "C");
+  Kernel_Utils::Localizer loc;
 
   // create sketcher
   Sketcher_Profile aProfile (aCommand.ToCString());
 
-  // Return previous locale
-  setlocale(LC_NUMERIC, aCurLocale.data());
-
   if (!aProfile.IsDone()) {
     Standard_ConstructionError::Raise("Sketcher creation failed");
   }
index d1ccdbf1ed99dc6889fe71ef68e2a410db3a6591..72e6cb2fa51e9bf8ca8f1c871ec0cbcb1f804df1 100644 (file)
@@ -26,6 +26,8 @@
 //
 #include "utilities.h"
 
+#include <Basics_Utils.hxx>
+
 #include <IGESControl_Controller.hxx>
 #include <IGESControl_Writer.hxx>
 #include <Interface_Static.hxx>
@@ -74,8 +76,7 @@ IGESEXPORT_EXPORT
         aBrepMode = 1;
 
       // Set "C" numeric locale to save numbers correctly
-      std::string aCurLocale = setlocale(LC_NUMERIC, 0);
-      setlocale(LC_NUMERIC, "C");
+      Kernel_Utils::Localizer loc;
 
       // initialize writer
       IGESControl_Controller::Init();
@@ -90,7 +91,6 @@ IGESEXPORT_EXPORT
       bool ok = ICW.Write( theFileName.ToCString() );
       
       // Return previous locale
-      setlocale(LC_NUMERIC, aCurLocale.data());
       if ( ok )
         return 1;
     }
index 3b272ac56e47b0fed51a0abcda7fb3e41aadee4c..ec51293b04d1ea047d9a55bae99bfbf1067bef31 100644 (file)
@@ -26,6 +26,8 @@
 //
 #include "utilities.h"
 
+#include <Basics_Utils.hxx>
+
 #include <IFSelect_ReturnStatus.hxx>
 #include <IGESControl_Reader.hxx>
 #include <IGESData_IGESModel.hxx>
@@ -72,8 +74,7 @@ IGESIMPORT_EXPORT
                       const TDF_Label&)
   {
     // Set "C" numeric locale to save numbers correctly
-    std::string aCurLocale = setlocale(LC_NUMERIC, 0);
-    setlocale(LC_NUMERIC, "C");
+    Kernel_Utils::Localizer loc;
 
     IGESControl_Reader aReader;
     TopoDS_Shape aResShape;
@@ -103,8 +104,6 @@ IGESIMPORT_EXPORT
          TopoDS_Vertex V;
          B.MakeVertex(V,P,1.e-7);
          aResShape = V;
-          // Return previous locale before return from import
-          setlocale(LC_NUMERIC, aCurLocale.data());
          return aResShape;
        }
        if( theFormatName == "IGES_SCALE" ) {
@@ -155,8 +154,6 @@ IGESIMPORT_EXPORT
       theError = aFail->GetMessageString();
       aResShape.Nullify();
     }
-    // Return previous locale
-    setlocale(LC_NUMERIC, aCurLocale.data());
     return aResShape;
   }
 }
index eaff4f68e664c4e061bdf295f49cd2d9f6e39038..6c2e9fac17bcf2a28fd61f03941d0afb77812705 100644 (file)
@@ -26,6 +26,8 @@
 //
 #include "utilities.h"
 
+#include <Basics_Utils.hxx>
+
 #include <IFSelect_ReturnStatus.hxx>
 
 #include <STEPControl_Writer.hxx>
@@ -68,8 +70,7 @@ STEPEXPORT_EXPORT
   try 
     {
       // Set "C" numeric locale to save numbers correctly
-      std::string aCurLocale = setlocale(LC_NUMERIC, 0);
-      setlocale(LC_NUMERIC, "C");
+      Kernel_Utils::Localizer loc;
 
       IFSelect_ReturnStatus status ;
       //VRV: OCC 4.0 migration
@@ -83,7 +84,6 @@ STEPEXPORT_EXPORT
          status = aWriter.Write( theFileName.ToCString() );
 
       // Return previous locale
-      setlocale(LC_NUMERIC, aCurLocale.data());
       if ( status == IFSelect_RetDone ) 
        return 1;
     }
index dc91b95ebd252c59e577fb8a84c95c9fed85a688..e4786f2aa4b701d077277ec13cc8c046e483b8f3 100644 (file)
@@ -26,6 +26,8 @@
 //
 #include "utilities.h"
 
+#include <Basics_Utils.hxx>
+
 #include <BRep_Builder.hxx>
 
 #include <IFSelect_ReturnStatus.hxx>
@@ -75,8 +77,7 @@ STEPIMPORT_EXPORT
   {
     MESSAGE("Import STEP model from file " << theFileName.ToCString());
     // Set "C" numeric locale to save numbers correctly
-    std::string aCurLocale = setlocale(LC_NUMERIC, 0);
-    setlocale(LC_NUMERIC, "C");
+    Kernel_Utils::Localizer loc;
     TopoDS_Shape aResShape;
     //VRV: OCC 4.0 migration
     STEPControl_Reader aReader;
@@ -156,7 +157,6 @@ STEPIMPORT_EXPORT
       aResShape.Nullify();
     }
     // Return previous locale
-    setlocale(LC_NUMERIC, aCurLocale.data());
     return aResShape;
   }
 }