From 1d055261b4144dbf86b2658437015b15d4dd9bff Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 4 Sep 2022 00:32:56 +0100 Subject: initial --- include/jsoncons_ext/ubjson/ubjson_reader.hpp | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 include/jsoncons_ext/ubjson/ubjson_reader.hpp (limited to 'include/jsoncons_ext/ubjson/ubjson_reader.hpp') diff --git a/include/jsoncons_ext/ubjson/ubjson_reader.hpp b/include/jsoncons_ext/ubjson/ubjson_reader.hpp new file mode 100644 index 0000000..210403a --- /dev/null +++ b/include/jsoncons_ext/ubjson/ubjson_reader.hpp @@ -0,0 +1,92 @@ +// Copyright 2017 Daniel Parker +// Distributed under the Boost license, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See https://github.com/danielaparker/jsoncons for latest version + +#ifndef JSONCONS_UBJSON_UBJSON_READER_HPP +#define JSONCONS_UBJSON_UBJSON_READER_HPP + +#include +#include +#include // std::move +#include +#include +#include +#include +#include +#include +#include + +namespace jsoncons { namespace ubjson { + +template > +class basic_ubjson_reader +{ + basic_ubjson_parser parser_; + json_visitor& visitor_; +public: + template + basic_ubjson_reader(Sourceable&& source, + json_visitor& visitor, + const Allocator alloc) + : basic_ubjson_reader(std::forward(source), + visitor, + ubjson_decode_options(), + alloc) + { + } + + template + basic_ubjson_reader(Sourceable&& source, + json_visitor& visitor, + const ubjson_decode_options& options = ubjson_decode_options(), + const Allocator alloc=Allocator()) + : parser_(std::forward(source), options, alloc), + visitor_(visitor) + { + } + + void read() + { + std::error_code ec; + read(ec); + if (ec) + { + JSONCONS_THROW(ser_error(ec,line(),column())); + } + } + + void read(std::error_code& ec) + { + parser_.reset(); + parser_.parse(visitor_, ec); + if (ec) + { + return; + } + } + + std::size_t line() const + { + return parser_.line(); + } + + std::size_t column() const + { + return parser_.column(); + } +}; + +using ubjson_stream_reader = basic_ubjson_reader; + +using ubjson_bytes_reader = basic_ubjson_reader; + +#if !defined(JSONCONS_NO_DEPRECATED) +JSONCONS_DEPRECATED_MSG("Instead, use ubjson_stream_reader") typedef ubjson_stream_reader ubjson_reader; +JSONCONS_DEPRECATED_MSG("Instead, use ubjson_bytes_reader") typedef ubjson_bytes_reader ubjson_buffer_reader; +#endif + +}} + +#endif -- cgit v1.2.3