You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ad...@apache.org on 2008/06/25 01:13:12 UTC

svn commit: r671378 - in /tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo: SDODataConverter.cpp SDODataConverter.h TypeImpl.cpp

Author: adrianocrestani
Date: Tue Jun 24 16:13:11 2008
New Revision: 671378

URL: http://svn.apache.org/viewvc?rev=671378&view=rev
Log:
-applying patch from TUSCANY-2439 on branch sdo-cpp-pre-2.1

Modified:
    tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.cpp
    tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.h
    tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/TypeImpl.cpp

Modified: tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.cpp
URL: http://svn.apache.org/viewvc/tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.cpp?rev=671378&r1=671377&r2=671378&view=diff
==============================================================================
--- tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.cpp (original)
+++ tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.cpp Tue Jun 24 16:13:11 2008
@@ -20,6 +20,7 @@
 #include <string.h>
 #include "commonj/sdo/SDODataConverter.h"
 #include "commonj/sdo/SDORuntimeException.h"
+#include "commonj/sdo/TypeImpl.h"
 
 
 // Data type conversion code is currently spread across this class and
@@ -640,12 +641,12 @@
 
             case DataTypeInfo::TDTfloat:
             {
-               sprintf(buffer , "%.3e", sourceValue.Float);
+               sprintf(buffer , "%.*g", SDODataConverter::precision, sourceValue.Float);
                break;
             }
             case DataTypeInfo::TDTdouble:
             {
-               sprintf(buffer , "%.3Le", sourceValue.Double);
+               sprintf(buffer , "%.*Lg", SDODataConverter::precision, sourceValue.Double);
                break;
             }
             case DataTypeInfo::TDTSDODate:
@@ -811,7 +812,7 @@
                char tmpstr[SDODataConverter::MAX_TRANSIENT_SIZE];
                unsigned int j = 0;
                
-               sprintf(tmpstr, "%.3e", sourceValue.Float);
+               sprintf(tmpstr, "%.*g", SDODataConverter::precision, sourceValue.Float);
                size_t tmplen = strlen(tmpstr);
                if ((tmplen > max_length) || (outptr == 0))
                {
@@ -829,7 +830,7 @@
                char tmpstr[SDODataConverter::MAX_TRANSIENT_SIZE];
                unsigned int j = 0;
                
-               sprintf(tmpstr, "%.3Le", sourceValue.Double);
+               sprintf(tmpstr, "%.*Lg", SDODataConverter::precision, sourceValue.Double);
                size_t tmplen = strlen(tmpstr);
                if ((tmplen > max_length) || (outptr == 0))
                {
@@ -1032,7 +1033,7 @@
                char tmpstr[SDODataConverter::MAX_TRANSIENT_SIZE];
                unsigned int j = 0;
                
-               sprintf(tmpstr, "%.3e", sourceValue.Float);
+               sprintf(tmpstr, "%.*g", SDODataConverter::precision, sourceValue.Float);
                size_t tmplen = strlen(tmpstr);
                if ((tmplen > max_length) || (outptr == 0))
                {
@@ -1050,7 +1051,7 @@
                char tmpstr[SDODataConverter::MAX_TRANSIENT_SIZE];
                unsigned int j = 0;
                
-               sprintf(tmpstr, "%.3Le", sourceValue.Double);
+               sprintf(tmpstr, "%.*Lg", SDODataConverter::precision, sourceValue.Double);
                size_t tmplen = strlen(tmpstr);
                if ((tmplen > max_length) || (outptr == 0))
                {
@@ -1126,5 +1127,6 @@
             }
          }
       }
+	  unsigned int SDODataConverter::precision = 6;
    }
 }

Modified: tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.h
URL: http://svn.apache.org/viewvc/tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.h?rev=671378&r1=671377&r2=671378&view=diff
==============================================================================
--- tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.h (original)
+++ tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/SDODataConverter.h Tue Jun 24 16:13:11 2008
@@ -18,7 +18,7 @@
 /* $Rev$ $Date$ */
 
 #ifndef _SDODATACONVERTER_H_
-#define _SDODATACONVERTOR_H_
+#define _SDODATACONVERTER_H_
 
 #include "commonj/sdo/DataTypeInfo.h"
 #include "commonj/sdo/SDODate.h"
@@ -69,6 +69,7 @@
                                                 const DataTypeInfo::TrueDataType& dataType,
                                                 wchar_t* outptr,
                                                 unsigned int max_length);
+			static unsigned int precision;
          private:
             // We sometimes need to convert primitive data types into an
             // equivalent string representation and for that we need a

Modified: tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/TypeImpl.cpp
URL: http://svn.apache.org/viewvc/tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/TypeImpl.cpp?rev=671378&r1=671377&r2=671378&view=diff
==============================================================================
--- tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/TypeImpl.cpp (original)
+++ tuscany/branches/sdo-cpp-pre2.1/runtime/core/src/commonj/sdo/TypeImpl.cpp Tue Jun 24 16:13:11 2008
@@ -22,6 +22,7 @@
 #include "commonj/sdo/Logger.h"
 
 #include "commonj/sdo/PropertyImpl.h"
+#include "commonj/sdo/SDODataConverter.h"
 #include "commonj/sdo/TypeImpl.h"
 
 #include <iostream>
