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