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"
}
char * Value_Impl::ToString() {
-// beginService( "Value_Impl::ToString" );
+ beginService( "Value_Impl::ToString" );
CORBA::Any anAny = *ToAny() ;
// cout << "Value_Impl::ToString " << _DataFlowNode->Name() << " "
// << _ParameterName << " " ;
}
}
}
- 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() {