mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-06 07:27:50 +00:00
Added thirdparty: boost library
This commit is contained in:
+216
@@ -0,0 +1,216 @@
|
||||
//
|
||||
// Copyright (c) 2021 Peter Dimov
|
||||
// Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.com)
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// Official repository: https://github.com/boostorg/json
|
||||
//
|
||||
|
||||
#ifndef BOOST_JSON_PARSE_INTO_HPP
|
||||
#define BOOST_JSON_PARSE_INTO_HPP
|
||||
|
||||
#include <boost/json/detail/config.hpp>
|
||||
|
||||
#include <boost/json/basic_parser.hpp>
|
||||
#include <boost/json/string_view.hpp>
|
||||
#include <boost/json/system_error.hpp>
|
||||
#include <boost/json/detail/parse_into.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace json {
|
||||
|
||||
/** `basic_parser` that parses into a given type
|
||||
|
||||
This is an alias template for @ref basic_parser instantiations that use
|
||||
a dedicated handler that parses directly into an object provided by the
|
||||
user instead of creating a @ref value.
|
||||
|
||||
Objects of type `parser_for<T>` have constructor signature equivalent to
|
||||
`parser_for( parse_options const&, T& )`.
|
||||
|
||||
@tparam T the type to parse into. This type must be
|
||||
[*DefaultConstructible*](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
|
||||
*/
|
||||
template< class T >
|
||||
using parser_for =
|
||||
#ifndef BOOST_JSON_DOCS
|
||||
basic_parser<detail::into_handler<T>>;
|
||||
#else
|
||||
__see_below__;
|
||||
#endif
|
||||
|
||||
/** Parse a JSON text into a user-defined object.
|
||||
|
||||
This function parses an entire string in one step and fills an object
|
||||
provided by the user. If the buffer does not contain a complete serialized
|
||||
JSON text, an error occurs. In this case `v` may be partially filled.
|
||||
|
||||
The function supports default constructible types satisfying
|
||||
<a href="https://en.cppreference.com/w/cpp/named_req/SequenceContainer"><em>SequenceContainer</em></a>,
|
||||
arrays, arithmetic types, `bool`, `std::tuple`, `std::pair`,
|
||||
`std::optional`, `std::nullptr_t`, and structs and enums described using
|
||||
Boost.Describe.
|
||||
|
||||
@par Complexity
|
||||
Linear in `sv.size()`.
|
||||
|
||||
@par Exception Safety
|
||||
Basic guarantee.
|
||||
Calls to `memory_resource::allocate` may throw.
|
||||
|
||||
@param v The type to parse into.
|
||||
|
||||
@param sv The string to parse.
|
||||
|
||||
@param ec Set to the error, if any occurred.
|
||||
|
||||
@param opt The options for the parser. If this parameter
|
||||
is omitted, the parser will accept only standard JSON.
|
||||
*/
|
||||
/** @{ */
|
||||
template<class V>
|
||||
void
|
||||
parse_into(
|
||||
V& v,
|
||||
string_view sv,
|
||||
error_code& ec,
|
||||
parse_options const& opt = {} );
|
||||
|
||||
template<class V>
|
||||
void
|
||||
parse_into(
|
||||
V& v,
|
||||
string_view sv,
|
||||
std::error_code& ec,
|
||||
parse_options const& opt = {} );
|
||||
/** @} */
|
||||
|
||||
/** Parse a JSON text into a user-defined object.
|
||||
|
||||
This function parses an entire string in one step and fills an object
|
||||
provided by the user. If the buffer does not contain a complete serialized
|
||||
JSON text, an exception is thrown. In this case `v` may be
|
||||
partially filled.
|
||||
|
||||
The function supports default constructible types satisfying
|
||||
<a href="https://en.cppreference.com/w/cpp/named_req/SequenceContainer"><em>SequenceContainer</em></a>,
|
||||
arrays, arithmetic types, `bool`, `std::tuple`, `std::pair`,
|
||||
`std::optional`, `std::nullptr_t`, and structs and enums described using
|
||||
Boost.Describe.
|
||||
|
||||
@par Complexity
|
||||
Linear in `sv.size()`.
|
||||
|
||||
@par Exception Safety
|
||||
Basic guarantee.
|
||||
Throws @ref system_error on failed parse.
|
||||
Calls to `memory_resource::allocate` may throw.
|
||||
|
||||
@param v The type to parse into.
|
||||
|
||||
@param sv The string to parse.
|
||||
|
||||
@param opt The options for the parser. If this parameter
|
||||
is omitted, the parser will accept only standard JSON.
|
||||
*/
|
||||
template<class V>
|
||||
void
|
||||
parse_into(
|
||||
V& v,
|
||||
string_view sv,
|
||||
parse_options const& opt = {} );
|
||||
|
||||
/** Parse a JSON text into a user-defined object.
|
||||
|
||||
This function reads data from an input stream and fills an object provided
|
||||
by the user. If the buffer does not contain a complete serialized JSON
|
||||
text, or contains extra non-whitespace data, an error occurs. In this case
|
||||
`v` may be partially filled.
|
||||
|
||||
The function supports default constructible types satisfying
|
||||
<a href="https://en.cppreference.com/w/cpp/named_req/SequenceContainer"><em>SequenceContainer</em></a>,
|
||||
arrays, arithmetic types, `bool`, `std::tuple`, `std::pair`,
|
||||
`std::optional`, `std::nullptr_t`, and structs and enums described using
|
||||
Boost.Describe.
|
||||
|
||||
@par Complexity
|
||||
Linear in the size of consumed input.
|
||||
|
||||
@par Exception Safety
|
||||
Basic guarantee.
|
||||
Calls to `memory_resource::allocate` may throw.
|
||||
The stream may throw as described by
|
||||
[`std::ios::exceptions`](https://en.cppreference.com/w/cpp/io/basic_ios/exceptions).
|
||||
|
||||
@param v The type to parse into.
|
||||
|
||||
@param is The stream to read from.
|
||||
|
||||
@param ec Set to the error, if any occurred.
|
||||
|
||||
@param opt The options for the parser. If this parameter
|
||||
is omitted, the parser will accept only standard JSON.
|
||||
*/
|
||||
/** @{ */
|
||||
template<class V>
|
||||
void
|
||||
parse_into(
|
||||
V& v,
|
||||
std::istream& is,
|
||||
error_code& ec,
|
||||
parse_options const& opt = {} );
|
||||
|
||||
template<class V>
|
||||
void
|
||||
parse_into(
|
||||
V& v,
|
||||
std::istream& is,
|
||||
std::error_code& ec,
|
||||
parse_options const& opt = {} );
|
||||
/** @} */
|
||||
|
||||
/** Parse a JSON text into a user-defined object.
|
||||
|
||||
This function reads data from an input stream and fills an object provided
|
||||
by the user. If the buffer does not contain a complete serialized JSON
|
||||
text, or contains extra non-whitespace data, an exception is thrown. In
|
||||
this case `v` may be partially filled.
|
||||
|
||||
The function supports default constructible types satisfying
|
||||
<a href="https://en.cppreference.com/w/cpp/named_req/SequenceContainer"><em>SequenceContainer</em></a>,
|
||||
arrays, arithmetic types, `bool`, `std::tuple`, `std::pair`,
|
||||
`std::optional`, `std::nullptr_t`, and structs and enums described using
|
||||
Boost.Describe.
|
||||
|
||||
@par Complexity
|
||||
Linear in the size of consumed input.
|
||||
|
||||
@par Exception Safety
|
||||
Basic guarantee.
|
||||
Throws @ref system_error on failed parse.
|
||||
Calls to `memory_resource::allocate` may throw.
|
||||
The stream may throw as described by
|
||||
[`std::ios::exceptions`](https://en.cppreference.com/w/cpp/io/basic_ios/exceptions).
|
||||
|
||||
@param v The type to parse into.
|
||||
|
||||
@param is The stream to read from.
|
||||
|
||||
@param opt The options for the parser. If this parameter
|
||||
is omitted, the parser will accept only standard JSON.
|
||||
*/
|
||||
template<class V>
|
||||
void
|
||||
parse_into(
|
||||
V& v,
|
||||
std::istream& is,
|
||||
parse_options const& opt = {} );
|
||||
|
||||
} // namespace boost
|
||||
} // namespace json
|
||||
|
||||
#include <boost/json/impl/parse_into.hpp>
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user