Преглед изворни кода

Moved sprintf() calls to Print.cpp

Benoît Blanchon пре 11 година
родитељ
комит
2222714d68
3 измењених фајлова са 27 додато и 12 уклоњено
  1. 3 11
      JsonGenerator/JsonValue.cpp
  2. 3 0
      JsonGenerator/Print.h
  3. 21 1
      JsonGeneratorTests/Print.cpp

+ 3 - 11
JsonGenerator/JsonValue.cpp

@@ -4,8 +4,6 @@
  */
 
 #include "JsonValue.h"
-#include <cstdio>
-#include <cstring>
 
 size_t JsonValue::printBoolTo(Print& p) const
 {
@@ -14,23 +12,17 @@ size_t JsonValue::printBoolTo(Print& p) const
 
 size_t JsonValue::printDoubleTo(Print& p) const
 {
-    char tmp[32];
-    sprintf(tmp, "%.17lg", content.asDouble);
-    return p.write(tmp);
+    return p.print(content.asDouble);
 }
 
 size_t JsonValue::printFloatTo(Print& p) const
 {
-    char tmp[16];
-    sprintf(tmp, "%.9g", content.asFloat);
-    return p.write(tmp);
+    return p.print(content.asFloat);
 }
 
 size_t JsonValue::printLongTo(Print& p) const
 {
-    char tmp[32];
-    sprintf(tmp, "%ld", content.asLong);
-    return p.write(tmp);
+    return p.print(content.asLong);
 }
 
 size_t JsonValue::printPrintableTo(Print& p) const

+ 3 - 0
JsonGenerator/Print.h

@@ -9,6 +9,7 @@
 
 typedef unsigned char uint8_t;
 
+// This class reproduces Arduino's Print
 class Print
 {
 public:
@@ -16,6 +17,8 @@ public:
     virtual size_t write(uint8_t c) = 0;
 
     size_t write(const char* s);
+    size_t print(double, int = 2);
+    size_t print(long);
 };
 
 #else

+ 21 - 1
JsonGeneratorTests/Print.cpp

@@ -3,7 +3,11 @@
  * Benoit Blanchon 2014 - MIT License
  */
 
+#ifndef ARDUINO
+
 #include "Print.h"
+#include <cstdio>
+//#include <cstring>
 
 size_t Print::write(const char* s)
 {
@@ -13,4 +17,20 @@ size_t Print::write(const char* s)
         n += write(*s++);
     }
     return n;
-}
+}
+
+size_t Print::print(double value, int digits)
+{
+    char tmp[32];
+    sprintf(tmp, "%.*lg", digits, value);
+    return write(tmp);
+}
+
+size_t Print::print(long value)
+{
+    char tmp[32];
+    sprintf(tmp, "%ld", value);
+    return write(tmp);
+}
+
+#endif