2 namespace SIMDJSON_IMPLEMENTATION {
20 class value_iterator {
23 json_iterator *_json_iter{};
29 token_position _start_position{};
32 simdjson_inline value_iterator() noexcept = default;
37 simdjson_inline
void start_document() noexcept;
44 simdjson_warn_unused simdjson_inline
error_code skip_child() noexcept;
49 simdjson_inline
bool at_end() const noexcept;
54 simdjson_inline
bool at_start() const noexcept;
59 simdjson_inline
bool is_open() const noexcept;
64 simdjson_inline
bool at_first_field() const noexcept;
69 simdjson_inline
void abandon() noexcept;
74 simdjson_inline value_iterator child_value() const noexcept;
79 simdjson_inline int32_t depth() const noexcept;
86 simdjson_inline simdjson_result<
json_type> type() const noexcept;
103 simdjson_warn_unused simdjson_inline simdjson_result<
bool> start_object() noexcept;
111 simdjson_warn_unused simdjson_inline simdjson_result<
bool> start_root_object() noexcept;
122 simdjson_warn_unused simdjson_inline simdjson_result<
bool> started_object() noexcept;
132 simdjson_warn_unused simdjson_inline simdjson_result<
bool> started_root_object() noexcept;
144 simdjson_warn_unused simdjson_inline simdjson_result<
bool> has_next_field() noexcept;
149 simdjson_warn_unused simdjson_inline simdjson_result<raw_json_string> field_key() noexcept;
154 simdjson_warn_unused simdjson_inline
error_code field_value() noexcept;
172 simdjson_warn_unused simdjson_inline
error_code find_field(const std::string_view key) noexcept;
191 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> find_field_raw(const std::string_view key) noexcept;
211 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> find_field_unordered_raw(const std::string_view key) noexcept;
228 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> start_array() noexcept;
236 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> start_root_array() noexcept;
247 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> started_array() noexcept;
257 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> started_root_array() noexcept;
268 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> has_next_element() noexcept;
273 simdjson_warn_unused simdjson_inline value_iterator child() const noexcept;
283 simdjson_warn_unused simdjson_inline
simdjson_result<std::string_view> get_string(
bool allow_replacement) noexcept;
284 simdjson_warn_unused simdjson_inline
simdjson_result<std::string_view> get_wobbly_string() noexcept;
286 simdjson_warn_unused simdjson_inline
simdjson_result<uint64_t> get_uint64() noexcept;
287 simdjson_warn_unused simdjson_inline
simdjson_result<uint64_t> get_uint64_in_string() noexcept;
288 simdjson_warn_unused simdjson_inline
simdjson_result<int64_t> get_int64() noexcept;
289 simdjson_warn_unused simdjson_inline
simdjson_result<int64_t> get_int64_in_string() noexcept;
290 simdjson_warn_unused simdjson_inline
simdjson_result<
double> get_double() noexcept;
291 simdjson_warn_unused simdjson_inline
simdjson_result<
double> get_double_in_string() noexcept;
292 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> get_bool() noexcept;
293 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> is_null() noexcept;
294 simdjson_warn_unused simdjson_inline
bool is_negative() noexcept;
295 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> is_integer() noexcept;
299 simdjson_warn_unused simdjson_inline
simdjson_result<std::string_view> get_root_string(
bool check_trailing,
bool allow_replacement) noexcept;
300 simdjson_warn_unused simdjson_inline
simdjson_result<std::string_view> get_root_wobbly_string(
bool check_trailing) noexcept;
302 simdjson_warn_unused simdjson_inline
simdjson_result<uint64_t> get_root_uint64(
bool check_trailing) noexcept;
303 simdjson_warn_unused simdjson_inline
simdjson_result<uint64_t> get_root_uint64_in_string(
bool check_trailing) noexcept;
304 simdjson_warn_unused simdjson_inline
simdjson_result<int64_t> get_root_int64(
bool check_trailing) noexcept;
305 simdjson_warn_unused simdjson_inline
simdjson_result<int64_t> get_root_int64_in_string(
bool check_trailing) noexcept;
306 simdjson_warn_unused simdjson_inline
simdjson_result<
double> get_root_double(
bool check_trailing) noexcept;
307 simdjson_warn_unused simdjson_inline
simdjson_result<
double> get_root_double_in_string(
bool check_trailing) noexcept;
308 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> get_root_bool(
bool check_trailing) noexcept;
309 simdjson_warn_unused simdjson_inline
bool is_root_negative() noexcept;
310 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> is_root_integer(
bool check_trailing) noexcept;
312 simdjson_warn_unused simdjson_inline
simdjson_result<
number> get_root_number(
bool check_trailing) noexcept;
313 simdjson_warn_unused simdjson_inline
simdjson_result<
bool> is_root_null(
bool check_trailing) noexcept;
315 simdjson_inline
error_code error() const noexcept;
316 simdjson_inline uint8_t *&string_buf_loc() noexcept;
317 simdjson_inline const json_iterator &json_iter() const noexcept;
318 simdjson_inline json_iterator &json_iter() noexcept;
320 simdjson_inline
void assert_is_valid() const noexcept;
321 simdjson_inline
bool is_valid() const noexcept;
342 simdjson_inline
void move_at_start() noexcept;
350 simdjson_inline
void move_at_container_start() noexcept;
352 inline std::
string to_string() const noexcept;
353 simdjson_inline value_iterator(json_iterator *json_iter,
depth_t depth, token_position start_index) noexcept;
355 simdjson_inline
simdjson_result<
bool> parse_null(const uint8_t *json) const noexcept;
356 simdjson_inline
simdjson_result<
bool> parse_bool(const uint8_t *json) const noexcept;
357 simdjson_inline const uint8_t *peek_start() const noexcept;
358 simdjson_inline uint32_t peek_start_length() const noexcept;
389 simdjson_inline
void advance_scalar(const
char *type) noexcept;
390 simdjson_inline
void advance_root_scalar(const
char *type) noexcept;
391 simdjson_inline
void advance_non_root_scalar(const
char *type) noexcept;
393 simdjson_inline const uint8_t *peek_scalar(const
char *type) noexcept;
394 simdjson_inline const uint8_t *peek_root_scalar(const
char *type) noexcept;
395 simdjson_inline const uint8_t *peek_non_root_scalar(const
char *type) noexcept;
398 simdjson_inline
error_code start_container(uint8_t start_char, const
char *incorrect_type_message, const
char *type) noexcept;
399 simdjson_inline
error_code end_container() noexcept;
407 simdjson_inline
simdjson_result<const uint8_t *> advance_to_value() noexcept;
409 simdjson_inline
error_code incorrect_type_error(const
char *message) const noexcept;
410 simdjson_inline
error_code error_unless_more_tokens(uint32_t tokens=1) const noexcept;
412 simdjson_inline
bool is_at_start() const noexcept;
419 simdjson_inline
bool is_at_iterator_start() const noexcept;
428 simdjson_inline
bool is_at_key() const noexcept;
430 inline
void assert_at_start() const noexcept;
431 inline
void assert_at_container_start() const noexcept;
432 inline
void assert_at_root() const noexcept;
433 inline
void assert_at_child() const noexcept;
434 inline
void assert_at_next() const noexcept;
435 inline
void assert_at_non_root_start() const noexcept;
438 simdjson_inline token_position start_position() const noexcept;
441 simdjson_inline token_position position() const noexcept;
443 simdjson_inline token_position last_position() const noexcept;
445 simdjson_inline token_position end_position() const noexcept;
464 simdjson_inline
simdjson_result(SIMDJSON_IMPLEMENTATION::ondemand::value_iterator &&value) noexcept;
A forward-only JSON array.
A string escaped per JSON rules, terminated with quote (").
An ephemeral JSON value returned during iteration.
number_type
The type of a JSON number.
json_type
The type of a JSON value.
@ object
A JSON object ( { "a": 1, "b" 2, ... } )
@ array
A JSON array ( [ 1, 2, 3 ... ] )
int32_t depth_t
Represents the depth of a JSON value (number of nested arrays/objects).
We want to support argument-dependent lookup (ADL).
error_code
All possible errors returned by simdjson.
std::string to_string(T x)
Converts JSON to a string.
The result of a simdjson operation that could fail.
A type representing a JSON number.
The result of a simdjson operation that could fail.