#include "src/utils/SkJSON.h"
#include "include/core/SkData.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkStream.h"
#include "include/core/SkString.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkMalloc.h"
#include "include/private/base/SkTo.h"
#include "include/utils/SkParse.h"
#include "src/base/SkArenaAlloc.h"
#include "src/base/SkUTF.h"
#include <cmath>
#include <cstdint>
#include <cstdlib>
#include <limits>
#include <new>
#include <tuple>
#include <vector>
namespace skjson {
static_assert …;
static_assert …;
static constexpr size_t kRecAlign = …;
void Value::init_tagged(Tag t) { … }
void Value::init_tagged_pointer(Tag t, void* p) { … }
NullValue::NullValue() { … }
BoolValue::BoolValue(bool b) { … }
NumberValue::NumberValue(int32_t i) { … }
NumberValue::NumberValue(float f) { … }
template <typename T, size_t extra_alloc_size = 0>
static void* MakeVector(size_t vec_size, const void* src, size_t src_size, SkArenaAlloc& alloc) { … }
template <typename T, size_t extra_alloc_size = 0>
static void* MakeVector(size_t vec_size, const void* src, SkArenaAlloc& alloc) { … }
ArrayValue::ArrayValue(const Value* src, size_t size, SkArenaAlloc& alloc) { … }
namespace {
class FastString final : public Value { … };
}
StringValue::StringValue(const char* src, SkArenaAlloc& alloc)
: … { … }
StringValue::StringValue(const char* src, size_t size, SkArenaAlloc& alloc) { … }
ObjectValue::ObjectValue(const Member* src, size_t size, SkArenaAlloc& alloc) { … }
static int inline_strcmp(const char a[], const char b[]) { … }
const Member* ObjectValue::find(const char* key) const { … }
Value& ObjectValue::writable(const char* key, SkArenaAlloc& alloc) const { … }
namespace {
static constexpr uint8_t g_token_flags[256] = …;
static inline bool is_ws(char c) { … }
static inline bool is_eostring(char c) { … }
static inline bool is_digit(char c) { … }
static inline bool is_numeric(char c) { … }
static inline bool is_eoscope(char c) { … }
static inline const char* skip_ws(const char* p) { … }
static inline float pow10(int32_t exp) { … }
class DOMParser { … };
void Write(const Value& v, SkWStream* stream) { … }
}
SkString Value::toString() const { … }
static constexpr size_t kMinChunkSize = …;
DOM::DOM(const char* data, size_t size)
: … { … }
void DOM::write(SkWStream* stream) const { … }
}