Files
simdjson-simdjson/include/simdjson/error.h
T
2020-03-02 14:49:03 -08:00

48 lines
1.9 KiB
C++

#ifndef SIMDJSON_ERROR_H
#define SIMDJSON_ERROR_H
#include <string>
namespace simdjson {
enum error_code {
SUCCESS = 0,
SUCCESS_AND_HAS_MORE, //No errors and buffer still has more data
CAPACITY, // This parser can't support a document that big
MEMALLOC, // Error allocating memory, most likely out of memory
TAPE_ERROR, // Something went wrong while writing to the tape (stage 2), this
// is a generic 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'
F_ATOM_ERROR, // Problem while parsing an atom starting with the letter 'f'
N_ATOM_ERROR, // Problem while parsing an atom starting with the letter 'n'
NUMBER_ERROR, // Problem while parsing a number
UTF8_ERROR, // the input is not valid UTF-8
UNINITIALIZED, // unknown error, or uninitialized document
EMPTY, // no structural element found
UNESCAPED_CHARS, // found unescaped characters in a string.
UNCLOSED_STRING, // missing quote at the end
UNSUPPORTED_ARCHITECTURE, // unsupported architecture
INCORRECT_TYPE, // JSON element has a different type than user expected
NUMBER_OUT_OF_RANGE, // JSON number does not fit in 64 bits
NO_SUCH_FIELD, // JSON field not found in object
UNEXPECTED_ERROR // indicative of a bug in simdjson
};
const std::string &error_message(error_code error) noexcept;
struct invalid_json : public std::exception {
invalid_json(error_code _error) : error{_error} { }
const char *what() const noexcept { return error_message(error).c_str(); }
error_code error;
};
// TODO these are deprecated, remove
using ErrorValues = error_code;
inline const std::string &error_message(int error) noexcept { return error_message(error_code(error)); }
} // namespace simdjson
#endif // SIMDJSON_ERROR_H