| /* | |
| * 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 | |
| #ifndef __STDC_FORMAT_MACROS | |
| #define __STDC_FORMAT_MACROS | |
| #endif | |
| #include "src/utils/SkJSONWriter.h" | |
| #include <inttypes.h> | |
| #include <stdarg.h> | |
| #include <stdio.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); | |
| } |