/* * 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 <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); }