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