1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci// Make sure that the PRI format string macros are defined 9cb93a386Sopenharmony_ci#ifndef __STDC_FORMAT_MACROS 10cb93a386Sopenharmony_ci#define __STDC_FORMAT_MACROS 11cb93a386Sopenharmony_ci#endif 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#include <inttypes.h> 14cb93a386Sopenharmony_ci#include <stdarg.h> 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci#include "src/utils/SkJSONWriter.h" 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_civoid SkJSONWriter::appendS64(int64_t value) { 19cb93a386Sopenharmony_ci this->beginValue(); 20cb93a386Sopenharmony_ci this->appendf("%" PRId64, value); 21cb93a386Sopenharmony_ci} 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_civoid SkJSONWriter::appendU64(uint64_t value) { 24cb93a386Sopenharmony_ci this->beginValue(); 25cb93a386Sopenharmony_ci this->appendf("%" PRIu64, value); 26cb93a386Sopenharmony_ci} 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_civoid SkJSONWriter::appendHexU64(uint64_t value) { 29cb93a386Sopenharmony_ci this->beginValue(); 30cb93a386Sopenharmony_ci this->appendf("\"0x%" PRIx64 "\"", value); 31cb93a386Sopenharmony_ci} 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_civoid SkJSONWriter::appendf(const char* fmt, ...) { 34cb93a386Sopenharmony_ci const int kBufferSize = 1024; 35cb93a386Sopenharmony_ci char buffer[kBufferSize]; 36cb93a386Sopenharmony_ci va_list argp; 37cb93a386Sopenharmony_ci va_start(argp, fmt); 38cb93a386Sopenharmony_ci#ifdef SK_BUILD_FOR_WIN 39cb93a386Sopenharmony_ci int length = _vsnprintf_s(buffer, kBufferSize, _TRUNCATE, fmt, argp); 40cb93a386Sopenharmony_ci#else 41cb93a386Sopenharmony_ci int length = vsnprintf(buffer, kBufferSize, fmt, argp); 42cb93a386Sopenharmony_ci#endif 43cb93a386Sopenharmony_ci SkASSERT(length >= 0 && length < kBufferSize); 44cb93a386Sopenharmony_ci va_end(argp); 45cb93a386Sopenharmony_ci this->write(buffer, length); 46cb93a386Sopenharmony_ci} 47