199 virtual
void write_null() override;
201 virtual
void write_object_begin() override;
203 virtual
void write_object_end() override;
205 virtual
void write_object_key(
std::string_view key) override;
207 virtual
void write_object_delimiter() override;
209 virtual
void write_array_begin() override;
211 virtual
void write_array_end() override;
213 virtual
void write_array_delimiter() override;
215 virtual
void write_string(
std::string_view
value) override;
217 virtual
void write_integer(
std::int64_t
value) override;
220 virtual
void write_decimal(
double value) override;
222 virtual
void write_boolean(
bool value) override;
225 std::ostream& output();
228 std::ostream& _output;
251 virtual
void write_null() override;
253 virtual
void write_object_begin() override;
255 virtual
void write_object_end() override;
257 virtual
void write_object_key(
std::string_view key) override;
259 virtual
void write_object_delimiter() override;
261 virtual
void write_array_begin() override;
263 virtual
void write_array_end() override;
265 virtual
void write_array_delimiter() override;
267 virtual
void write_string(
std::string_view
value) override;
269 virtual
void write_integer(
std::int64_t
value) override;
271 virtual
void write_decimal(
double value) override;
273 virtual
void write_boolean(
bool value) override;
282 std::
size_t _indent_size;
335 virtual
void write_null() override;
337 virtual
void write_object_begin() override;
339 virtual
void write_object_end() override;
342 virtual
void write_object_key(
std::string_view key) override;
345 virtual
void write_object_delimiter() override;
347 virtual
void write_array_begin() override;
349 virtual
void write_array_end() override;
352 virtual
void write_array_delimiter() override;
355 virtual
void write_string(
std::string_view
value) override;
357 virtual
void write_integer(
std::int64_t
value) override;
360 virtual
void write_decimal(
double value) override;
362 virtual
void write_boolean(
bool value) override;
367 virtual
void write_tree(jsonv::
value&& source) override;
373 virtual
void write_tree(const jsonv::
value& source) override;
379 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.