]> Dogcows Code - chaz/yoink/blobdiff - src/stlplus/strings/string_float.cpp
cleanup stlplus files
[chaz/yoink] / src / stlplus / strings / string_float.cpp
index 0de056f25a192bcd9ea0f23e98c30fbae91bf64a..8ef2a94cf03fe534dfb15b764009fe470c100979 100644 (file)
@@ -1,96 +1,96 @@
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-//   Author:    Andy Rushton\r
-//   Copyright: (c) Southampton University 1999-2004\r
-//              (c) Andy Rushton           2004-2009\r
-//   License:   BSD License, see ../docs/license.html\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-#include "string_float.hpp"\r
-#include <stdlib.h>\r
-#include <ctype.h>\r
-#include <stdarg.h>\r
-#include <stdio.h>\r
-\r
-namespace stlplus\r
-{\r
-\r
-  // added as a local copy to break the dependency on the portability library\r
-  static std::string local_dformat(const char* format, ...) throw(std::invalid_argument)\r
-  {\r
-    std::string formatted;\r
-    va_list args;\r
-    va_start(args, format);\r
-#ifdef MSWINDOWS\r
-    int length = 0;\r
-    char* buffer = 0;\r
-    for(int buffer_length = 256; ; buffer_length*=2)\r
-    {\r
-      buffer = (char*)malloc(buffer_length);\r
-      if (!buffer) throw std::invalid_argument("string_float");\r
-      length = _vsnprintf(buffer, buffer_length-1, format, args);\r
-      if (length >= 0)\r
-      {\r
-        buffer[length] = 0;\r
-        formatted += std::string(buffer);\r
-        free(buffer);\r
-        break;\r
-      }\r
-      free(buffer);\r
-    }\r
-#else\r
-    char* buffer = 0;\r
-    int length = vasprintf(&buffer, format, args);\r
-    if (!buffer) throw std::invalid_argument("string_float");\r
-    if (length >= 0)\r
-      formatted += std::string(buffer);\r
-    free(buffer);\r
-#endif\r
-    va_end(args);\r
-    if (length < 0) throw std::invalid_argument("string_float");\r
-    return formatted;\r
-  }\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-  // floating-point types\r
-\r
-  std::string float_to_string(float f, real_display_t display, unsigned width, unsigned precision)\r
-    throw(std::invalid_argument)\r
-  {\r
-    return double_to_string((double)f, display, width, precision);\r
-  }\r
-\r
-  std::string double_to_string(double f, real_display_t display, unsigned width, unsigned precision)\r
-    throw(std::invalid_argument)\r
-  {\r
-    switch(display)\r
-    {\r
-    case display_fixed:\r
-      return local_dformat("%*.*f", width, precision, f);\r
-    case display_floating:\r
-      return local_dformat("%*.*e", width, precision, f);\r
-    case display_mixed:\r
-      return local_dformat("%*.*g", width, precision, f);\r
-    default:\r
-      throw std::invalid_argument("invalid radix display value");\r
-    }\r
-  }\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-  float string_to_float(const std::string& value)\r
-    throw(std::invalid_argument)\r
-  {\r
-    return (float)string_to_double(value);\r
-  }\r
-\r
-  double string_to_double(const std::string& value)\r
-    throw(std::invalid_argument)\r
-  {\r
-    // TODO - error checking\r
-    return strtod(value.c_str(), 0);\r
-  }\r
-\r
-  ////////////////////////////////////////////////////////////////////////////////\r
-\r
-} // end namespace stlplus\r
+////////////////////////////////////////////////////////////////////////////////
+
+//   Author:    Andy Rushton
+//   Copyright: (c) Southampton University 1999-2004
+//              (c) Andy Rushton           2004-2009
+//   License:   BSD License, see ../docs/license.html
+
+////////////////////////////////////////////////////////////////////////////////
+#include "string_float.hpp"
+#include <stdlib.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+namespace stlplus
+{
+
+  // added as a local copy to break the dependency on the portability library
+  static std::string local_dformat(const char* format, ...) throw(std::invalid_argument)
+  {
+    std::string formatted;
+    va_list args;
+    va_start(args, format);
+#ifdef MSWINDOWS
+    int length = 0;
+    char* buffer = 0;
+    for(int buffer_length = 256; ; buffer_length*=2)
+    {
+      buffer = (char*)malloc(buffer_length);
+      if (!buffer) throw std::invalid_argument("string_float");
+      length = _vsnprintf(buffer, buffer_length-1, format, args);
+      if (length >= 0)
+      {
+        buffer[length] = 0;
+        formatted += std::string(buffer);
+        free(buffer);
+        break;
+      }
+      free(buffer);
+    }
+#else
+    char* buffer = 0;
+    int length = vasprintf(&buffer, format, args);
+    if (!buffer) throw std::invalid_argument("string_float");
+    if (length >= 0)
+      formatted += std::string(buffer);
+    free(buffer);
+#endif
+    va_end(args);
+    if (length < 0) throw std::invalid_argument("string_float");
+    return formatted;
+  }
+
+  ////////////////////////////////////////////////////////////////////////////////
+  // floating-point types
+
+  std::string float_to_string(float f, real_display_t display, unsigned width, unsigned precision)
+    throw(std::invalid_argument)
+  {
+    return double_to_string((double)f, display, width, precision);
+  }
+
+  std::string double_to_string(double f, real_display_t display, unsigned width, unsigned precision)
+    throw(std::invalid_argument)
+  {
+    switch(display)
+    {
+    case display_fixed:
+      return local_dformat("%*.*f", width, precision, f);
+    case display_floating:
+      return local_dformat("%*.*e", width, precision, f);
+    case display_mixed:
+      return local_dformat("%*.*g", width, precision, f);
+    default:
+      throw std::invalid_argument("invalid radix display value");
+    }
+  }
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+  float string_to_float(const std::string& value)
+    throw(std::invalid_argument)
+  {
+    return (float)string_to_double(value);
+  }
+
+  double string_to_double(const std::string& value)
+    throw(std::invalid_argument)
+  {
+    // TODO - error checking
+    return strtod(value.c_str(), 0);
+  }
+
+  ////////////////////////////////////////////////////////////////////////////////
+
+} // end namespace stlplus
This page took 0.024135 seconds and 4 git commands to generate.