// // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com) // Copyright (c) 2020 Krystian Stasiowski (sdkrystian@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_HPP #define BOOST_JSON_PARSE_HPP #include #include #include #include #include #include namespace boost { namespace json { /** Return parsed JSON as a @ref value. This function parses an entire string in one step to produce a complete JSON object, returned as a @ref value. If the buffer does not contain a complete serialized JSON, an error occurs. In this case the returned value will be null, using the [default memory resource]. @par Complexity Linear in `s.size()`. @par Exception Safety Strong guarantee. Calls to `memory_resource::allocate` may throw. @return A value representing the parsed JSON, or a null if any error occurred. @param s The string to parse. @param ec Set to the error, if any occurred. @param sp The memory resource that the new value and all of its elements will use. If this parameter is omitted, the [default memory resource] is used. @param opt The options for the parser. If this parameter is omitted, the parser will accept only standard JSON. @see @ref parse_options, @ref stream_parser. [default memory resource]: json/allocators/storage_ptr.html#json.allocators.storage_ptr.default_memory_resource */ /** @{ */ BOOST_JSON_DECL value parse( string_view s, system::error_code& ec, storage_ptr sp = {}, parse_options const& opt = {}); BOOST_JSON_DECL value parse( string_view s, std::error_code& ec, storage_ptr sp = {}, parse_options const& opt = {}); /** @} */ /** Return parsed JSON as a @ref value. This function parses an entire string in one step to produce a complete JSON object, returned as a @ref value. If the buffer does not contain a complete serialized JSON, an exception is thrown. @par Complexity Linear in `s.size()`. @par Exception Safety Strong guarantee. Calls to `memory_resource::allocate` may throw. @return A value representing the parsed JSON upon success. @param s The string to parse. @param sp The memory resource that the new value and all of its elements will use. If this parameter is omitted, the [default memory resource] is used. @param opt The options for the parser. If this parameter is omitted, the parser will accept only standard JSON. @throw boost::system::system_error Thrown on failure. @see @ref parse_options, @ref stream_parser. [default memory resource]: json/allocators/storage_ptr.html#json.allocators.storage_ptr.default_memory_resource */ BOOST_JSON_DECL value parse( string_view s, storage_ptr sp = {}, parse_options const& opt = {}); /** Return parsed JSON as a @ref value. This function reads data from an input stream and parses it to produce a complete JSON entity, returned as a @ref value. If the stream does not contain a complete serialized JSON, or contains extra non-whitespace data, an error occurs. In this case the returned value will be `null`, using the [default memory resource]. @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). @return A value representing the parsed JSON, or a `null` if any error occurred. @param is The stream to read from. @param ec Set to the error, if any occurred. @param sp The memory resource that the new value and all of its elements will use. If this parameter is omitted, the [default memory resource] is used. @param opt The options for the parser. If this parameter is omitted, the parser will accept only standard JSON. @see @ref parse_options, @ref stream_parser, @ref value::operator>>. [default memory resource]: json/allocators/storage_ptr.html#json.allocators.storage_ptr.default_memory_resource */ /** @{ */ BOOST_JSON_DECL value parse( std::istream& is, system::error_code& ec, storage_ptr sp = {}, parse_options const& opt = {}); BOOST_JSON_DECL value parse( std::istream& is, std::error_code& ec, storage_ptr sp = {}, parse_options const& opt = {}); /** @} */ /** Return parsed JSON as a @ref value. This function reads data from an input stream and parses it to produce a complete JSON entity, returned as a @ref value. If the stream does not contain a complete serialized JSON, or contains extra non-whitespace data, an exception is thrown. @par Complexity Linear in the size of consumed input. @par Exception Safety Basic guarantee. Throws `boost::system::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). @return A value representing the parsed JSON upon success. @param is The stream to read from. @param sp The memory resource that the new value and all of its elements will use. If this parameter is omitted, the [default memory resource] is used. @param opt The options for the parser. If this parameter is omitted, the parser will accept only standard JSON. @see @ref parse_options, @ref stream_parser, @ref value::operator>>. [default memory resource]: json/allocators/storage_ptr.html#json.allocators.storage_ptr.default_memory_resource */ BOOST_JSON_DECL value parse( std::istream& is, storage_ptr sp = {}, parse_options const& opt = {}); } // namespace json } // namespace boost #endif