aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/utils/SkJSONWriter.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-08-10 10:23:25 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-10 15:42:25 +0000
commit71a1889a1432715e515e000f1f4ef277e90e9ae1 (patch)
tree5965dc540193f8e9d6add43928a0985eb24bb389 /src/utils/SkJSONWriter.cpp
parent47238c79c4dd61c8770f45fc36d0cdbaea00b3e2 (diff)
Revert "Revert "GrContext::dump that produces JSON formatted output""
This reverts commit 0f450acd76fd58a2f7464f99869ed6afbfac303c. Bug: skia: Change-Id: I97428fbbc6d82bf8b186ec5fdbf1a939c00e4126 Reviewed-on: https://skia-review.googlesource.com/32726 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/utils/SkJSONWriter.cpp')
-rw-r--r--src/utils/SkJSONWriter.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/utils/SkJSONWriter.cpp b/src/utils/SkJSONWriter.cpp
new file mode 100644
index 0000000000..3b92aa4576
--- /dev/null
+++ b/src/utils/SkJSONWriter.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+// Make sure that the PRI format string macros are defined
+#define __STDC_FORMAT_MACROS
+#include <inttypes.h>
+#include <stdarg.h>
+
+#include "SkJSONWriter.h"
+
+void SkJSONWriter::appendS64(int64_t value) {
+ this->beginValue();
+ this->appendf("%" PRId64, value);
+}
+
+void SkJSONWriter::appendU64(uint64_t value) {
+ this->beginValue();
+ this->appendf("%" PRIu64, value);
+}
+
+void SkJSONWriter::appendHexU64(uint64_t value) {
+ this->beginValue();
+ this->appendf("\"0x%" PRIx64 "\"", value);
+}
+
+void SkJSONWriter::appendf(const char* fmt, ...) {
+ const int kBufferSize = 1024;
+ char buffer[kBufferSize];
+ va_list argp;
+ va_start(argp, fmt);
+#ifdef SK_BUILD_FOR_WIN
+ int length = _vsnprintf_s(buffer, kBufferSize, _TRUNCATE, fmt, argp);
+#else
+ int length = vsnprintf(buffer, kBufferSize, fmt, argp);
+#endif
+ SkASSERT(length >= 0 && length < kBufferSize);
+ va_end(argp);
+ this->write(buffer, length);
+}