1 #include "simdjson/base.h"
2 #include "simdjson/internal/isadetection.h"
5 namespace SIMDJSON_IMPLEMENTATION {
13 static_assert(
sizeof(
open_container) == 64/8,
"Open container must be 64 bits");
34 simdjson_warn_unused
error_code parse(const uint8_t *
buf,
size_t len, dom::document &
doc) noexcept final;
36 simdjson_warn_unused
error_code stage2(dom::document &
doc) noexcept final;
37 simdjson_warn_unused
error_code stage2_next(dom::document &
doc) noexcept final;
38 simdjson_warn_unused uint8_t *parse_string(const uint8_t *src, uint8_t *dst,
bool allow_replacement) const noexcept final;
39 simdjson_warn_unused uint8_t *parse_wobbly_string(const uint8_t *src, uint8_t *dst) const noexcept final;
40 inline simdjson_warn_unused
error_code set_capacity(
size_t capacity) noexcept final;
41 inline simdjson_warn_unused
error_code set_max_depth(
size_t max_depth) noexcept final;
43 simdjson_inline simdjson_warn_unused
error_code set_capacity_stage1(
size_t capacity);
51 namespace SIMDJSON_IMPLEMENTATION {
53 inline dom_parser_implementation::dom_parser_implementation() noexcept = default;
61 size_t max_structures = SIMDJSON_ROUNDUP_N(capacity, 64) + 2 + 7;
62 structural_indexes.reset(
new (std::nothrow) uint32_t[max_structures] );
63 if (!structural_indexes) { _capacity = 0;
return MEMALLOC; }
64 structural_indexes[0] = 0;
65 n_structural_indexes = 0;
71 inline simdjson_warn_unused
error_code dom_parser_implementation::set_max_depth(
size_t max_depth) noexcept {
74 is_array.reset(
new (std::nothrow)
bool[max_depth]);
77 _max_depth = max_depth;
size_t len
Length passed to stage 1.
dom::document * doc
Document passed to stage 2.
const uint8_t * buf
Buffer passed to stage 1.
std::unique_ptr< bool[]> is_array
Whether each open container is a [ or {.
std::unique_ptr< open_container[]> open_containers
Tape location of each open { or [.
We want to support argument-dependent lookup (ADL).
error_code
All possible errors returned by simdjson.
@ CAPACITY
This parser can't support a document that big.
@ MEMALLOC
Error allocating memory, most likely out of memory.
constexpr size_t SIMDJSON_MAXSIZE_BYTES
The maximum document size supported by simdjson.
stage1_mode
This enum is used with the dom_parser_implementation::stage1 function.