From 45dfdbd5e438f3b5d9a87033b2ffb36bc189dfc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Blanchon?= Date: Wed, 25 Jun 2014 13:50:28 +0200 Subject: [PATCH] Added method appendFormatted() --- JsonGeneratorTests/JsonObjectBase.cpp | 2 +- JsonGeneratorTests/StringBuilder.cpp | 19 ++++++++++++++----- JsonGeneratorTests/StringBuilder.h | 3 ++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/JsonGeneratorTests/JsonObjectBase.cpp b/JsonGeneratorTests/JsonObjectBase.cpp index 98a26dbc..7387a496 100644 --- a/JsonGeneratorTests/JsonObjectBase.cpp +++ b/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: diff --git a/JsonGeneratorTests/StringBuilder.cpp b/JsonGeneratorTests/StringBuilder.cpp index 9698ce32..5da8a7ee 100644 --- a/JsonGeneratorTests/StringBuilder.cpp +++ b/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); } \ No newline at end of file diff --git a/JsonGeneratorTests/StringBuilder.h b/JsonGeneratorTests/StringBuilder.h index 78e4c56c..08a7facf 100644 --- a/JsonGeneratorTests/StringBuilder.h +++ b/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;