@@ -2079,18 +2080,18 @@
                 wchar_t* fmt = new wchar_t[5];
                 fmt[0] = (wchar_t)'%';
                 fmt[1] = (wchar_t)'.';
-                fmt[2] = (wchar_t)'3';
-                fmt[3] = (wchar_t)'e';
+                fmt[2] = (wchar_t)'*';
+                fmt[3] = (wchar_t)'g';
                 fmt[4] = (wchar_t)0;
 #if defined(WIN32)  || defined (_WINDOWS)    
-                swprintf((wchar_t*)outval,fmt,*(long double*)value);
+                swprintf((wchar_t*)outval, fmt, SDODataConverter::precision, *(long double*)value);
 #else
 #if defined(NO_SWPRINTF)
                 {
                 int k;
                 char *tmpbuf = new char[50];
                 wchar_t *tmpw = (wchar_t*)outval;
-                sprintf(tmpbuf,"%.3Le",*(long double*)value);
+                sprintf(tmpbuf, "%.*Lg", SDODataConverter::precision, *(long double*)value);
                 for (k=0;k<strlen(tmpbuf);k++)
                 {
                     *(tmpw++) = (wchar_t)(tmpbuf[k]);
@@ -2100,7 +2101,7 @@
                 }
 
 #else
-                swprintf((wchar_t*)outval, wcslen((wchar_t*)outval), fmt, *(long double*)value);
+                swprintf((wchar_t*)outval, wcslen((wchar_t*)outval), fmt, SDODataConverter::precision, *(long double*)value);
 #endif
 #endif
                 delete fmt;
@@ -2114,18 +2115,18 @@
                 wchar_t* fmt = new wchar_t[5];
                 fmt[0] = (wchar_t)'%';
                 fmt[1] = (wchar_t)'.';
-                fmt[2] = (wchar_t)'3';
-                fmt[3] = (wchar_t)'e';
+                fmt[2] = (wchar_t)'*';
+                fmt[3] = (wchar_t)'g';
                 fmt[4] = (wchar_t)0;
 #if defined(WIN32)  || defined (_WINDOWS)
-                swprintf(outval,fmt,*(float*)value);
+                swprintf(outval, fmt, SDODataConverter::precision, *(float*)value);
 #else
 #if defined(NO_SWPRINTF)
                 {
                 int k;
                 char *tmpbuf = new char[50];
                 wchar_t *tmpw = (wchar_t*)outval;
-                sprintf(tmpbuf,"%.3e",*(float*)value);
+                sprintf(tmpbuf, "%.*g", SDODataConverter::precision, *(float*)value);
                 for (k=0;k<strlen(tmpbuf);k++)
                 {
                     *(tmpw++) = (wchar_t)(tmpbuf[k]);
@@ -2134,7 +2135,7 @@
                 delete tmpbuf;
                 }
 #else
-                swprintf(outval, wcslen(outval), fmt, *(float*)value);
+                swprintf(outval, wcslen(outval), fmt, SDODataConverter::precision, *(float*)value);
 #endif
 #endif
                 delete fmt;
@@ -2301,13 +2302,13 @@
         case DoubleType:
                 if (value == 0) return 0;
                 if (max < MAX_DOUBLE_SIZE) return 0;
-                sprintf(outval,"%.3Le",*(long double*)value);
+                sprintf(outval, "%.*Lg", SDODataConverter::precision, *(long double*)value);
                 return strlen(outval);
 
         case FloatType:
                 if (value == 0) return 0;
                 if (max < MAX_FLOAT_SIZE) return 0;
-                sprintf(outval,"%.3e",*(float*)value);
+                sprintf(outval, "%.*g", SDODataConverter::precision, *(float*)value);
                 return strlen(outval);
 
         case OtherTypes:
@@ -2485,7 +2486,7 @@
               if (max < MAX_DOUBLE_SIZE) return 0;
 
               char* tmpstr = new char[MAX_DOUBLE_SIZE + 1];
-              sprintf(tmpstr, "%.3Le", *(const long double*)value);
+              sprintf(tmpstr, "%.*Lg", SDODataConverter::precision, *(const long double*)value);
               outval = tmpstr;
               delete tmpstr;
               return outval.length();
@@ -2498,7 +2499,7 @@
         if (max < MAX_FLOAT_SIZE) return 0;
 
         char* tmpstr = new char[MAX_FLOAT_SIZE + 1];
-        sprintf(tmpstr, "%.3Le", *(const float*)value);
+        sprintf(tmpstr, "%.*g", SDODataConverter::precision, *(const float*)value);
         outval = tmpstr;
         delete tmpstr;
         return outval.length();
@@ -2591,7 +2592,7 @@
                 (*asstringbuf)[0] = 0;
                 return *asstringbuf;
             }
-            sprintf(*asstringbuf,"%.3Le",*(long double*)value);
+            sprintf(*asstringbuf, "%.*Lg", SDODataConverter::precision, *(long double*)value);
             return *asstringbuf;
 
         case FloatType:
@@ -2603,7 +2604,7 @@
                 (*asstringbuf)[0] = 0;
                 return *asstringbuf;
             }
-            sprintf(*asstringbuf,"%.3e", *(float*)value);
+            sprintf(*asstringbuf, "%.*g", SDODataConverter::precision, *(float*)value);
             return *asstringbuf;
 
         case LongType: