Salome HOME
NRI : Merge from 1.2c.
[modules/superv.git] / src / Supervision / Value_Impl.cxx
index bd87bcb3841c99a988aff340868661aa155c4de4..1a226c1a288c563f196fcd62a6623ecc09672b16 100644 (file)
 using namespace std;
 #include <stdio.h>
 #include <fstream>
-#include <strstream>
+//#include <strstream>
+//#include <sstream>
 #include <string>
 
-#include "utilities.h"
+//#include "utilities.h"
 
 #include "Value_Impl.hxx"
 
@@ -190,7 +191,7 @@ CORBA::Any * Value_Impl::ToAny() {
 }
 
 char * Value_Impl::ToString() {
-//  beginService( "Value_Impl::ToString" );
+  beginService( "Value_Impl::ToString" );
   CORBA::Any anAny = *ToAny() ;
 //  cout << "Value_Impl::ToString " << _DataFlowNode->Name() << " "
 //       << _ParameterName << " " ;
@@ -235,49 +236,59 @@ char * Value_Impl::ToString() {
       }
     }
   }
-  char* retstr ;
+  ostringstream astr ;
+  const char * retstr ;
+  int startstr = 0 ;
   switch (anAny.type()->kind()) {
     case CORBA::tk_string: {
       anAny >>= retstr;
 //      MESSAGE( "ToString( string ) " << retstr );
       break ;
     }
-    case CORBA::tk_double: {
-      double d;
-      anAny >>= d;
-      retstr = new char[13];
-      snprintf(retstr, 13, "%lf", d);
-//      MESSAGE( "ToString( double ) " << retstr );
-      break ;
-    }
     case CORBA::tk_long: {
       long l;
       anAny >>= l;
-      retstr = new char[13];
-      snprintf(retstr, 13, "%ld", l);
-//      MESSAGE( "ToString( long ) " << retstr );
+      astr << l << ends ;
+      retstr = astr.str().c_str() ;
+//      retstr = new char[13];
+//      snprintf(retstr, 13, "%ld", l);
+//      MESSAGE( "ToString( long ) " << l << " " << retstr );
+      break ;
+    }
+    case CORBA::tk_double: {
+      double d;
+      anAny >>= d;
+      astr << setw(25) << setprecision(18) << d << ends ;
+      retstr = astr.str().c_str() ;
+//      retstr = new char[13];
+//      snprintf(retstr, 13, "%lf", d);
+      int i = 0 ;
+      while ( i < (int ) strlen( retstr ) && retstr[ i++ ] == ' ' ) {
+        startstr = i - 1 ;
+      }
+      MESSAGE( "ToString( double ) '" << d << "' '" << retstr << "' '" << &retstr[ startstr ] << "'");
       break ;
     }
     case CORBA::tk_objref: {
       CORBA::Object_ptr obj ;
       try {
         anAny >>= obj ;
-        retstr = _Orb->object_to_string(obj );
+        retstr = _Orb->object_to_string( obj );
 //        MESSAGE( "ToString( object ) " << retstr );
       }
       catch ( ... ) {
-        retstr = "Unknown CORBA::Any Type" ;
+        retstr = "object_to_string catched " ;
       }
       break ;
     }
     default: {
       retstr = "Unknown CORBA::Any Type" ;
-//      MESSAGE( retstr );
+      MESSAGE( retstr );
       break ;
     }
   }
-//  endService( "Value_Impl::ToString" );
-  return CORBA::string_dup( retstr ) ;
+  endService( "Value_Impl::ToString" );
+  return CORBA::string_dup( &retstr[ startstr ] ) ;
 }
 
 bool Value_Impl::IsIOR() {