parser::write

Parse a buffer containing a complete JSON text.

Synopsis

std::size_t
write(
    char const* data,
    std::size_t size,
    boost::system::error_code& ec); (1)

std::size_t
write(
    char const* data,
    std::size_t size,
    std::error_code& ec); (2)

std::size_t
write(
    char const* data,
    std::size_t size); (3)

std::size_t
write(
    string_view s,
    boost::system::error_code& ec); (4)

std::size_t
write(
    string_view s,
    std::error_code& ec); (5)

std::size_t
write(
    string_view s); (6)

Description

This function parses a complete JSON text contained in the specified character buffer. The entire buffer must be consumed; if there are additional characters past the end of the complete JSON text, the parse fails and an error is returned.

Example

parser p;                                       // construct a parser
size_t n = p.write( "[1,2,3]" );                // parse a complete JSON text
assert( n == 7 );                               // all characters consumed
value jv = p.release();                         // take ownership of the value

Overloads (1), (2), (4), and (5) report errors by setting ec. Overloads (3) and (6) report errors by throwing exceptions.

Complexity

  • (1)(3) linear in size.

  • (4)(6) linear in s.size().

Exception Safety

Basic guarantee. Calls to memory_resource::allocate may throw. Upon error or exception, subsequent calls will fail until reset is called to parse a new JSON text.

Return Value

The number of characters consumed from the buffer.

Parameters

Name Description

data

A pointer to a buffer of size characters to parse.

size

The number of characters pointed to by data.

ec

Set to the error, if any occurred.

s

The character string to parse.

Exceptions

Type Thrown On

boost::system::system_error

Thrown on error.