svn commit: trunk/uClibc++/include

gkajmowi at uclibc.org gkajmowi at uclibc.org
Sun Jun 11 20:51:24 UTC 2006


Author: gkajmowi
Date: 2006-06-11 13:51:22 -0700 (Sun, 11 Jun 2006)
New Revision: 15362

Log:
Convert ostream code to more accurately reflect specifications



Modified:
   trunk/uClibc++/include/ostream_helpers


Changeset:
Modified: trunk/uClibc++/include/ostream_helpers
===================================================================
--- trunk/uClibc++/include/ostream_helpers	2006-06-11 18:04:23 UTC (rev 15361)
+++ trunk/uClibc++/include/ostream_helpers	2006-06-11 20:51:22 UTC (rev 15362)
@@ -18,6 +18,7 @@
 */
 
 #include <basic_definitions>
+#include <cstddef>
 #include <ios>
 #include <cctype>
 #include <string>
@@ -245,14 +246,14 @@
 			int length;
 			if(stream.flags() & ios_base::scientific){
 				if(stream.flags() & ios_base::uppercase){
-					length = snprintf(buffer, 32, "%*E", static_cast<unsigned int>(stream.width()), f);
+					length = snprintf(buffer, 32, "%*.*E", static_cast<int>(stream.width()),static_cast<int>(stream.precision()), f);
 				}else{
-					length = snprintf(buffer, 32, "%*e", static_cast<unsigned int>(stream.width()), f);
+					length = snprintf(buffer, 32, "%*.*e", static_cast<int>(stream.width()),static_cast<int>(stream.precision()), f);
 				}
 			} else if(stream.flags() & ios_base::fixed){
-				length = snprintf(buffer, 32, "%*f", static_cast<unsigned int>(stream.width()), f);
+				length = snprintf(buffer, 32, "%*.*f",static_cast<int>(stream.width()),static_cast<int>(stream.precision()), f);
 			} else {
-				length = snprintf(buffer, 32, "%*g", static_cast<unsigned int>(stream.width()), f);
+				length = snprintf(buffer, 32, "%*.*g",static_cast<int>(stream.width()),static_cast<int>(stream.precision()), f);
 			}
 			stream.write(buffer, length);
 			if(stream.flags() & ios_base::unitbuf){
@@ -269,14 +270,14 @@
 			int length;
 			if(stream.flags() & ios_base::scientific){
 				if(stream.flags() & ios_base::uppercase){
-					length = snprintf(buffer, 32, "%*LE", static_cast<unsigned int>(stream.width()), f);
+					length = snprintf(buffer, 32, "%*.*LE", static_cast<int>(stream.width()), static_cast<int>(stream.precision()), f);
 				}else{
-					length = snprintf(buffer, 32, "%*Le", static_cast<unsigned int>(stream.width()), f);
+					length = snprintf(buffer, 32, "%*.*Le", static_cast<int>(stream.width()), static_cast<int>(stream.precision()), f);
 				}
 			} else if(stream.flags() & ios_base::fixed){
-				length = snprintf(buffer, 32, "%*Lf", static_cast<unsigned int>(stream.width()), f);
+				length = snprintf(buffer, 32, "%*.*Lf", static_cast<int>(stream.width()), static_cast<int>(stream.precision()), f);
 			} else {
-				length = snprintf(buffer, 32, "%*Lg", static_cast<unsigned int>(stream.width()), f);
+				length = snprintf(buffer, 32, "%*.*Lg", static_cast<int>(stream.width()), static_cast<int>(stream.precision()), f);
 			}
 			stream.write(buffer, length);
 			if(stream.flags() & ios_base::unitbuf){
@@ -433,17 +434,17 @@
 		static void printout(basic_ostream<wchar_t, traits >& stream, const double f)
 		{
 			wchar_t buffer[32];
-			wchar_t format_string[20];
+			wchar_t format_string[32];
 			if(stream.flags() & ios_base::scientific){
 				if(stream.flags() & ios_base::uppercase){
-					swprintf(format_string, 20, L"%%%uE", static_cast<unsigned int>(stream.width()));
+					swprintf(format_string, 32, L"%%%u.%uE", static_cast<int>(stream.width()), static_cast<unsigned int>(stream.precision()),);
 				}else{
-					swprintf(format_string, 20, L"%%%ue", static_cast<unsigned int>(stream.width()));
+					swprintf(format_string, 32, L"%%%u.%ue", static_cast<int>(stream.width()), static_cast<unsigned int>(stream.precision()),);
 				}
 			} else if(stream.flags() & ios_base::fixed){
-				swprintf(format_string, 20, L"%%%uf", static_cast<unsigned int>(stream.width()));
+				swprintf(format_string, 32, L"%%%u.%uf", static_cast<int>(stream.width()), static_cast<unsigned int>(stream.precision()),);
 			} else {
-				swprintf(format_string, 20, L"%%%ug", static_cast<unsigned int>(stream.width()));
+				swprintf(format_string, 32, L"%%%u.%ug", static_cast<int>(stream.width()), static_cast<unsigned int>(stream.precision()));
 			}
 			stream.write(buffer, swprintf(buffer, 32, format_string, f) );
 			if(stream.flags() & ios_base::unitbuf){
@@ -457,17 +458,17 @@
 		static void printout(basic_ostream<wchar_t, traits >& stream, const long double f)
 		{
 			wchar_t buffer[32];
-			wchar_t format_string[20];
+			wchar_t format_string[32];
 			if(stream.flags() & ios_base::scientific){
 				if(stream.flags() & ios_base::uppercase){
-					swprintf(format_string, 20, L"%%%uLE", static_cast<unsigned int>(stream.width()));
+					swprintf(format_string, 32, L"%%%u.%uLE", static_cast<unsigned int>(stream.width()), static_cast<unsigned int>(stream.precision()));
 				}else{
-					swprintf(format_string, 20, L"%%%uLe", static_cast<unsigned int>(stream.width()));
+					swprintf(format_string, 32, L"%%%u.%uLe", static_cast<unsigned int>(stream.width()), static_cast<unsigned int>(stream.precision()));
 				}
 			} else if(stream.flags() & ios_base::fixed){
-				swprintf(format_string, 20, L"%%%uLf", static_cast<unsigned int>(stream.width()));
+				swprintf(format_string, 32, L"%%%u.%uLf", static_cast<unsigned int>(stream.width()), static_cast<unsigned int>(stream.precision()));
 			} else {
-				swprintf(format_string, 20, L"%%%uLg", static_cast<unsigned int>(stream.width()));
+				swprintf(format_string, 32, L"%%%u.%uLg", static_cast<unsigned int>(stream.width()), static_cast<unsigned int>(stream.precision()));
 			}
 			stream.write(buffer, swprintf(buffer, 32, format_string, f) );
 			if(stream.flags() & ios_base::unitbuf){




More information about the uClibc-cvs mailing list