Просмотр исходного кода

Added method appendFormatted()

Benoît Blanchon 11 лет назад
Родитель
Сommit
45dfdbd5e4

+ 1 - 1
JsonGeneratorTests/JsonObjectBase.cpp

@@ -12,7 +12,7 @@ void JsonObjectBase::writeObjectTo(ObjectContainer& obj, StringBuilder& sb)
         break;
 
     case JSON_NUMBER:
-        sb.append("%lg", obj.value.number);
+        sb.appendFormatted("%lg", obj.value.number);
         break;
 
     case JSON_BOOLEAN:

+ 14 - 5
JsonGeneratorTests/StringBuilder.cpp

@@ -1,14 +1,11 @@
 #include "StringBuilder.h"
 
 
-void StringBuilder::append(const char* format, ...)
+void StringBuilder::append(const char* s)
 {
     char* tail = buffer + length;
 
-    va_list args;
-    va_start(args, format);
-    vsnprintf(tail, capacity - length, format, args);
-    va_end(args);
+    strcpy(tail, s);
 
     length += strlen(tail);
 }
@@ -30,4 +27,16 @@ void StringBuilder::appendEscaped(const char* s)
     }
 
     buffer[length++] = '"';
+}
+
+void StringBuilder::appendFormatted(const char* format, ...)
+{
+    char* tail = buffer + length;
+
+    va_list args;
+    va_start(args, format);
+    vsnprintf(tail, capacity - length, format, args);
+    va_end(args);
+
+    length += strlen(tail);
 }

+ 2 - 1
JsonGeneratorTests/StringBuilder.h

@@ -17,8 +17,9 @@ public:
     {
     }
 
-    void append(const char* format, ...);
+    void append(const char* s);
     void appendEscaped(const char* s);
+    void appendFormatted(const char* format, ...);
 
 private:
     char* buffer;