From fe71e7df1f06afbac4b3312194e0755ee21efa36 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 8 Mar 2017 21:03:19 +0100 Subject: [PATCH] :memo: overworked documentation Replacing references to std exceptions with user-defined exceptions. Also changed some examples to the new exceptions. --- doc/examples/at__object_t_key_type | Bin 0 -> 130960 bytes doc/examples/at__object_t_key_type.cpp | 4 +- doc/examples/at__object_t_key_type.link | 2 +- doc/examples/at__object_t_key_type.output | 2 +- doc/examples/at__object_t_key_type.test | 3 + doc/examples/at__object_t_key_type_const.cpp | 2 +- doc/examples/at__object_t_key_type_const.link | 2 +- doc/examples/at__size_type.cpp | 4 +- doc/examples/at__size_type.link | 2 +- doc/examples/at__size_type.output | 2 +- doc/examples/at__size_type_const.cpp | 2 +- doc/examples/at__size_type_const.link | 2 +- doc/examples/get_ref | Bin 0 -> 38132 bytes doc/examples/get_ref.cpp | 2 +- doc/examples/get_ref.link | 2 +- doc/examples/get_ref.output | 2 +- doc/examples/get_ref.test | 2 + doc/examples/json_pointer | Bin 0 -> 47612 bytes doc/examples/json_pointer.cpp | 12 +- doc/examples/json_pointer.link | 2 +- doc/examples/json_pointer.output | 6 +- doc/examples/json_pointer.test | 3 + src/json.hpp | 199 +++++++++++++----- src/json.hpp.re2c | 196 ++++++++++++----- 24 files changed, 325 insertions(+), 128 deletions(-) create mode 100755 doc/examples/at__object_t_key_type create mode 100644 doc/examples/at__object_t_key_type.test create mode 100755 doc/examples/get_ref create mode 100644 doc/examples/get_ref.test create mode 100755 doc/examples/json_pointer create mode 100644 doc/examples/json_pointer.test diff --git a/doc/examples/at__object_t_key_type b/doc/examples/at__object_t_key_type new file mode 100755 index 0000000000000000000000000000000000000000..03f48e68ca3efe94e36855f9d69bd72b6854b4ff GIT binary patch literal 130960 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 JywMTA{}1@W;O+nb literal 0 HcmV?d00001 diff --git a/doc/examples/at__object_t_key_type.cpp b/doc/examples/at__object_t_key_type.cpp index 83646f15..a66bd9a3 100644 --- a/doc/examples/at__object_t_key_type.cpp +++ b/doc/examples/at__object_t_key_type.cpp @@ -26,8 +26,8 @@ int main() { object.at("the fast") = "il rapido"; } - catch (std::out_of_range& e) + catch (json::out_of_range& e) { - std::cout << "out of range: " << e.what() << '\n'; + std::cout << e.what() << '\n'; } } diff --git a/doc/examples/at__object_t_key_type.link b/doc/examples/at__object_t_key_type.link index 4a050ecf..1cb99d46 100644 --- a/doc/examples/at__object_t_key_type.link +++ b/doc/examples/at__object_t_key_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__object_t_key_type.output b/doc/examples/at__object_t_key_type.output index 79cff2d7..654b9eb6 100644 --- a/doc/examples/at__object_t_key_type.output +++ b/doc/examples/at__object_t_key_type.output @@ -1,3 +1,3 @@ "il brutto" {"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"} -out of range: key 'the fast' not found +[json.exception.out_of_range.403] key 'the fast' not found diff --git a/doc/examples/at__object_t_key_type.test b/doc/examples/at__object_t_key_type.test new file mode 100644 index 00000000..654b9eb6 --- /dev/null +++ b/doc/examples/at__object_t_key_type.test @@ -0,0 +1,3 @@ +"il brutto" +{"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"} +[json.exception.out_of_range.403] key 'the fast' not found diff --git a/doc/examples/at__object_t_key_type_const.cpp b/doc/examples/at__object_t_key_type_const.cpp index 0e8d9d72..99eb6f01 100644 --- a/doc/examples/at__object_t_key_type_const.cpp +++ b/doc/examples/at__object_t_key_type_const.cpp @@ -20,7 +20,7 @@ int main() { std::cout << object.at("the fast") << '\n'; } - catch (std::out_of_range) + catch (json::out_of_range) { std::cout << "out of range" << '\n'; } diff --git a/doc/examples/at__object_t_key_type_const.link b/doc/examples/at__object_t_key_type_const.link index 1ad9c07d..a07dbd59 100644 --- a/doc/examples/at__object_t_key_type_const.link +++ b/doc/examples/at__object_t_key_type_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__size_type.cpp b/doc/examples/at__size_type.cpp index e31d61d3..07e363ab 100644 --- a/doc/examples/at__size_type.cpp +++ b/doc/examples/at__size_type.cpp @@ -21,8 +21,8 @@ int main() { array.at(5) = "sixth"; } - catch (std::out_of_range& e) + catch (json::out_of_range& e) { - std::cout << "out of range: " << e.what() << '\n'; + std::cout << e.what() << '\n'; } } diff --git a/doc/examples/at__size_type.link b/doc/examples/at__size_type.link index 00e42d30..78ec0ca0 100644 --- a/doc/examples/at__size_type.link +++ b/doc/examples/at__size_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__size_type.output b/doc/examples/at__size_type.output index d1f68bdb..4f0c9e54 100644 --- a/doc/examples/at__size_type.output +++ b/doc/examples/at__size_type.output @@ -1,3 +1,3 @@ "third" ["first","second","third","fourth"] -out of range: array index 5 is out of range +[json.exception.out_of_range.401] array index 5 is out of range diff --git a/doc/examples/at__size_type_const.cpp b/doc/examples/at__size_type_const.cpp index a8a43ed8..c29db4fb 100644 --- a/doc/examples/at__size_type_const.cpp +++ b/doc/examples/at__size_type_const.cpp @@ -15,7 +15,7 @@ int main() { std::cout << array.at(5) << '\n'; } - catch (std::out_of_range) + catch (json::out_of_range) { std::cout << "out of range" << '\n'; } diff --git a/doc/examples/at__size_type_const.link b/doc/examples/at__size_type_const.link index 0fefb628..c5f66fe0 100644 --- a/doc/examples/at__size_type_const.link +++ b/doc/examples/at__size_type_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/get_ref b/doc/examples/get_ref new file mode 100755 index 0000000000000000000000000000000000000000..d2dda9ba81796fd46a0b3d8cb861339285e07f15 GIT binary patch literal 38132 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 YQ}lEPF-EoUdQKrtW|j%#ZWEvX1IimE#Q*>R literal 0 HcmV?d00001 diff --git a/doc/examples/get_ref.cpp b/doc/examples/get_ref.cpp index d0ddb2d2..a152d347 100644 --- a/doc/examples/get_ref.cpp +++ b/doc/examples/get_ref.cpp @@ -19,7 +19,7 @@ int main() { auto r3 = value.get_ref(); } - catch (std::domain_error& ex) + catch (json::type_error& ex) { std::cout << ex.what() << '\n'; } diff --git a/doc/examples/get_ref.link b/doc/examples/get_ref.link index ef560c42..c5bd9c03 100644 --- a/doc/examples/get_ref.link +++ b/doc/examples/get_ref.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/get_ref.output b/doc/examples/get_ref.output index 50bc0df6..3811afa2 100644 --- a/doc/examples/get_ref.output +++ b/doc/examples/get_ref.output @@ -1,2 +1,2 @@ 17 17 -incompatible ReferenceType for get_ref, actual type is number +[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number diff --git a/doc/examples/get_ref.test b/doc/examples/get_ref.test new file mode 100644 index 00000000..3811afa2 --- /dev/null +++ b/doc/examples/get_ref.test @@ -0,0 +1,2 @@ +17 17 +[json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number diff --git a/doc/examples/json_pointer b/doc/examples/json_pointer new file mode 100755 index 0000000000000000000000000000000000000000..83f8491caf97ba3c05ab47ff0005c6be85579bdc GIT binary patch literal 47612 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 T?I}{RMEETcDX$x0Bj(=$@v}rg literal 0 HcmV?d00001 diff --git a/doc/examples/json_pointer.cpp b/doc/examples/json_pointer.cpp index 140eac3b..3b23dfb2 100644 --- a/doc/examples/json_pointer.cpp +++ b/doc/examples/json_pointer.cpp @@ -19,9 +19,9 @@ int main() { json::json_pointer p9("foo"); } - catch (std::domain_error& e) + catch (json::parse_error& e) { - std::cout << "domain_error: " << e.what() << '\n'; + std::cout << e.what() << '\n'; } // error: JSON pointer uses escape symbol ~ not followed by 0 or 1 @@ -29,9 +29,9 @@ int main() { json::json_pointer p10("/foo/~"); } - catch (std::domain_error& e) + catch (json::parse_error& e) { - std::cout << "domain_error: " << e.what() << '\n'; + std::cout << e.what() << '\n'; } // error: JSON pointer uses escape symbol ~ not followed by 0 or 1 @@ -39,8 +39,8 @@ int main() { json::json_pointer p11("/foo/~3"); } - catch (std::domain_error& e) + catch (json::parse_error& e) { - std::cout << "domain_error: " << e.what() << '\n'; + std::cout << e.what() << '\n'; } } diff --git a/doc/examples/json_pointer.link b/doc/examples/json_pointer.link index 6602f0cf..78881dd9 100644 --- a/doc/examples/json_pointer.link +++ b/doc/examples/json_pointer.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/json_pointer.output b/doc/examples/json_pointer.output index b81c8a20..33e2cc68 100644 --- a/doc/examples/json_pointer.output +++ b/doc/examples/json_pointer.output @@ -1,3 +1,3 @@ -domain_error: JSON pointer must be empty or begin with '/' -domain_error: escape error: '~' must be followed with '0' or '1' -domain_error: escape error: '~' must be followed with '0' or '1' +[json.exception.parse_error.107] parse error at 1: JSON pointer must be empty or begin with '/' - was: 'foo' +[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' +[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' diff --git a/doc/examples/json_pointer.test b/doc/examples/json_pointer.test new file mode 100644 index 00000000..33e2cc68 --- /dev/null +++ b/doc/examples/json_pointer.test @@ -0,0 +1,3 @@ +[json.exception.parse_error.107] parse error at 1: JSON pointer must be empty or begin with '/' - was: 'foo' +[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' +[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' diff --git a/src/json.hpp b/src/json.hpp index f1462db8..4b2af732 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -301,7 +301,8 @@ Exceptions have ids 5xx. name / id | example massage | description ------------------------------ | --------------- | ------------------------- -json.exception.[other_error](@ref other_error).501 | "unsuccessful" | A JSON Patch operation 'test' failed. +json.exception.[other_error](@ref other_error).501 | "unsuccessful: {"op":"test","path":"/baz", + "value":"bar"}" | A JSON Patch operation 'test' failed. @since version 3.0.0 */ @@ -3652,7 +3653,7 @@ class basic_json @return copy of the JSON value, converted to type @a ValueType - @throw std::domain_error in case passed type @a ValueType is incompatible + @throw type_error.302 in case passed type @a ValueType is incompatible to JSON, thrown by @ref get() const @complexity Linear in the size of the JSON value. @@ -4088,7 +4089,7 @@ class basic_json @return const reference to the element at key @a key - @throw std::domain_error if JSON is not an object; example: `"cannot use + @throw type_error.305 if JSON is not an object; example: `"cannot use operator[] with null"` @complexity Logarithmic in the size of the container. @@ -4365,7 +4366,7 @@ class basic_json assertions**). @post The JSON value remains unchanged. - @throw std::out_of_range when called on `null` value + @throw invalid_iterator.214 when called on `null` value @liveexample{The following code shows an example for `front()`.,front} @@ -4408,7 +4409,7 @@ class basic_json assertions**). @post The JSON value remains unchanged. - @throw std::out_of_range when called on `null` value. + @throw invalid_iterator.214 when called on `null` value. @liveexample{The following code shows an example for `back()`.,back} @@ -4698,7 +4699,7 @@ class basic_json @throw type_error.307 when called on a type other than JSON object; example: `"cannot use erase() with null"` - @throw std::out_of_range when `idx >= size()`; example: `"array index 17 + @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 is out of range"` @complexity Linear in distance between @a idx and the end of the container. @@ -7032,6 +7033,8 @@ class basic_json @throw parse_error.101 if a parse error occurs; example: `""unexpected end of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @@ -7063,6 +7066,10 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7099,6 +7106,11 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @throw parse_error.111 if input stream is in a bad state + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7158,6 +7170,10 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7228,6 +7244,10 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7260,7 +7280,10 @@ class basic_json @param[in,out] i input stream to read a serialized JSON value from @param[in,out] j JSON value to write the deserialized input to - @throw std::invalid_argument in case of parse errors + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @throw parse_error.111 if input stream is in a bad state @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. @@ -7963,9 +7986,9 @@ class basic_json @return deserialized JSON value - @throw std::invalid_argument if unsupported features from MessagePack were + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from MessagePack were used in the given vector @a v or if the input is not valid MessagePack - @throw std::out_of_range if the given vector ends prematurely @sa https://github.com/msgpack/msgpack/blob/master/spec.md */ @@ -8205,9 +8228,9 @@ class basic_json @return deserialized JSON value - @throw std::invalid_argument if unsupported features from CBOR were used in - the given vector @a v or if the input is not valid CBOR - @throw std::out_of_range if the given vector ends prematurely + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from CBOR were + used in the given vector @a v or if the input is not valid CBOR @sa https://tools.ietf.org/html/rfc7049 */ @@ -8729,9 +8752,9 @@ class basic_json @param[in] start_index the index to start reading from @a v (0 by default) @return deserialized JSON value - @throw std::invalid_argument if unsupported features from MessagePack were + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from MessagePack were used in the given vector @a v or if the input is not valid MessagePack - @throw std::out_of_range if the given vector ends prematurely @complexity Linear in the size of the byte vector @a v. @@ -8792,9 +8815,9 @@ class basic_json @param[in] start_index the index to start reading from @a v (0 by default) @return deserialized JSON value - @throw std::invalid_argument if unsupported features from CBOR were used in - the given vector @a v or if the input is not valid MessagePack - @throw std::out_of_range if the given vector ends prematurely + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from CBOR were + used in the given vector @a v or if the input is not valid CBOR @complexity Linear in the size of the byte vector @a v. @@ -9908,7 +9931,10 @@ class basic_json m_limit = m_content + len; } - /// a lexer from an input stream + /*! + @brief a lexer from an input stream + @throw parse_error.111 if input stream is in a bad state + */ explicit lexer(std::istream& s) : m_stream(&s), m_line_buffer() { @@ -11288,7 +11314,7 @@ basic_json_parser_74: @return string value of current token without opening and closing quotes - @throw parse_error.102 if to_unicode fails + @throw parse_error.102 if to_unicode fails or surrogate error @throw parse_error.103 if to_unicode fails */ string_t get_string() const @@ -11685,7 +11711,10 @@ basic_json_parser_74: m_lexer(reinterpret_cast(buff), std::strlen(buff)) {} - /// a parser reading from an input stream + /*! + @brief a parser reading from an input stream + @throw parse_error.111 if input stream is in a bad state + */ parser(std::istream& is, const parser_callback_t cb = nullptr) : callback(cb), m_lexer(is) {} @@ -11701,7 +11730,12 @@ basic_json_parser_74: static_cast(std::distance(first, last))) {} - /// public parser interface + /*! + @brief public parser interface + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ basic_json parse() { // read first token @@ -11718,7 +11752,12 @@ basic_json_parser_74: } private: - /// the actual parser + /*! + @brief the actual parser + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ basic_json parse_internal(bool keep) { auto result = basic_json(value_t::discarded); @@ -11921,6 +11960,9 @@ basic_json_parser_74: return last_token; } + /*! + @throw parse_error.101 if expected token did not occur + */ void expect(typename lexer::token_type t) const { if (t != last_token) @@ -11934,6 +11976,9 @@ basic_json_parser_74: } } + /*! + @throw parse_error.101 if unexpected token occurred + */ void unexpect(typename lexer::token_type t) const { if (t == last_token) @@ -11985,12 +12030,12 @@ basic_json_parser_74: empty string is assumed which references the whole JSON value - @throw parse_error.107 if reference token is nonempty and does not - begin with a slash (`/`); example: `"JSON pointer must be empty or - begin with / - was: 'foo'"` - @throw parse_error.108 if a tilde (`~`) is not followed by `0` - (representing `~`) or `1` (representing `/`); example: `"escape - character '~' must be followed with '0' or '1'"` + @throw parse_error.107 if the given JSON pointer @a s is nonempty and + does not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s + is not followed by `0` (representing `~`) or `1` (representing `/`); + see example below @liveexample{The example shows the construction several valid JSON pointers as well as the exceptional behavior.,json_pointer} @@ -12033,7 +12078,10 @@ basic_json_parser_74: } private: - /// remove and return last reference pointer + /*! + @brief remove and return last reference pointer + @throw out_of_range.405 if JSON pointer has no parent + */ std::string pop_back() { if (is_root()) @@ -12068,6 +12116,9 @@ basic_json_parser_74: @brief create and return a reference to the pointed to value @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened */ reference get_and_create(reference j) const { @@ -12147,9 +12198,9 @@ basic_json_parser_74: @complexity Linear in the length of the JSON pointer. - @throw out_of_range.404 if the JSON pointer can not be resolved - @throw parse_error.106 if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved */ reference get_unchecked(pointer ptr) const { @@ -12225,6 +12276,12 @@ basic_json_parser_74: return *ptr; } + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ reference get_checked(pointer ptr) const { for (const auto& reference_token : reference_tokens) @@ -12283,6 +12340,11 @@ basic_json_parser_74: @return const reference to the JSON value pointed to by the JSON pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved */ const_reference get_unchecked(const_pointer ptr) const { @@ -12335,6 +12397,12 @@ basic_json_parser_74: return *ptr; } + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ const_reference get_checked(const_pointer ptr) const { for (const auto& reference_token : reference_tokens) @@ -12386,7 +12454,15 @@ basic_json_parser_74: return *ptr; } - /// split the string input to reference tokens + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ static std::vector split(const std::string& reference_string) { std::vector result; @@ -12447,7 +12523,6 @@ basic_json_parser_74: return result; } - private: /*! @brief replace all occurrences of a substring by another string @@ -12456,7 +12531,8 @@ basic_json_parser_74: @param[in] f the substring to replace with @a t @param[in] t the string to replace @a f - @pre The search string @a f must not be empty. + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** @since version 2.0.0 */ @@ -12556,6 +12632,11 @@ basic_json_parser_74: @param[in] value flattened JSON @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened */ static basic_json unflatten(const basic_json& value) { @@ -12585,7 +12666,6 @@ basic_json_parser_74: return result; } - private: friend bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept { @@ -12634,9 +12714,9 @@ basic_json_parser_74: @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,operatorjson_pointer} @@ -12661,9 +12741,10 @@ basic_json_parser_74: @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} @@ -12686,9 +12767,10 @@ basic_json_parser_74: @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,at_json_pointer} @@ -12711,9 +12793,10 @@ basic_json_parser_74: @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,at_json_pointer_const} @@ -12773,6 +12856,9 @@ basic_json_parser_74: @complexity Linear in the size the JSON value. + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitve + @liveexample{The following code shows how a flattened JSON object is unflattened into the original nested JSON object.,unflatten} @@ -12810,13 +12896,22 @@ basic_json_parser_74: any case, the original value is not changed: the patch is applied to a copy of the value. + @throw parse_error.104 if the JSON patch does not consist of an array of + objects + + @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory + attributes are missing); example: `"operation add must have member path"` + + @throw out_of_range.401 if an array index is out of range. + @throw out_of_range.403 if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: `"key baz not found"` - @throw invalid_argument if the JSON patch is malformed (e.g., mandatory - attributes are missing); example: `"operation add must have member path"` - @throw parse_error.104 if the JSON patch does not consist of an array of - objects + + @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", + "move") + + @throw other_error.501 if "test" operation was unsuccessful @complexity Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 3044cf6b..d2f6346f 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -3653,7 +3653,7 @@ class basic_json @return copy of the JSON value, converted to type @a ValueType - @throw std::domain_error in case passed type @a ValueType is incompatible + @throw type_error.302 in case passed type @a ValueType is incompatible to JSON, thrown by @ref get() const @complexity Linear in the size of the JSON value. @@ -4089,7 +4089,7 @@ class basic_json @return const reference to the element at key @a key - @throw std::domain_error if JSON is not an object; example: `"cannot use + @throw type_error.305 if JSON is not an object; example: `"cannot use operator[] with null"` @complexity Logarithmic in the size of the container. @@ -4366,7 +4366,7 @@ class basic_json assertions**). @post The JSON value remains unchanged. - @throw std::out_of_range when called on `null` value + @throw invalid_iterator.214 when called on `null` value @liveexample{The following code shows an example for `front()`.,front} @@ -4409,7 +4409,7 @@ class basic_json assertions**). @post The JSON value remains unchanged. - @throw std::out_of_range when called on `null` value. + @throw invalid_iterator.214 when called on `null` value. @liveexample{The following code shows an example for `back()`.,back} @@ -4699,7 +4699,7 @@ class basic_json @throw type_error.307 when called on a type other than JSON object; example: `"cannot use erase() with null"` - @throw std::out_of_range when `idx >= size()`; example: `"array index 17 + @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 is out of range"` @complexity Linear in distance between @a idx and the end of the container. @@ -7033,6 +7033,8 @@ class basic_json @throw parse_error.101 if a parse error occurs; example: `""unexpected end of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @@ -7064,6 +7066,10 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7100,6 +7106,11 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @throw parse_error.111 if input stream is in a bad state + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7159,6 +7170,10 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7229,6 +7244,10 @@ class basic_json @return result of the deserialization + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @a cb has a super-linear complexity. @@ -7261,7 +7280,10 @@ class basic_json @param[in,out] i input stream to read a serialized JSON value from @param[in,out] j JSON value to write the deserialized input to - @throw std::invalid_argument in case of parse errors + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + @throw parse_error.111 if input stream is in a bad state @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. @@ -7964,9 +7986,9 @@ class basic_json @return deserialized JSON value - @throw std::invalid_argument if unsupported features from MessagePack were + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from MessagePack were used in the given vector @a v or if the input is not valid MessagePack - @throw std::out_of_range if the given vector ends prematurely @sa https://github.com/msgpack/msgpack/blob/master/spec.md */ @@ -8206,9 +8228,9 @@ class basic_json @return deserialized JSON value - @throw std::invalid_argument if unsupported features from CBOR were used in - the given vector @a v or if the input is not valid CBOR - @throw std::out_of_range if the given vector ends prematurely + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from CBOR were + used in the given vector @a v or if the input is not valid CBOR @sa https://tools.ietf.org/html/rfc7049 */ @@ -8730,9 +8752,9 @@ class basic_json @param[in] start_index the index to start reading from @a v (0 by default) @return deserialized JSON value - @throw std::invalid_argument if unsupported features from MessagePack were + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from MessagePack were used in the given vector @a v or if the input is not valid MessagePack - @throw std::out_of_range if the given vector ends prematurely @complexity Linear in the size of the byte vector @a v. @@ -8793,9 +8815,9 @@ class basic_json @param[in] start_index the index to start reading from @a v (0 by default) @return deserialized JSON value - @throw std::invalid_argument if unsupported features from CBOR were used in - the given vector @a v or if the input is not valid MessagePack - @throw std::out_of_range if the given vector ends prematurely + @throw parse_error.110 if the given vector ends prematurely + @throw parse_error.112 if unsupported features from CBOR were + used in the given vector @a v or if the input is not valid CBOR @complexity Linear in the size of the byte vector @a v. @@ -9909,7 +9931,10 @@ class basic_json m_limit = m_content + len; } - /// a lexer from an input stream + /*! + @brief a lexer from an input stream + @throw parse_error.111 if input stream is in a bad state + */ explicit lexer(std::istream& s) : m_stream(&s), m_line_buffer() { @@ -10322,7 +10347,7 @@ class basic_json @return string value of current token without opening and closing quotes - @throw parse_error.102 if to_unicode fails + @throw parse_error.102 if to_unicode fails or surrogate error @throw parse_error.103 if to_unicode fails */ string_t get_string() const @@ -10719,7 +10744,10 @@ class basic_json m_lexer(reinterpret_cast(buff), std::strlen(buff)) {} - /// a parser reading from an input stream + /*! + @brief a parser reading from an input stream + @throw parse_error.111 if input stream is in a bad state + */ parser(std::istream& is, const parser_callback_t cb = nullptr) : callback(cb), m_lexer(is) {} @@ -10735,7 +10763,12 @@ class basic_json static_cast(std::distance(first, last))) {} - /// public parser interface + /*! + @brief public parser interface + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ basic_json parse() { // read first token @@ -10752,7 +10785,12 @@ class basic_json } private: - /// the actual parser + /*! + @brief the actual parser + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ basic_json parse_internal(bool keep) { auto result = basic_json(value_t::discarded); @@ -10955,6 +10993,9 @@ class basic_json return last_token; } + /*! + @throw parse_error.101 if expected token did not occur + */ void expect(typename lexer::token_type t) const { if (t != last_token) @@ -10968,6 +11009,9 @@ class basic_json } } + /*! + @throw parse_error.101 if unexpected token occurred + */ void unexpect(typename lexer::token_type t) const { if (t == last_token) @@ -11019,12 +11063,12 @@ class basic_json empty string is assumed which references the whole JSON value - @throw parse_error.107 if reference token is nonempty and does not - begin with a slash (`/`); example: `"JSON pointer must be empty or - begin with / - was: 'foo'"` - @throw parse_error.108 if a tilde (`~`) is not followed by `0` - (representing `~`) or `1` (representing `/`); example: `"escape - character '~' must be followed with '0' or '1'"` + @throw parse_error.107 if the given JSON pointer @a s is nonempty and + does not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s + is not followed by `0` (representing `~`) or `1` (representing `/`); + see example below @liveexample{The example shows the construction several valid JSON pointers as well as the exceptional behavior.,json_pointer} @@ -11067,7 +11111,10 @@ class basic_json } private: - /// remove and return last reference pointer + /*! + @brief remove and return last reference pointer + @throw out_of_range.405 if JSON pointer has no parent + */ std::string pop_back() { if (is_root()) @@ -11102,6 +11149,9 @@ class basic_json @brief create and return a reference to the pointed to value @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened */ reference get_and_create(reference j) const { @@ -11181,9 +11231,9 @@ class basic_json @complexity Linear in the length of the JSON pointer. - @throw out_of_range.404 if the JSON pointer can not be resolved - @throw parse_error.106 if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved */ reference get_unchecked(pointer ptr) const { @@ -11259,6 +11309,12 @@ class basic_json return *ptr; } + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ reference get_checked(pointer ptr) const { for (const auto& reference_token : reference_tokens) @@ -11317,6 +11373,11 @@ class basic_json @return const reference to the JSON value pointed to by the JSON pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved */ const_reference get_unchecked(const_pointer ptr) const { @@ -11369,6 +11430,12 @@ class basic_json return *ptr; } + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ const_reference get_checked(const_pointer ptr) const { for (const auto& reference_token : reference_tokens) @@ -11420,7 +11487,15 @@ class basic_json return *ptr; } - /// split the string input to reference tokens + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ static std::vector split(const std::string& reference_string) { std::vector result; @@ -11481,7 +11556,6 @@ class basic_json return result; } - private: /*! @brief replace all occurrences of a substring by another string @@ -11490,7 +11564,8 @@ class basic_json @param[in] f the substring to replace with @a t @param[in] t the string to replace @a f - @pre The search string @a f must not be empty. + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** @since version 2.0.0 */ @@ -11590,6 +11665,11 @@ class basic_json @param[in] value flattened JSON @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened */ static basic_json unflatten(const basic_json& value) { @@ -11619,7 +11699,6 @@ class basic_json return result; } - private: friend bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept { @@ -11668,9 +11747,9 @@ class basic_json @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,operatorjson_pointer} @@ -11695,9 +11774,10 @@ class basic_json @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} @@ -11720,9 +11800,10 @@ class basic_json @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,at_json_pointer} @@ -11745,9 +11826,10 @@ class basic_json @complexity Constant. - @throw std::out_of_range if the JSON pointer can not be resolved - @throw std::domain_error if an array index begins with '0' - @throw std::invalid_argument if an array index was not a number + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved @liveexample{The behavior is shown in the example.,at_json_pointer_const} @@ -11807,6 +11889,9 @@ class basic_json @complexity Linear in the size the JSON value. + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitve + @liveexample{The following code shows how a flattened JSON object is unflattened into the original nested JSON object.,unflatten} @@ -11844,13 +11929,22 @@ class basic_json any case, the original value is not changed: the patch is applied to a copy of the value. + @throw parse_error.104 if the JSON patch does not consist of an array of + objects + + @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory + attributes are missing); example: `"operation add must have member path"` + + @throw out_of_range.401 if an array index is out of range. + @throw out_of_range.403 if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: `"key baz not found"` - @throw invalid_argument if the JSON patch is malformed (e.g., mandatory - attributes are missing); example: `"operation add must have member path"` - @throw parse_error.104 if the JSON patch does not consist of an array of - objects + + @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", + "move") + + @throw other_error.501 if "test" operation was unsuccessful @complexity Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by