1 #ifndef SIMDJSON_ERROR_H
2 #define SIMDJSON_ERROR_H
4 #include "simdjson/base.h"
120 struct simdjson_result_base :
protected std::pair<T, error_code> {
125 simdjson_inline simdjson_result_base() noexcept;
130 simdjson_inline simdjson_result_base(
error_code error) noexcept;
135 simdjson_inline simdjson_result_base(T &&value) noexcept;
140 simdjson_inline simdjson_result_base(T &&value,
error_code error) noexcept;
148 simdjson_inline
void tie(T &value,
error_code &error) && noexcept;
155 simdjson_inline
error_code get(T &value) && noexcept;
160 simdjson_inline
error_code error() const noexcept;
162 #if SIMDJSON_EXCEPTIONS
169 simdjson_inline T& value() & noexcept(
false);
176 simdjson_inline T&& value() && noexcept(
false);
183 simdjson_inline T&& take_value() && noexcept(
false);
190 simdjson_inline
operator T&&() && noexcept(
false);
197 simdjson_inline
const T& value_unsafe() const& noexcept;
203 simdjson_inline T&& value_unsafe() && noexcept;
239 simdjson_inline
void tie(T &value,
error_code &error) && noexcept;
246 simdjson_warn_unused simdjson_inline
error_code get(T &value) && noexcept;
251 simdjson_inline
error_code error()
const noexcept;
253 #if SIMDJSON_EXCEPTIONS
260 simdjson_inline T&
value() & noexcept(
false);
267 simdjson_inline T&&
value() && noexcept(
false);
274 simdjson_inline T&& take_value() && noexcept(
false);
281 simdjson_inline
operator T&&() && noexcept(
false);
294 simdjson_inline T&& value_unsafe() && noexcept;
298 #if SIMDJSON_EXCEPTIONS
304 #ifndef SIMDJSON_DISABLE_DEPRECATED_API
313 [[deprecated(
"Error codes should be stored and returned as `error_code`, use `error_message()` instead.")]]
The top level simdjson namespace, containing everything the library provides.
std::ostream & operator<<(std::ostream &out, error_code error) noexcept
Write the error message to the output stream.
const char * error_message(error_code error) noexcept
It is the convention throughout the code that the macro SIMDJSON_DEVELOPMENT_CHECKS determines whethe...
error_code
All possible errors returned by simdjson.
@ SCALAR_DOCUMENT_AS_VALUE
A scalar document is treated as a value.
@ DEPTH_ERROR
Your document exceeds the user-specified depth limitation.
@ UNCLOSED_STRING
missing quote at the end
@ INCORRECT_TYPE
JSON element has a different type than user expected.
@ CAPACITY
This parser can't support a document that big.
@ OUT_OF_ORDER_ITERATION
tried to iterate an array or object out of order (checked when SIMDJSON_DEVELOPMENT_CHECKS=1)
@ UTF8_ERROR
the input is not valid UTF-8
@ OUT_OF_BOUNDS
Attempted to access location outside of document.
@ TAPE_ERROR
Something went wrong, this is a generic error.
@ NO_SUCH_FIELD
JSON field not found in object.
@ UNSUPPORTED_ARCHITECTURE
unsupported architecture
@ N_ATOM_ERROR
Problem while parsing an atom starting with the letter 'n'.
@ EMPTY
no structural element found
@ INVALID_URI_FRAGMENT
Invalid URI fragment.
@ INDEX_OUT_OF_BOUNDS
JSON array index too large.
@ NUMBER_OUT_OF_RANGE
JSON number does not fit in 64 bits.
@ STRING_ERROR
Problem while parsing a string.
@ MEMALLOC
Error allocating memory, most likely out of memory.
@ T_ATOM_ERROR
Problem while parsing an atom starting with the letter 't'.
@ TRAILING_CONTENT
Unexpected trailing content in the JSON input.
@ INCOMPLETE_ARRAY_OR_OBJECT
The document ends early.
@ UNEXPECTED_ERROR
indicative of a bug in simdjson
@ UNINITIALIZED
unknown error, or uninitialized document
@ UNESCAPED_CHARS
found unescaped characters in a string.
@ IO_ERROR
Error reading a file.
@ NUMBER_ERROR
Problem while parsing a number.
@ BIGINT_ERROR
The integer value exceeds 64 bits.
@ F_ATOM_ERROR
Problem while parsing an atom starting with the letter 'f'.
@ PARSER_IN_USE
parser is already in use.
@ INSUFFICIENT_PADDING
The JSON doesn't have enough padding for simdjson to safely parse it.
@ INVALID_JSON_POINTER
Invalid JSON pointer syntax.
Exception thrown when an exception-supporting simdjson method is called.
const char * what() const noexcept override
The error message.
error_code error() const noexcept
The error code.
simdjson_error(error_code error) noexcept
Create an exception from a simdjson error code.
The result of a simdjson operation that could fail.
simdjson_inline const T & value_unsafe() const &noexcept
Get the result value.
simdjson_inline T && value() &&noexcept(false)
Take the result value (move it).
simdjson_inline T & value() &noexcept(false)
Get the result value.