184 lines
3.5 KiB
C++
184 lines
3.5 KiB
C++
|
//
|
||
|
// Copyright (c) 2019 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_ERROR_HPP
|
||
|
#define BOOST_JSON_ERROR_HPP
|
||
|
|
||
|
#include <boost/json/detail/config.hpp>
|
||
|
#include <boost/json/system_error.hpp>
|
||
|
|
||
|
namespace boost {
|
||
|
namespace json {
|
||
|
|
||
|
/** Error codes returned by JSON operations
|
||
|
|
||
|
*/
|
||
|
enum class error
|
||
|
{
|
||
|
//
|
||
|
// parse errors
|
||
|
//
|
||
|
|
||
|
/// syntax error
|
||
|
syntax = 1,
|
||
|
|
||
|
/// extra data
|
||
|
extra_data,
|
||
|
|
||
|
/// incomplete JSON
|
||
|
incomplete,
|
||
|
|
||
|
/// exponent too large
|
||
|
exponent_overflow,
|
||
|
|
||
|
/// too deep
|
||
|
too_deep,
|
||
|
|
||
|
/// illegal leading surrogate
|
||
|
illegal_leading_surrogate,
|
||
|
|
||
|
/// illegal trailing surrogate
|
||
|
illegal_trailing_surrogate,
|
||
|
|
||
|
/// expected hex digit
|
||
|
expected_hex_digit,
|
||
|
|
||
|
/// expected utf16 escape
|
||
|
expected_utf16_escape,
|
||
|
|
||
|
/// An object contains too many elements
|
||
|
object_too_large,
|
||
|
|
||
|
/// An array contains too many elements
|
||
|
array_too_large,
|
||
|
|
||
|
/// A key is too large
|
||
|
key_too_large,
|
||
|
|
||
|
/// A string is too large
|
||
|
string_too_large,
|
||
|
|
||
|
/// A number is too large
|
||
|
number_too_large,
|
||
|
|
||
|
/// error occured when trying to read input
|
||
|
input_error,
|
||
|
|
||
|
//
|
||
|
// generic errors
|
||
|
//
|
||
|
|
||
|
/// An exception was thrown during operation
|
||
|
exception,
|
||
|
|
||
|
/// A requested element is outside of container's range
|
||
|
out_of_range,
|
||
|
|
||
|
/// test failure
|
||
|
test_failure,
|
||
|
|
||
|
//
|
||
|
// JSON Pointer errors
|
||
|
//
|
||
|
|
||
|
/// missing slash character before token reference
|
||
|
missing_slash,
|
||
|
|
||
|
/// invalid escape sequence
|
||
|
invalid_escape,
|
||
|
|
||
|
/// token should be a number but cannot be parsed as such
|
||
|
token_not_number,
|
||
|
|
||
|
/// current value is neither an object nor an array
|
||
|
value_is_scalar,
|
||
|
|
||
|
/// current value does not contain referenced value
|
||
|
not_found,
|
||
|
|
||
|
/// token cannot be represented by std::size_t
|
||
|
token_overflow,
|
||
|
|
||
|
/// past-the-end index is not supported
|
||
|
past_the_end,
|
||
|
|
||
|
//
|
||
|
// Conversion errors
|
||
|
//
|
||
|
|
||
|
/// JSON number was expected during conversion
|
||
|
not_number,
|
||
|
|
||
|
/// number cast is not exact
|
||
|
not_exact,
|
||
|
|
||
|
/// JSON null was expected during conversion
|
||
|
not_null,
|
||
|
|
||
|
/// JSON bool was expected during conversion
|
||
|
not_bool,
|
||
|
|
||
|
/// JSON array was expected during conversion
|
||
|
not_array,
|
||
|
|
||
|
/// JSON object was expected during conversion
|
||
|
not_object,
|
||
|
|
||
|
/// JSON string was expected during conversion
|
||
|
not_string,
|
||
|
|
||
|
/// std::int64_t was expected during conversion
|
||
|
not_int64,
|
||
|
|
||
|
/// std::uint64_t was expected during conversion
|
||
|
not_uint64,
|
||
|
|
||
|
/// `double` was expected during conversion
|
||
|
not_double,
|
||
|
|
||
|
/// JSON integer was expected during conversion
|
||
|
not_integer,
|
||
|
|
||
|
/// source composite has size incompatible with target
|
||
|
size_mismatch,
|
||
|
|
||
|
/// none of the possible conversions were successful
|
||
|
exhausted_variants,
|
||
|
|
||
|
/// the key does not correspond to a known name
|
||
|
unknown_name,
|
||
|
};
|
||
|
|
||
|
/** Error conditions corresponding to JSON errors
|
||
|
*/
|
||
|
enum class condition
|
||
|
{
|
||
|
/// A parser-related error
|
||
|
parse_error = 1,
|
||
|
|
||
|
/// An error related to parsing JSON pointer string
|
||
|
pointer_parse_error,
|
||
|
|
||
|
/// An error related to applying JSON pointer string to a value
|
||
|
pointer_use_error,
|
||
|
|
||
|
/// A conversion error
|
||
|
conversion_error,
|
||
|
|
||
|
/// A generic error
|
||
|
generic_error,
|
||
|
};
|
||
|
|
||
|
} // namespace json
|
||
|
} // namespace boost
|
||
|
|
||
|
#include <boost/json/impl/error.hpp>
|
||
|
|
||
|
#endif
|