17 stream << std::boolalpha << value << std::noboolalpha;
22 if (std::isnan(value))
26 else if (std::isinf(value))
34 double intPart = 1e16;
35 const double fractPart = std::modf(value, &intPart);
37 if (fractPart == 0.0 && intPart > -1e16 && intPart < 1e16)
39 stream << std::fixed << std::setprecision(1) << value << std::defaultfloat;
43 stream << std::setprecision(15) << value << std::defaultfloat;
50 static const std::array<char, 17> HEX = {
"0123456789abcdef"};
53 for (
char character : value)
60 stream.put(character);
83 if (
static_cast<uint8_t
>(character) <= 0x1F)
89 stream.put(HEX[
static_cast<uint8_t
>(
static_cast<uint8_t
>(character) >> 4U) & 0xFU]);
90 stream.put(HEX[
static_cast<uint8_t
>(character) & 0xFU]);
94 stream.put(character);
static void encodeFloatingPoint(std::ostream &stream, double value)
static void encodeNull(std::ostream &stream)
static void encodeBool(std::ostream &stream, bool value)
static void encodeString(std::ostream &stream, StringView value)