diff options
author | Manoj Srivastava <srivasta@debian.org> | 2020-05-27 16:44:24 -0700 |
---|---|---|
committer | Manoj Srivastava <srivasta@debian.org> | 2020-05-27 16:45:26 -0700 |
commit | 2c93afb0089a37de798da8d23824a84846ab7d7c (patch) | |
tree | a53be684627948ed96d64e2be7aac1bea83507b8 /vendor/jsoncons-0.99.2/jsoncons/json_reader.hpp | |
parent | d6b913d3ca2e84b75f3675fd6e9f5246c100cf27 (diff) | |
parent | e9d08c617ee73f0636e1f1a1d40582f193c37e81 (diff) |
Merge branch 'upstream'
Diffstat (limited to 'vendor/jsoncons-0.99.2/jsoncons/json_reader.hpp')
-rw-r--r-- | vendor/jsoncons-0.99.2/jsoncons/json_reader.hpp | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/vendor/jsoncons-0.99.2/jsoncons/json_reader.hpp b/vendor/jsoncons-0.99.2/jsoncons/json_reader.hpp deleted file mode 100644 index a0dd4641..00000000 --- a/vendor/jsoncons-0.99.2/jsoncons/json_reader.hpp +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2015 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_JSON_READER_HPP -#define JSONCONS_JSON_READER_HPP - -#include <memory> -#include <string> -#include <sstream> -#include <vector> -#include <istream> -#include <cstdlib> -#include <stdexcept> -#include <system_error> -#include "jsoncons/jsoncons.hpp" -#include "jsoncons/json_input_handler.hpp" -#include "jsoncons/parse_error_handler.hpp" -#include "jsoncons/json_parser.hpp" - -namespace jsoncons { - -template<typename CharT> -class basic_json_reader -{ - static const size_t default_max_buffer_length = 16384; - - basic_json_parser<CharT> parser_; - std::basic_istream<CharT> *is_; - basic_parse_error_handler<CharT> *err_handler_; - bool eof_; - std::vector<CharT> buffer_; - size_t buffer_length_; - size_t buffer_capacity_; - size_t index_; -public: - basic_json_reader(std::basic_istream<CharT>& is, - basic_json_input_handler<CharT>& handler) - : parser_(handler), - is_(std::addressof(is)), - err_handler_(std::addressof(basic_default_parse_error_handler<CharT>::instance())), - eof_(false), - buffer_length_(0), - buffer_capacity_(default_max_buffer_length), - index_(0) - { - buffer_.resize(buffer_capacity_); - } - - basic_json_reader(std::basic_istream<CharT>& is, - basic_json_input_handler<CharT>& handler, - basic_parse_error_handler<CharT>& err_handler) - : parser_(handler,err_handler), - is_(std::addressof(is)), - err_handler_(std::addressof(err_handler)), - eof_(false), - buffer_length_(0), - buffer_capacity_(default_max_buffer_length), - index_(0) - { - buffer_.resize(buffer_capacity_); - } - - size_t buffer_capacity() const - { - return buffer_capacity_; - } - - void buffer_capacity(size_t capacity) - { - buffer_capacity_ = capacity; - buffer_.resize(buffer_capacity_); - } - - size_t max_nesting_depth() const - { - return parser_.max_nesting_depth(); - } - - void max_nesting_depth(size_t depth) - { - parser_.max_nesting_depth(depth); - } - - void read_next() - { - parser_.begin_parse(); - while (!eof_ && !parser_.done()) - { - if (!(index_ < buffer_length_)) - { - if (!is_->eof()) - { - is_->read(buffer_.data(), buffer_capacity_); - buffer_length_ = static_cast<size_t>(is_->gcount()); - if (buffer_length_ == 0) - { - eof_ = true; - } - index_ = 0; - } - else - { - eof_ = true; - } - } - if (!eof_) - { - parser_.parse(buffer_.data(),index_,buffer_length_); - index_ = parser_.index(); - } - } - parser_.end_parse(); - } - - void check_done() - { - while (!eof_) - { - if (!(index_ < buffer_length_)) - { - if (!is_->eof()) - { - is_->read(buffer_.data(), buffer_capacity_); - buffer_length_ = static_cast<size_t>(is_->gcount()); - if (buffer_length_ == 0) - { - eof_ = true; - } - index_ = 0; - } - else - { - eof_ = true; - } - } - if (!eof_) - { - parser_.check_done(buffer_.data(),index_,buffer_length_); - index_ = parser_.index(); - } - } - } - - bool eof() const - { - return eof_; - } - -#if !defined(JSONCONS_NO_DEPRECATED) - void read() - { - read_next(); - } - - size_t max_depth() const - { - return parser_.max_nesting_depth(); - } - - void max_depth(size_t depth) - { - parser_.max_nesting_depth(depth); - } -#endif -}; - -typedef basic_json_reader<char> json_reader; -typedef basic_json_reader<wchar_t> wjson_reader; - -} - -#endif - |