#ifndef SIMDJSON_ERROR_H #define SIMDJSON_ERROR_H #include 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