mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
documenting fatal errors
This commit is contained in:
@@ -6,6 +6,11 @@
|
||||
#include <iostream>
|
||||
|
||||
namespace simdjson {
|
||||
|
||||
inline bool is_fatal(error_code error) noexcept {
|
||||
return error == TAPE_ERROR || error == INCOMPLETE_ARRAY_OR_OBJECT;
|
||||
}
|
||||
|
||||
namespace internal {
|
||||
// We store the error code so we can validate the error message is associated with the right code
|
||||
struct error_code_info {
|
||||
|
||||
@@ -20,7 +20,7 @@ enum error_code {
|
||||
SUCCESS = 0, ///< No error
|
||||
CAPACITY, ///< This parser can't support a document that big
|
||||
MEMALLOC, ///< Error allocating memory, most likely out of memory
|
||||
TAPE_ERROR, ///< Something went wrong, this is a generic error
|
||||
TAPE_ERROR, ///< Something went wrong, this is a generic error. Fatal/unrecoverable error.
|
||||
DEPTH_ERROR, ///< Your document exceeds the user-specified depth limitation
|
||||
STRING_ERROR, ///< Problem while parsing a string
|
||||
T_ATOM_ERROR, ///< Problem while parsing an atom starting with the letter 't'
|
||||
@@ -45,13 +45,21 @@ enum error_code {
|
||||
PARSER_IN_USE, ///< parser is already in use.
|
||||
OUT_OF_ORDER_ITERATION, ///< tried to iterate an array or object out of order (checked when SIMDJSON_DEVELOPMENT_CHECKS=1)
|
||||
INSUFFICIENT_PADDING, ///< The JSON doesn't have enough padding for simdjson to safely parse it.
|
||||
INCOMPLETE_ARRAY_OR_OBJECT, ///< The document ends early.
|
||||
INCOMPLETE_ARRAY_OR_OBJECT, ///< The document ends early. Fatal/unrecoverable error.
|
||||
SCALAR_DOCUMENT_AS_VALUE, ///< A scalar document is treated as a value.
|
||||
OUT_OF_BOUNDS, ///< Attempted to access location outside of document.
|
||||
TRAILING_CONTENT, ///< Unexpected trailing content in the JSON input
|
||||
NUM_ERROR_CODES
|
||||
};
|
||||
|
||||
/**
|
||||
* Some errors are fatal and invalidate the document. This function returns true if the
|
||||
* error is fatal. It returns true for TAPE_ERROR and INCOMPLETE_ARRAY_OR_OBJECT.
|
||||
* Once a fatal error is encountered, the on-demand document is no longer valid and
|
||||
* processing should stop.
|
||||
*/
|
||||
inline bool is_fatal(error_code error) noexcept;
|
||||
|
||||
/**
|
||||
* It is the convention throughout the code that the macro SIMDJSON_DEVELOPMENT_CHECKS determines whether
|
||||
* we check for OUT_OF_ORDER_ITERATION. The logic behind it is that these errors only occurs when the code
|
||||
|
||||
@@ -125,7 +125,8 @@ public:
|
||||
*
|
||||
* @returns Whether the object had any fields (returns false for empty).
|
||||
* @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
|
||||
* array or object is incomplete).
|
||||
* array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
|
||||
* invalidates the document.
|
||||
*/
|
||||
simdjson_warn_unused simdjson_inline simdjson_result<bool> started_object() noexcept;
|
||||
/**
|
||||
@@ -135,7 +136,8 @@ public:
|
||||
*
|
||||
* @returns Whether the object had any fields (returns false for empty).
|
||||
* @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
|
||||
* array or object is incomplete).
|
||||
* array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
|
||||
* invalidates the document.
|
||||
*/
|
||||
simdjson_warn_unused simdjson_inline simdjson_result<bool> started_root_object() noexcept;
|
||||
|
||||
@@ -257,7 +259,8 @@ public:
|
||||
*
|
||||
* @returns Whether the array had any elements (returns false for empty).
|
||||
* @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
|
||||
* array or object is incomplete).
|
||||
* array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
|
||||
* invalidates the document.
|
||||
*/
|
||||
simdjson_warn_unused simdjson_inline simdjson_result<bool> started_array() noexcept;
|
||||
/**
|
||||
@@ -267,7 +270,8 @@ public:
|
||||
*
|
||||
* @returns Whether the array had any elements (returns false for empty).
|
||||
* @error INCOMPLETE_ARRAY_OR_OBJECT If there are no more tokens (implying the *parent*
|
||||
* array or object is incomplete).
|
||||
* array or object is incomplete). An INCOMPLETE_ARRAY_OR_OBJECT is an unrecoverable error that
|
||||
* invalidates the document.
|
||||
*/
|
||||
simdjson_warn_unused simdjson_inline simdjson_result<bool> started_root_array() noexcept;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user