Browse Source

Adding ATOMIC modification blocks

Josh Engebretson 8 years ago
parent
commit
55bcbf4618
1 changed files with 36 additions and 1 deletions
  1. 36 1
      Source/Atomic/Core/StringUtils.cpp

+ 36 - 1
Source/Atomic/Core/StringUtils.cpp

@@ -28,9 +28,10 @@
 
 #include "../DebugNew.h"
 
+// ATOMIC BEGIN
 
 // The built-in strtod() function uses the current locale for parsing strings. On certain
-// locales (German, Swedish, ...) a comma is used as decimal separator. For portable XMLs,
+// locales (German, Swedish, ...) a comma is used as decimal separator. For portable XML,
 // we need to parse floating point values the same way on all platforms no matter what
 // locale is set. The strtod_c_locale() is a workaround using the "C" locale explicitly,
 // which uses a dot as decimal separator.
@@ -74,6 +75,7 @@ double strtod_c_locale(const char* nptr, char** endptr)
 
 #endif // _WIN32
 
+// ATOMIC END
 
 namespace Atomic
 {
@@ -193,7 +195,9 @@ float ToFloat(const char* source)
     if (!source)
         return 0;
 
+    // ATOMIC BEGIN
     return (float)strtod_c_locale(source, 0);
+    // ATOMIC END
 }
 
 double ToDouble(const String& source)
@@ -206,7 +210,9 @@ double ToDouble(const char* source)
     if (!source)
         return 0;
 
+    // ATOMIC BEGIN
     return strtod_c_locale(source, 0);
+    // ATOMIC END
 }
 
 Color ToColor(const String& source)
@@ -223,11 +229,14 @@ Color ToColor(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.r_ = (float)strtod_c_locale(ptr, &ptr);
     ret.g_ = (float)strtod_c_locale(ptr, &ptr);
     ret.b_ = (float)strtod_c_locale(ptr, &ptr);
     if (elements > 3)
         ret.a_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }
@@ -288,10 +297,13 @@ Rect ToRect(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.min_.x_ = (float)strtod_c_locale(ptr, &ptr);
     ret.min_.y_ = (float)strtod_c_locale(ptr, &ptr);
     ret.max_.x_ = (float)strtod_c_locale(ptr, &ptr);
     ret.max_.y_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }
@@ -312,9 +324,12 @@ Quaternion ToQuaternion(const char* source)
     {
         // 3 coords specified: conversion from Euler angles
         float x, y, z;
+
+        // ATOMIC BEGIN
         x = (float)strtod_c_locale(ptr, &ptr);
         y = (float)strtod_c_locale(ptr, &ptr);
         z = (float)strtod_c_locale(ptr, &ptr);
+        // ATOMIC END
 
         return Quaternion(x, y, z);
     }
@@ -322,10 +337,13 @@ Quaternion ToQuaternion(const char* source)
     {
         // 4 coords specified: full quaternion
         Quaternion ret;
+
+        // ATOMIC BEGIN
         ret.w_ = (float)strtod_c_locale(ptr, &ptr);
         ret.x_ = (float)strtod_c_locale(ptr, &ptr);
         ret.y_ = (float)strtod_c_locale(ptr, &ptr);
         ret.z_ = (float)strtod_c_locale(ptr, &ptr);
+        // ATOMIC END
 
         return ret;
     }
@@ -345,8 +363,11 @@ Vector2 ToVector2(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.x_ = (float)strtod_c_locale(ptr, &ptr);
     ret.y_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }
@@ -365,9 +386,12 @@ Vector3 ToVector3(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.x_ = (float)strtod_c_locale(ptr, &ptr);
     ret.y_ = (float)strtod_c_locale(ptr, &ptr);
     ret.z_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }
@@ -384,6 +408,7 @@ Vector4 ToVector4(const char* source, bool allowMissingCoords)
     unsigned elements = CountElements(source, ' ');
     char* ptr = (char*)source;
 
+    // ATOMIC BEGIN
     if (!allowMissingCoords)
     {
         if (elements < 4)
@@ -409,6 +434,7 @@ Vector4 ToVector4(const char* source, bool allowMissingCoords)
 
         return ret;
     }
+    // ATOMIC END
 }
 
 Variant ToVectorVariant(const String& source)
@@ -473,6 +499,8 @@ Matrix3 ToMatrix3(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.m00_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m01_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m02_ = (float)strtod_c_locale(ptr, &ptr);
@@ -482,6 +510,7 @@ Matrix3 ToMatrix3(const char* source)
     ret.m20_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m21_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m22_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }
@@ -500,6 +529,8 @@ Matrix3x4 ToMatrix3x4(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.m00_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m01_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m02_ = (float)strtod_c_locale(ptr, &ptr);
@@ -512,6 +543,7 @@ Matrix3x4 ToMatrix3x4(const char* source)
     ret.m21_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m22_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m23_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }
@@ -530,6 +562,8 @@ Matrix4 ToMatrix4(const char* source)
         return ret;
 
     char* ptr = (char*)source;
+
+    // ATOMIC BEGIN
     ret.m00_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m01_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m02_ = (float)strtod_c_locale(ptr, &ptr);
@@ -546,6 +580,7 @@ Matrix4 ToMatrix4(const char* source)
     ret.m31_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m32_ = (float)strtod_c_locale(ptr, &ptr);
     ret.m33_ = (float)strtod_c_locale(ptr, &ptr);
+    // ATOMIC END
 
     return ret;
 }