aboutsummaryrefslogtreecommitdiffstats
path: root/stringprintf.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-06 03:52:48 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-18 11:25:42 +0900
commit776ca3085c44e6570813270df75278849c37d400 (patch)
tree6dc3f2d468cfd860347f2f9d519f49c2a38d4c64 /stringprintf.cc
parenta3caa8166baeb348f817eb1b4fa2e81672b3d77f (diff)
downloadandroid_build_kati-776ca3085c44e6570813270df75278849c37d400.tar.gz
android_build_kati-776ca3085c44e6570813270df75278849c37d400.tar.bz2
android_build_kati-776ca3085c44e6570813270df75278849c37d400.zip
[C++] The first commit for C++ version
16 tests out of 169 are passing.
Diffstat (limited to 'stringprintf.cc')
-rw-r--r--stringprintf.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/stringprintf.cc b/stringprintf.cc
new file mode 100644
index 0000000..d4fe74f
--- /dev/null
+++ b/stringprintf.cc
@@ -0,0 +1,22 @@
+#include "stringprintf.h"
+
+#include <assert.h>
+#include <stdarg.h>
+
+string StringPrintf(const char* format, ...) {
+ string str;
+ str.resize(128);
+ for (int i = 0; i < 2; i++) {
+ va_list args;
+ va_start(args, format);
+ int ret = vsnprintf(&str[0], str.size(), format, args);
+ va_end(args);
+ assert(ret >= 0);
+ if (static_cast<size_t>(ret) < str.size()) {
+ str.resize(ret);
+ return str;
+ }
+ str.resize(ret + 1);
+ }
+ assert(false);
+}