203 virtual
void write_null() override;
205 virtual
void write_object_begin() override;
207 virtual
void write_object_end() override;
209 virtual
void write_object_key(
std::string_view key) override;
211 virtual
void write_object_delimiter() override;
213 virtual
void write_array_begin() override;
215 virtual
void write_array_end() override;
217 virtual
void write_array_delimiter() override;
219 virtual
void write_string(
std::string_view
value) override;
221 virtual
void write_integer(
std::int64_t
value) override;
224 virtual
void write_decimal(
double value) override;
226 virtual
void write_boolean(
bool value) override;
235 std::ostream& _output;
258 virtual
void write_null() override;
260 virtual
void write_object_begin() override;
262 virtual
void write_object_end() override;
264 virtual
void write_object_key(
std::string_view key) override;
266 virtual
void write_object_delimiter() override;
268 virtual
void write_array_begin() override;
270 virtual
void write_array_end() override;
272 virtual
void write_array_delimiter() override;
274 virtual
void write_string(
std::string_view
value) override;
276 virtual
void write_integer(
std::int64_t
value) override;
278 virtual
void write_decimal(
double value) override;
280 virtual
void write_boolean(
bool value) override;
289 std::
size_t _indent_size;
342 virtual
void write_null() override;
344 virtual
void write_object_begin() override;
346 virtual
void write_object_end() override;
349 virtual
void write_object_key(
std::string_view key) override;
352 virtual
void write_object_delimiter() override;
354 virtual
void write_array_begin() override;
356 virtual
void write_array_end() override;
359 virtual
void write_array_delimiter() override;
362 virtual
void write_string(
std::string_view
value) override;
364 virtual
void write_integer(
std::int64_t
value) override;
367 virtual
void write_decimal(
double value) override;
369 virtual
void write_boolean(
bool value) override;
374 virtual
void write_tree(jsonv::
value&& source) override;
380 virtual
void write_tree(const jsonv::
value& source) override;
386 std::unique_ptr<impl> _impl;
An encoder is responsible for writing values to some form of output.
virtual void write_object_begin()=0
Write the opening of an object value.
virtual void write_tree(const jsonv::value &source)
Write source and everything under it as one value.
virtual void write_decimal(double value)=0
Write a decimal value.
virtual void write_array_begin()=0
Write the opening of an array value.
virtual void write_array_delimiter()=0
Write the delimiter between two entries in an array.
virtual void write_string(std::string_view value)=0
Write a string value.
virtual void write_object_end()=0
Write the closing of an object value.
void encode(const jsonv::value &source)
Encode some source value into this encoder, through write_tree.
virtual void write_object_key(std::string_view key)=0
Write the key for an object, including the separator.
virtual void write_integer(std::int64_t value)=0
Write an integer value.
virtual void write_tree(jsonv::value &&source)
Write source and everything under it as one value, taking it over.
virtual void write_null()=0
Write the null value.
virtual void write_object_delimiter()=0
Write the delimiter between two entries in an object.
virtual void write_boolean(bool value)=0
Write a boolean value.
virtual void write_array_end()=0
Write the closing of an array value.
An encoder that outputs to an std::ostream.
ostream_encoder(std::ostream &output)
Create an instance which places text into output.
Like ostream_encoder, but pretty prints output to an std::ostream.
ostream_pretty_encoder(std::ostream &output, std::size_t indent_size=2)
Create an instance which places text into output.
An encoder which builds a value from the tokens it is given: the sink for a document which is produce...
value_encoder()
Create an instance holding nothing.
Represents a single JSON value, which can be any one of a potential kind, each behaving slightly diff...
A writer instance writes a JSON ast_node sequence to some form of sink: an encoder,...
Copyright (c) 2014-2020 by Travis Gockel.
Copyright (c) 2012-2020 by Travis Gockel.
#define JSONV_NODISCARD
Warn if the caller discards the result of this function.
#define JSONV_PUBLIC
This function or class is part of the public API for JSON Voorhees.