2 namespace SIMDJSON_IMPLEMENTATION {
10 class raw_json_string;
20 token_iterator token{};
21 ondemand::parser *parser{};
27 uint8_t *_string_buf_loc{};
54 token_position _root{};
61 bool _streaming{
false};
64 simdjson_inline json_iterator() noexcept = default;
65 simdjson_inline json_iterator(json_iterator &&other) noexcept;
66 simdjson_inline json_iterator &operator=(json_iterator &&other) noexcept;
67 simdjson_inline explicit json_iterator(const json_iterator &other) noexcept = default;
68 simdjson_inline json_iterator &operator=(const json_iterator &other) noexcept = default;
72 simdjson_warn_unused simdjson_inline
error_code skip_child(
depth_t parent_depth) noexcept;
77 simdjson_inline
bool at_root() const noexcept;
85 simdjson_inline
bool streaming() const noexcept;
90 simdjson_inline token_position root_position() const noexcept;
94 simdjson_inline
void assert_at_document_depth() const noexcept;
98 simdjson_inline
void assert_at_root() const noexcept;
103 simdjson_inline
bool at_end() const noexcept;
108 simdjson_inline
bool is_alive() const noexcept;
113 simdjson_inline
void abandon() noexcept;
118 simdjson_inline const uint8_t *return_current_and_advance() noexcept;
126 simdjson_inline
bool is_single_token() const noexcept;
133 simdjson_inline
void assert_more_tokens(uint32_t required_tokens=1) const noexcept;
139 simdjson_inline
void assert_valid_position(token_position position) const noexcept;
150 simdjson_inline const uint8_t *peek(int32_t delta=0) const noexcept;
158 simdjson_inline uint32_t peek_length(int32_t delta=0) const noexcept;
167 simdjson_inline const uint8_t *unsafe_pointer() const noexcept;
178 simdjson_inline const uint8_t *peek(token_position position) const noexcept;
186 simdjson_inline uint32_t peek_length(token_position position) const noexcept;
195 simdjson_inline const uint8_t *peek_last() const noexcept;
204 simdjson_inline
void ascend_to(
depth_t parent_depth) noexcept;
213 simdjson_inline
void descend_to(
depth_t child_depth) noexcept;
214 simdjson_inline
void descend_to(
depth_t child_depth, int32_t delta) noexcept;
219 simdjson_inline
depth_t depth() const noexcept;
224 simdjson_inline uint8_t *&string_buf_loc() noexcept;
241 template<
int N> simdjson_warn_unused simdjson_inline
bool copy_to_buffer(const uint8_t *json, uint32_t max_len, uint8_t (&tmpbuf)[N]) noexcept;
243 simdjson_inline token_position position() const noexcept;
249 simdjson_inline simdjson_result<std::string_view> unescape(raw_json_string in,
bool allow_replacement) noexcept;
250 simdjson_inline simdjson_result<std::string_view> unescape_wobbly(raw_json_string in) noexcept;
251 simdjson_inline
void reenter_child(token_position position,
depth_t child_depth) noexcept;
253 #if SIMDJSON_DEVELOPMENT_CHECKS
254 simdjson_inline token_position start_position(
depth_t depth)
const noexcept;
255 simdjson_inline
void set_start_position(
depth_t depth, token_position position) noexcept;
259 inline std::string
to_string() const noexcept;
264 inline simdjson_result<const
char *> current_location() noexcept;
270 inline
void rewind() noexcept;
277 inline
bool balanced() const noexcept;
279 simdjson_inline json_iterator(const uint8_t *buf, ondemand::parser *parser) noexcept;
281 simdjson_inline token_position last_position() const noexcept;
283 simdjson_inline token_position end_position() const noexcept;
285 simdjson_inline token_position end() const noexcept;
287 friend class document;
288 friend class document_stream;
292 friend class raw_json_string;
294 friend class value_iterator;
295 friend simdjson_inline
void logger::log_line(const json_iterator &iter, const
char *title_prefix, const
char *title, std::string_view detail,
int delta,
int depth_delta) noexcept;
296 friend simdjson_inline
void logger::log_line(const json_iterator &iter, token_position index,
depth_t depth, const
char *title_prefix, const
char *title, std::string_view detail) noexcept;
308 simdjson_inline
simdjson_result(SIMDJSON_IMPLEMENTATION::ondemand::json_iterator &&value) noexcept;
@ 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.
The result of a simdjson operation that could fail.