#include <jsoncons_ext/ubjson/ubjson_cursor.hpp>
template<
class Source=jsoncons::binary_stream_source,
class Allocator=std::allocator<char>>
class basic_ubjson_cursor;
A pull parser for reporting UBJSON parse events. A typical application will
repeatedly process the current()
event and call the next()
function to advance to the next event, until done()
returns true
.
In addition, when positioned on a begin_object
event,
the read_to
function can pull a complete object representing
the events from begin_object
to end_object
,
and when positioned on a begin_array
event, a complete array
representing the events from begin_array
ro end_array
.
basic_ubjson_cursor
is noncopyable and nonmoveable.
Aliases for common sources are provided:
Type | Definition |
---|---|
ubjson_stream_cursor | basic_ubjson_cursorjsoncons::binary_stream_source |
ubjson_bytes_cursor | basic_ubjson_cursorjsoncons::bytes_source |
template <typename Sourceable>
basic_ubjson_cursor(Sourceable&& source,
const ubjson_decode_options& options = ubjson_decode_options(),
const Allocator& alloc = Allocator()); (1)
template <typename Sourceable>
basic_ubjson_cursor(Sourceable&& source,
std::error_code& ec); (2)
template <typename Sourceable>
basic_ubjson_cursor(Sourceable&& source,
const ubjson_decode_options& options,
std::error_code& ec); (3)
template <typename Sourceable>
basic_ubjson_cursor(std::allocator_arg_t, const Allocator& alloc,
Sourceable&& source,
const ubjson_decode_options& options,
std::error_code& ec); (4)
Constructor (1) reads from a buffer or stream source and throws a ser_error if a parsing error is encountered while processing the initial event.
Constructors (2)-(4) read from a buffer or stream source and set ec
if a parsing error is encountered while processing the initial event.
Note: It is the programmer's responsibility to ensure that basic_ubjson_cursor
does not outlive any source passed in the constuctor,
as basic_ubjson_cursor
holds a pointer to but does not own this object.
source
- a value from which a source_type
is constructible.
bool done() const override;
Checks if there are no more events.
const staj_event& current() const override;
Returns the current staj_event.
void read_to(json_visitor& visitor) override
Feeds the current and succeeding staj events through the provided visitor, until the visitor indicates to stop. If a parsing error is encountered, throws a ser_error.
void read_to(json_visitor& visitor, std::error_code& ec) override
Feeds the current and succeeding staj events through the provided
visitor, until the visitor indicates
to stop. If a parsing error is encountered, sets ec
.
void next() override;
Advances to the next event. If a parsing error is encountered, throws a ser_error.
void next(std::error_code& ec) override;
Advances to the next event. If a parsing error is encountered, sets ec
.
const ser_context& context() const override;
Returns the current context
void reset();
Reset cursor to read another value from the same source
template <typename Sourceable>
reset(Sourceable&& source)
Reset cursor to read new value from a new sources
template <typename Source,typename Allocator> staj_filter_view operator|(basic_ubjson_cursor<Source,Allocator>& cursor, std::function<bool(const staj_event&, const ser_context&)> pred);