diff --git a/amalgamated_8h_source.html b/amalgamated_8h_source.html index e1fceca3b..44f6bc727 100644 --- a/amalgamated_8h_source.html +++ b/amalgamated_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/annotated.html b/annotated.html index 250bed41d..2325afc8a 100644 --- a/annotated.html +++ b/annotated.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2base_8h_source.html b/arm64_2base_8h_source.html index a4cebe3eb..019f12a49 100644 --- a/arm64_2base_8h_source.html +++ b/arm64_2base_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2begin_8h_source.html b/arm64_2begin_8h_source.html index ba786a4c4..24d9ed96b 100644 --- a/arm64_2begin_8h_source.html +++ b/arm64_2begin_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2bitmanipulation_8h_source.html b/arm64_2bitmanipulation_8h_source.html index 9bc91348b..e54695b1b 100644 --- a/arm64_2bitmanipulation_8h_source.html +++ b/arm64_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2bitmask_8h_source.html b/arm64_2bitmask_8h_source.html index d50100802..8213f6dbe 100644 --- a/arm64_2bitmask_8h_source.html +++ b/arm64_2bitmask_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2end_8h_source.html b/arm64_2end_8h_source.html index bd0d39ce2..5b840f284 100644 --- a/arm64_2end_8h_source.html +++ b/arm64_2end_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2implementation_8h_source.html b/arm64_2implementation_8h_source.html index aa9b65c27..f4debcb17 100644 --- a/arm64_2implementation_8h_source.html +++ b/arm64_2implementation_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2intrinsics_8h_source.html b/arm64_2intrinsics_8h_source.html index dc9eb3422..267718b7b 100644 --- a/arm64_2intrinsics_8h_source.html +++ b/arm64_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2numberparsing__defs_8h_source.html b/arm64_2numberparsing__defs_8h_source.html index 597b25e85..20d421f3e 100644 --- a/arm64_2numberparsing__defs_8h_source.html +++ b/arm64_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2ondemand_8h_source.html b/arm64_2ondemand_8h_source.html index 07a44177a..ba8442bee 100644 --- a/arm64_2ondemand_8h_source.html +++ b/arm64_2ondemand_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2simd_8h_source.html b/arm64_2simd_8h_source.html index d47412ee6..0ee4aa765 100644 --- a/arm64_2simd_8h_source.html +++ b/arm64_2simd_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_2stringparsing__defs_8h_source.html b/arm64_2stringparsing__defs_8h_source.html index 4c511f589..e17f21083 100644 --- a/arm64_2stringparsing__defs_8h_source.html +++ b/arm64_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/arm64_8h_source.html b/arm64_8h_source.html index b92250670..2c0aa95fb 100644 --- a/arm64_8h_source.html +++ b/arm64_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/array__iterator-inl_8h_source.html b/array__iterator-inl_8h_source.html index b7065f90b..92ddc7e9c 100644 --- a/array__iterator-inl_8h_source.html +++ b/array__iterator-inl_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
@@ -121,14 +121,14 @@ $(document).ready(function(){initNavTree('array__iterator-inl_8h_source.html',''
17{}
18
- +
20 if (iter.error()) { iter.abandon(); return iter.error(); }
21 return value(iter.child());
22}
-
23simdjson_inline bool array_iterator::operator==(const array_iterator &other) const noexcept {
-
24 return !(*this != other);
+
23simdjson_inline bool array_iterator::operator==(const array_iterator &other) const noexcept {
+
24 return !(*this != other);
25}
@@ -137,7 +137,7 @@ $(document).ready(function(){initNavTree('array__iterator-inl_8h_source.html',''
28}
- +
29simdjson_inline array_iterator &array_iterator::operator++() noexcept {
30 error_code error;
31 // PERF NOTE this is a safety rail ... users should exit loops as soon as they receive an error, so we'll never get here.
32 // However, it does not seem to make a perf difference, so we add it out of an abundance of caution.
@@ -149,7 +149,7 @@ $(document).ready(function(){initNavTree('array__iterator-inl_8h_source.html',''
38
-
39simdjson_inline bool array_iterator::at_end() const noexcept {
+
39simdjson_inline bool array_iterator::at_end() const noexcept {
40 return iter.at_end();
41}
@@ -202,11 +202,11 @@ $(document).ready(function(){initNavTree('array__iterator-inl_8h_source.html',''
simdjson_inline array_iterator() noexcept=default
Create a new, invalid array iterator.
simdjson_inline bool operator!=(const array_iterator &) const noexcept
Check if there are more elements in the JSON array.
simdjson_warn_unused simdjson_inline bool at_end() const noexcept
Check if the array is at the end.
-
An ephemeral JSON value returned during iteration.
Definition value.h:21
The top level simdjson namespace, containing everything the library provides.
Definition base.h:8
error_code
All possible errors returned by simdjson.
Definition error.h:19
@ SUCCESS
No error.
Definition error.h:20
+
The result of a simdjson operation that could fail.
Definition error.h:278
diff --git a/array__iterator_8h_source.html b/array__iterator_8h_source.html index db209682b..55f84b824 100644 --- a/array__iterator_8h_source.html +++ b/array__iterator_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
@@ -119,21 +119,21 @@ $(document).ready(function(){initNavTree('array__iterator_8h_source.html',''); i
24public:
-
26 simdjson_inline array_iterator() noexcept = default;
+
26 simdjson_inline array_iterator() noexcept = default;
27
28 //
29 // Iterator interface
30 //
31
37 simdjson_inline simdjson_result<value>
-
38 operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
-
46 simdjson_inline bool operator==(const array_iterator &) const noexcept;
-
54 simdjson_inline bool operator!=(const array_iterator &) const noexcept;
-
60 simdjson_inline array_iterator &operator++() noexcept;
+
38 operator*() noexcept; // MUST ONLY BE CALLED ONCE PER ITERATION.
+
46 simdjson_inline bool operator==(const array_iterator &) const noexcept;
+
54 simdjson_inline bool operator!=(const array_iterator &) const noexcept;
+
60 simdjson_inline array_iterator &operator++() noexcept;
61
-
65 simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
+
65 simdjson_warn_unused simdjson_inline bool at_end() const noexcept;
66
- +
67private:
68 value_iterator iter{};
69
70 simdjson_inline array_iterator(const value_iterator &iter) noexcept;
diff --git a/atomic__ptr_8h_source.html b/atomic__ptr_8h_source.html index b7ffab1e0..1c265c3fc 100644 --- a/atomic__ptr_8h_source.html +++ b/atomic__ptr_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/atomparsing_8h_source.html b/atomparsing_8h_source.html index 58916d8ef..46b5fc68a 100644 --- a/atomparsing_8h_source.html +++ b/atomparsing_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/base_8h_source.html b/base_8h_source.html index 3f9c4a710..e92ec87c9 100644 --- a/base_8h_source.html +++ b/base_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/builtin_2base_8h_source.html b/builtin_2base_8h_source.html index 422983deb..3de3fb820 100644 --- a/builtin_2base_8h_source.html +++ b/builtin_2base_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/builtin_2implementation_8h_source.html b/builtin_2implementation_8h_source.html index 9a2f1f5ac..3ffec5e1e 100644 --- a/builtin_2implementation_8h_source.html +++ b/builtin_2implementation_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/builtin_2ondemand_8h_source.html b/builtin_2ondemand_8h_source.html index 30dfe14eb..0e2c055ff 100644 --- a/builtin_2ondemand_8h_source.html +++ b/builtin_2ondemand_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/builtin_8h_source.html b/builtin_8h_source.html index 73716577b..1bd8a9485 100644 --- a/builtin_8h_source.html +++ b/builtin_8h_source.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classes.html b/classes.html index cf099567f..a4934a7a6 100644 --- a/classes.html +++ b/classes.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder-members.html index 101b2a3e0..167b1982f 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder-members.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html index 43ebb7ab1..38263bbb8 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation-members.html index ca65e475c..f47e8d596 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation-members.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html index a10bc8310..22634c6ef 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array-members.html index 8ec783336..5ddeec3c3 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array-members.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html index e4ae9b398..8ced649e0 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html @@ -29,7 +29,7 @@ Logo -
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
@@ -111,55 +111,55 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_ - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline array () noexcept=default
simdjson_inline array () noexcept=default
 Create a new invalid array.
 
simdjson_inline simdjson_result< array_iteratorbegin () noexcept
simdjson_inline simdjson_result< array_iteratorbegin () noexcept
 Begin array iteration.
 
simdjson_inline simdjson_result< array_iteratorend () noexcept
simdjson_inline simdjson_result< array_iteratorend () noexcept
 Sentinel representing the end of the array.
 
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
 This method scans the array and counts the number of elements.
 
simdjson_inline simdjson_result< boolis_empty () &noexcept
simdjson_inline simdjson_result< bool > is_empty () &noexcept
 This method scans the beginning of the array and checks whether the array is empty.
 
simdjson_result< boolreset () &noexcept
simdjson_result< bool > reset () &noexcept
 Reset the iterator so that we are pointing back at the beginning of the array.
 
simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
 Get the value associated with the given JSON pointer.
 
simdjson_result< valueat_path (std::string_view json_path) noexcept
simdjson_result< valueat_path (std::string_view json_path) noexcept
 Get the value associated with the given JSONPath expression.
 
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
 Consumes the array and returns a string_view instance corresponding to the array as represented in JSON.
 
simdjson_inline simdjson_result< valueat (size_t index) noexcept
simdjson_inline simdjson_result< valueat (size_t index) noexcept
 Get the value at the given index.
 
- + - +

Protected Member Functions

simdjson_warn_unused simdjson_inline error_code consume () noexcept
simdjson_warn_unused simdjson_inline error_code consume () noexcept
 Go to the end of the array, no matter where you are right now.
 
simdjson_inline array (const value_iterator &iter) noexcept
simdjson_inline array (const value_iterator &iter) noexcept
 Create an array at the given Internal array creation.
 
- + - + - +

Static Protected Member Functions

static simdjson_inline simdjson_result< arraystart (value_iterator &iter) noexcept
static simdjson_inline simdjson_result< arraystart (value_iterator &iter) noexcept
 Begin array iteration.
 
static simdjson_inline simdjson_result< arraystart_root (value_iterator &iter) noexcept
static simdjson_inline simdjson_result< arraystart_root (value_iterator &iter) noexcept
 Begin array iteration from the root.
 
static simdjson_inline simdjson_result< arraystarted (value_iterator &iter) noexcept
static simdjson_inline simdjson_result< arraystarted (value_iterator &iter) noexcept
 Begin array iteration.
 
@@ -214,7 +214,7 @@ Protected Attributes - + @@ -486,7 +486,7 @@ Protected Attributes
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::array (const value_iterator & const value_iterator &  iter)
- + @@ -546,7 +546,7 @@ Protected Attributes
SIMDJSON_POP_DISABLE_WARNINGS simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::is_empty SIMDJSON_POP_DISABLE_WARNINGS simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::is_empty ( ) &
- + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator-members.html index 38a232141..ca72a6845 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html index 429d3897c..2516a05c0 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html @@ -29,7 +29,7 @@ @@ -109,22 +109,22 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_ +simdjson_inline  - + - + - + - + - +
simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::reset simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::reset ( ) &
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON

Public Member Functions

-simdjson_inline array_iterator () noexcept=default
array_iterator () noexcept=default
 Create a new, invalid array iterator.
 
simdjson_inline simdjson_result< valueoperator* () noexcept
simdjson_inline simdjson_result< valueoperator* () noexcept
 Get the current element.
 
simdjson_inline bool operator== (const array_iterator &) const noexcept
simdjson_inline bool operator== (const array_iterator &) const noexcept
 Check if we are at the end of the JSON.
 
simdjson_inline bool operator!= (const array_iterator &) const noexcept
simdjson_inline bool operator!= (const array_iterator &) const noexcept
 Check if there are more elements in the JSON array.
 
simdjson_inline array_iteratoroperator++ () noexcept
simdjson_inline array_iteratoroperator++ () noexcept
 Move to the next element.
 
simdjson_warn_unused simdjson_inline bool at_end () const noexcept
simdjson_warn_unused simdjson_inline bool at_end () const noexcept
 Check if the array is at the end.
 
@@ -148,7 +148,7 @@ simdjson_inline 
array_iter - + @@ -177,9 +177,9 @@ simdjson_inline 
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::at_end simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::at_end ( ) constarray_iter - + - + @@ -269,9 +269,9 @@ simdjson_inline 
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::operator!= simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::operator!= (const array_iteratorconst array_iterator ) const
array_iter - + - + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document-members.html index 921d8069f..bfc90c1fc 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html index a15411568..6744758f7 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html @@ -29,7 +29,7 @@ @@ -112,295 +112,295 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::operator== simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::operator== (const array_iteratorconst array_iterator other) const
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + +simdjson_inline  +simdjson_inline  +simdjson_inline document &  +simdjson_inline document &  - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - +template<typename T > + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + +simdjson_result< value >  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline document () noexcept=default
simdjson_inline document () noexcept=default
 Create a new invalid document.
 
-simdjson_inline document (const document &other) noexcept=delete
document (const document &other) noexcept=delete
 
-simdjson_inline document (document &&other) noexcept=default
document (document &&other) noexcept=default
 
-simdjson_inline documentoperator= (const document &other) noexcept=delete
operator= (const document &other) noexcept=delete
 
-simdjson_inline documentoperator= (document &&other) noexcept=default
operator= (document &&other) noexcept=default
 
simdjson_inline simdjson_result< arrayget_array () &noexcept
simdjson_inline simdjson_result< arrayget_array () &noexcept
 Cast this JSON value to an array.
 
simdjson_inline simdjson_result< objectget_object () &noexcept
simdjson_inline simdjson_result< objectget_object () &noexcept
 Cast this JSON value to an object.
 
simdjson_inline simdjson_result< uint64_tget_uint64 () noexcept
simdjson_inline simdjson_result< uint64_t > get_uint64 () noexcept
 Cast this JSON value to an unsigned integer.
 
simdjson_inline simdjson_result< uint64_tget_uint64_in_string () noexcept
simdjson_inline simdjson_result< uint64_t > get_uint64_in_string () noexcept
 Cast this JSON value (inside string) to an unsigned integer.
 
simdjson_inline simdjson_result< int64_tget_int64 () noexcept
simdjson_inline simdjson_result< int64_t > get_int64 () noexcept
 Cast this JSON value to a signed integer.
 
simdjson_inline simdjson_result< int64_tget_int64_in_string () noexcept
simdjson_inline simdjson_result< int64_t > get_int64_in_string () noexcept
 Cast this JSON value (inside string) to a signed integer.
 
simdjson_inline simdjson_result< doubleget_double () noexcept
simdjson_inline simdjson_result< double > get_double () noexcept
 Cast this JSON value to a double.
 
simdjson_inline simdjson_result< doubleget_double_in_string () noexcept
simdjson_inline simdjson_result< double > get_double_in_string () noexcept
 Cast this JSON value (inside string) to a double.
 
simdjson_inline simdjson_result< std::string_view > get_string (bool allow_replacement=false) noexcept
simdjson_inline simdjson_result< std::string_view > get_string (bool allow_replacement=false) noexcept
 Cast this JSON value to a string.
 
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code get_string (string_type &receiver, bool allow_replacement=false) noexcept
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code get_string (string_type &receiver, bool allow_replacement=false) noexcept
 Attempts to fill the provided std::string reference with the parsed value of the current string.
 
simdjson_inline simdjson_result< std::string_view > get_wobbly_string () noexcept
simdjson_inline simdjson_result< std::string_view > get_wobbly_string () noexcept
 Cast this JSON value to a string.
 
simdjson_inline simdjson_result< raw_json_stringget_raw_json_string () noexcept
simdjson_inline simdjson_result< raw_json_stringget_raw_json_string () noexcept
 Cast this JSON value to a raw_json_string.
 
simdjson_inline simdjson_result< boolget_bool () noexcept
simdjson_inline simdjson_result< bool > get_bool () noexcept
 Cast this JSON value to a bool.
 
simdjson_inline simdjson_result< valueget_value () noexcept
simdjson_inline simdjson_result< valueget_value () noexcept
 Cast this JSON value to a value when the document is an object or an array.
 
simdjson_inline simdjson_result< boolis_null () noexcept
simdjson_inline simdjson_result< bool > is_null () noexcept
 Checks if this JSON value is null.
 
template<typename T >
simdjson_inline simdjson_result< Tget () &noexcept
template<typename T >
simdjson_inline simdjson_result< T > get () &noexcept
 Get this value as the given type.
 
template<typename T >
simdjson_inline simdjson_result< Tget () &&noexcept
template<typename T >
simdjson_inline simdjson_result< T > get () &&noexcept
 
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &out) &noexcept
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &out) &noexcept
 Get this value as the given type.
 
-template<typename T >
simdjson_deprecated simdjson_inline error_code get (T &out) &&noexcept
simdjson_deprecated simdjson_inline error_code get (T &out) &&noexcept
 
template<class T >
simdjson_inline operator T () &noexcept(false)
template<class T >
simdjson_inline operator T () &noexcept(false)
 Cast this JSON value to an instance of type T.
 
template<class T >
simdjson_deprecated simdjson_inline operator T () &&noexcept(false)
template<class T >
simdjson_deprecated simdjson_inline operator T () &&noexcept(false)
 
simdjson_inline operator array () &noexcept(false)
simdjson_inline operator array () &noexcept(false)
 Cast this JSON value to an array.
 
simdjson_inline operator object () &noexcept(false)
simdjson_inline operator object () &noexcept(false)
 Cast this JSON value to an object.
 
simdjson_inline operator uint64_t () noexcept(false)
simdjson_inline operator uint64_t () noexcept(false)
 Cast this JSON value to an unsigned integer.
 
simdjson_inline operator int64_t () noexcept(false)
simdjson_inline operator int64_t () noexcept(false)
 Cast this JSON value to a signed integer.
 
simdjson_inline operator double () noexcept(false)
simdjson_inline operator double () noexcept(false)
 Cast this JSON value to a double.
 
simdjson_inline operator std::string_view () noexcept(false) simdjson_lifetime_bound
simdjson_inline operator std::string_view () noexcept(false) simdjson_lifetime_bound
 Cast this JSON value to a string.
 
simdjson_inline operator raw_json_string () noexcept(false) simdjson_lifetime_bound
simdjson_inline operator raw_json_string () noexcept(false) simdjson_lifetime_bound
 Cast this JSON value to a raw_json_string.
 
simdjson_inline operator bool () noexcept(false)
simdjson_inline operator bool () noexcept(false)
 Cast this JSON value to a bool.
 
simdjson_inline operator value () noexcept(false)
simdjson_inline operator value () noexcept(false)
 Cast this JSON value to a value when the document is an object or an array.
 
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
 This method scans the array and counts the number of elements.
 
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
 This method scans the object and counts the number of key-value pairs.
 
simdjson_inline simdjson_result< valueat (size_t index) &noexcept
simdjson_inline simdjson_result< valueat (size_t index) &noexcept
 Get the value at the given index in the array.
 
simdjson_inline simdjson_result< array_iteratorbegin () &noexcept
simdjson_inline simdjson_result< array_iteratorbegin () &noexcept
 Begin array iteration.
 
simdjson_inline simdjson_result< array_iteratorend () &noexcept
simdjson_inline simdjson_result< array_iteratorend () &noexcept
 Sentinel representing the end of the array.
 
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &noexcept
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &noexcept
 Look up a field by name on an object (order-sensitive).
 
simdjson_inline simdjson_result< valuefind_field (const char *key) &noexcept
simdjson_inline simdjson_result< valuefind_field (const char *key) &noexcept
 
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &noexcept
 Look up a field by name on an object, without regard to key order.
 
simdjson_inline simdjson_result< valuefind_field_unordered (const char *key) &noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (const char *key) &noexcept
 
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &noexcept
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &noexcept
 
simdjson_inline simdjson_result< valueoperator[] (const char *key) &noexcept
simdjson_inline simdjson_result< valueoperator[] (const char *key) &noexcept
 
-simdjson_result< valueoperator[] (int) &noexcept=delete
operator[] (int) &noexcept=delete
 
simdjson_inline simdjson_result< json_typetype () noexcept
simdjson_inline simdjson_result< json_typetype () noexcept
 Get the type of this JSON value.
 
simdjson_inline simdjson_result< boolis_scalar () noexcept
simdjson_inline simdjson_result< bool > is_scalar () noexcept
 Checks whether the document is a scalar (string, number, null, Boolean).
 
simdjson_inline simdjson_result< boolis_string () noexcept
simdjson_inline simdjson_result< bool > is_string () noexcept
 Checks whether the document is a string.
 
simdjson_inline bool is_negative () noexcept
simdjson_inline bool is_negative () noexcept
 Checks whether the document is a negative number.
 
simdjson_inline simdjson_result< boolis_integer () noexcept
simdjson_inline simdjson_result< bool > is_integer () noexcept
 Checks whether the document is an integer number.
 
simdjson_inline simdjson_result< number_typeget_number_type () noexcept
simdjson_inline simdjson_result< number_typeget_number_type () noexcept
 Determine the number type (integer or floating-point number) as quickly as possible.
 
simdjson_warn_unused simdjson_inline simdjson_result< numberget_number () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< numberget_number () noexcept
 Attempt to parse an ondemand::number.
 
simdjson_inline simdjson_result< std::string_view > raw_json_token () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json_token () noexcept
 Get the raw JSON for this token.
 
void rewind () noexcept
void rewind () noexcept
 Reset the iterator inside the document instance so we are pointing back at the beginning of the document, as if it had just been created.
 
std::string to_debug_string () noexcept
std::string to_debug_string () noexcept
 Returns debugging information.
 
bool is_alive () noexcept
bool is_alive () noexcept
 Some unrecoverable error conditions may render the document instance unusable.
 
simdjson_result< const char * > current_location () const noexcept
simdjson_result< const char * > current_location () const noexcept
 Returns the current location in the document if in bounds.
 
bool at_end () const noexcept
bool at_end () const noexcept
 Returns true if this document has been fully parsed.
 
simdjson_inline int32_t current_depth () const noexcept
simdjson_inline int32_t current_depth () const noexcept
 Returns the current depth in the document if in bounds.
 
simdjson_inline simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
simdjson_inline simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
 Get the value associated with the given JSON pointer.
 
simdjson_inline simdjson_result< valueat_path (std::string_view json_path) noexcept
simdjson_inline simdjson_result< valueat_path (std::string_view json_path) noexcept
 Get the value associated with the given JSONPath expression.
 
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
 Consumes the document and returns a string_view instance corresponding to the document as represented in JSON.
 
template<>
simdjson_inline simdjson_result< arrayget () &noexcept
simdjson_inline simdjson_result< arrayget () &noexcept
 
template<>
simdjson_inline simdjson_result< objectget () &noexcept
simdjson_inline simdjson_result< objectget () &noexcept
 
template<>
simdjson_inline simdjson_result< raw_json_stringget () &noexcept
simdjson_inline simdjson_result< raw_json_stringget () &noexcept
 
template<>
simdjson_inline simdjson_result< std::string_view > get () &noexcept
simdjson_inline simdjson_result< std::string_view > get () &noexcept
 
template<>
simdjson_inline simdjson_result< doubleget () &noexcept
simdjson_inline simdjson_result< double > get () &noexcept
 
template<>
simdjson_inline simdjson_result< uint64_tget () &noexcept
simdjson_inline simdjson_result< uint64_t > get () &noexcept
 
template<>
simdjson_inline simdjson_result< int64_tget () &noexcept
simdjson_inline simdjson_result< int64_t > get () &noexcept
 
template<>
simdjson_inline simdjson_result< boolget () &noexcept
simdjson_inline simdjson_result< bool > get () &noexcept
 
template<>
simdjson_inline simdjson_result< valueget () &noexcept
simdjson_inline simdjson_result< valueget () &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (array &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (array &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (object &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (object &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (raw_json_string &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (raw_json_string &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (std::string_view &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (std::string_view &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (double &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (double &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (uint64_t &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (uint64_t &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (int64_t &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (int64_t &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (bool &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (bool &out) &noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (value &out) &noexcept
simdjson_warn_unused simdjson_inline error_code get (value &out) &noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< raw_json_stringget () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< raw_json_stringget () &&noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< std::string_view > get () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< std::string_view > get () &&noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< doubleget () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< double > get () &&noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< uint64_tget () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< uint64_t > get () &&noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< int64_tget () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< int64_t > get () &&noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< boolget () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< bool > get () &&noexcept
 
template<>
simdjson_deprecated simdjson_inline simdjson_result< valueget () &&noexcept
simdjson_deprecated simdjson_inline simdjson_result< valueget () &&noexcept
 
- + - + +simdjson_inline const uint8_t *  - + - + - +

Protected Member Functions

simdjson_warn_unused simdjson_inline error_code consume () noexcept
simdjson_warn_unused simdjson_inline error_code consume () noexcept
 Consumes the document.
 
simdjson_inline document (ondemand::json_iterator &&iter) noexcept
simdjson_inline document (ondemand::json_iterator &&iter) noexcept
 
-simdjson_inline const uint8_ttext (uint32_t idx) const noexcept
text (uint32_t idx) const noexcept
 
simdjson_inline value_iterator resume_value_iterator () noexcept
simdjson_inline value_iterator resume_value_iterator () noexcept
 
simdjson_inline value_iterator get_root_value_iterator () noexcept
simdjson_inline value_iterator get_root_value_iterator () noexcept
 
simdjson_inline simdjson_result< objectstart_or_resume_object () noexcept
simdjson_inline simdjson_result< objectstart_or_resume_object () noexcept
 
- +

Static Protected Member Functions

static simdjson_inline document start (ondemand::json_iterator &&iter) noexcept
static simdjson_inline document start (ondemand::json_iterator &&iter) noexcept
 

@@ -411,7 +411,7 @@ Protected Attributes

- +

Static Protected Attributes

static constexpr depth_t DOCUMENT_DEPTH = 0
static constexpr depth_t DOCUMENT_DEPTH = 0
 document depth is always 0
 
@@ -525,7 +525,7 @@ Static Protected Attributes
- + @@ -762,7 +762,7 @@ Static Protected Attributes
bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_end bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_end ( ) const
- + @@ -792,7 +792,7 @@ Static Protected Attributes
int32_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_depth int32_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_depth ( ) const
- + @@ -853,7 +853,7 @@ Static Protected Attributes - + @@ -895,13 +895,11 @@ Static Protected Attributes

Look up a field by name on an object (order-sensitive).

The following code reads z, then y, then x, and thus will not retrieve x or y if fed the JSON { "x": 1, "y": 2, "z": 3 }:

-
++
-
simdjson::ondemand::parser parser;
-
auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
-
double z = obj.find_field("z");
-
double y = obj.find_field("y");
-
double x = obj.find_field("x");
- +
simdjson::ondemand::parser parser;
+
auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+
double z = obj.find_field("z");
+
double y = obj.find_field("y");
+
double x = obj.find_field("x");

Raw Keys: The lookup will be done against the raw key, and will not unescape keys. e.g. object["a"] will match { "a": 1 }, but will not match { "\u0061": 1 }.

You must consume the fields on an object one at a time. A request for a new key invalidates previous field values: it makes them unsafe. E.g., the array given by content["bids"].get_array() should not be accessed after you have called content["asks"].get_array(). You can detect such mistakes by first compiling and running the code in Debug mode (or with the macro SIMDJSON_DEVELOPMENT_CHECKS set to 1): an OUT_OF_ORDER_ITERATION error is generated.

@@ -930,7 +928,7 @@ Static Protected Attributes
- + @@ -1058,7 +1056,7 @@ template<>
simdjson_result< const char * > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_location simdjson_result< const char * > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_location ( ) const
simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::find_field (const charconst char *  key) &
simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::find_field_unordered (const charconst char *  key) &
- + @@ -1087,7 +1085,7 @@ template<>
simdjson_deprecated simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_deprecated simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) && - + @@ -1116,7 +1114,7 @@ template<>
simdjson_deprecated simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_deprecated simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) && - + @@ -1145,7 +1143,7 @@ template<>
simdjson_deprecated simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_deprecated simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) && - + @@ -1197,13 +1195,13 @@ template<>
-template<typename T >
+template<typename T >
simdjson_deprecated simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_deprecated simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) &&
- + @@ -1348,7 +1346,7 @@ template<>
simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) && - + @@ -1377,7 +1375,7 @@ template<>
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) & - + @@ -1406,7 +1404,7 @@ template<>
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) & - + @@ -1435,7 +1433,7 @@ template<>
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) & - + @@ -1487,13 +1485,13 @@ template<>
-template<typename T >
+template<typename T >
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) &
- + @@ -1561,7 +1559,7 @@ template<> - + @@ -1591,7 +1589,7 @@ template<> - + @@ -1621,7 +1619,7 @@ template<> - + @@ -1733,7 +1731,7 @@ template<>
-template<typename T >
+template<typename T >
simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get ( ) &
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get (boolbool &  out) &
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get (doubledouble &  out) &
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get (int64_tint64_t &  out) &
- + @@ -1784,7 +1782,7 @@ template<> - + @@ -1872,7 +1870,7 @@ INCORRECT_TYPE If the JSON value is not an array.
@@ -1741,7 +1739,7 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get (TT &  out) &
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get (uint64_tuint64_t &  out) &
- + @@ -1904,7 +1902,7 @@ INCORRECT_TYPE if the JSON value is not true or false.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_bool simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_bool ( ) - + @@ -1936,7 +1934,7 @@ INCORRECT_TYPE If the JSON value is not a valid floating-point number.
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_double simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_double ( )
- + @@ -1968,7 +1966,7 @@ INCORRECT_TYPE If the JSON value is not a valid floating-point number.
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_double_in_string simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_double_in_string ( )
- + @@ -2000,7 +1998,7 @@ INCORRECT_TYPE If the JSON value is not a 64-bit integer.
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_int64 simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_int64 ( ) - + @@ -2195,8 +2193,8 @@ INCORRECT_TYPE if the JSON value is not a string. - - + +
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_int64_in_string simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_int64_in_string ( )
simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_string (bool allow_replacement = false)bool allow_replacement = false)
@@ -2230,7 +2228,7 @@ INCORRECT_TYPE if the JSON value is not a string.
-template<typename string_type >
+template<typename string_type >
- + - - + + @@ -2280,7 +2278,7 @@ template<
@@ -2238,14 +2236,14 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_string (string_typestring_type &  receiver,
bool allow_replacement = false bool allow_replacement = false 
- + @@ -2314,7 +2312,7 @@ INCORRECT_TYPE If the JSON value is not a 64-bit unsigned integer.
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_uint64 simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_uint64 ( ) - + @@ -2413,7 +2411,7 @@ INCORRECT_TYPE if the JSON value is not a string.
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_uint64_in_string simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get_uint64_in_string ( ) - + @@ -2443,7 +2441,7 @@ INCORRECT_TYPE if the JSON value is not a string.
bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_alive bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_alive ( ) - + @@ -2474,7 +2472,7 @@ INCORRECT_TYPE if the JSON value is not a string.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_integer simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_integer ( ) - + @@ -2504,7 +2502,7 @@ INCORRECT_TYPE if the JSON value is not a string.
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_negative simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_negative ( ) - + @@ -2537,7 +2535,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_null simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_null ( ) - + @@ -2568,7 +2566,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_scalar simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_scalar ( ) - + @@ -2623,7 +2621,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_string simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_string ( )
- + @@ -2651,7 +2649,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator bool simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator bool ( )
- + @@ -2679,7 +2677,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator double simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator double ( )
- + @@ -2793,13 +2791,13 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
-template<class T >
+template<class T >
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator int64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator int64_t ( )
- + @@ -2822,13 +2820,13 @@ template<
+template<class T >
simdjson_deprecated simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator T simdjson_deprecated simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator T ( ) &&
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference-members.html index c505b61df..111585c21 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html index 1fe439dab..3b8e097c7 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html @@ -29,7 +29,7 @@ @@ -108,162 +108,162 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
- + @@ -2857,7 +2855,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator T simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator T ( ) &
- + @@ -2919,7 +2917,7 @@ template<simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator[] - + @@ -3071,7 +3069,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator uint64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator uint64_t ( ) (const charconst char *  key) &
- + @@ -3220,7 +3218,7 @@ template<
void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::rewind void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::rewind ( )
- +
constexpr depth_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::DOCUMENT_DEPTH = 0constexpr depth_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::DOCUMENT_DEPTH = 0
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + +simdjson_inline  +simdjson_inline document_reference &  - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - +template<typename T > + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + +simdjson_result< value >  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline document_reference (document &d) noexcept
simdjson_inline document_reference (document &d) noexcept
 
-simdjson_inline document_reference (const document_reference &other) noexcept=default
document_reference (const document_reference &other) noexcept=default
 
-simdjson_inline document_referenceoperator= (const document_reference &other) noexcept=default
operator= (const document_reference &other) noexcept=default
 
simdjson_inline void rewind () noexcept
simdjson_inline void rewind () noexcept
 
simdjson_inline simdjson_result< arrayget_array () &noexcept
simdjson_inline simdjson_result< arrayget_array () &noexcept
 
simdjson_inline simdjson_result< objectget_object () &noexcept
simdjson_inline simdjson_result< objectget_object () &noexcept
 
simdjson_inline simdjson_result< uint64_tget_uint64 () noexcept
simdjson_inline simdjson_result< uint64_t > get_uint64 () noexcept
 The document_reference instances are used primarily/solely for streams of JSON documents.
 
simdjson_inline simdjson_result< uint64_tget_uint64_in_string () noexcept
simdjson_inline simdjson_result< uint64_t > get_uint64_in_string () noexcept
 
simdjson_inline simdjson_result< int64_tget_int64 () noexcept
simdjson_inline simdjson_result< int64_t > get_int64 () noexcept
 
simdjson_inline simdjson_result< int64_tget_int64_in_string () noexcept
simdjson_inline simdjson_result< int64_t > get_int64_in_string () noexcept
 
simdjson_inline simdjson_result< doubleget_double () noexcept
simdjson_inline simdjson_result< double > get_double () noexcept
 
simdjson_inline simdjson_result< doubleget_double_in_string () noexcept
simdjson_inline simdjson_result< double > get_double_in_string () noexcept
 
simdjson_inline simdjson_result< std::string_view > get_string (bool allow_replacement=false) noexcept
simdjson_inline simdjson_result< std::string_view > get_string (bool allow_replacement=false) noexcept
 
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code get_string (string_type &receiver, bool allow_replacement=false) noexcept
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code get_string (string_type &receiver, bool allow_replacement=false) noexcept
 
simdjson_inline simdjson_result< std::string_view > get_wobbly_string () noexcept
simdjson_inline simdjson_result< std::string_view > get_wobbly_string () noexcept
 
simdjson_inline simdjson_result< raw_json_stringget_raw_json_string () noexcept
simdjson_inline simdjson_result< raw_json_stringget_raw_json_string () noexcept
 
simdjson_inline simdjson_result< boolget_bool () noexcept
simdjson_inline simdjson_result< bool > get_bool () noexcept
 
simdjson_inline simdjson_result< valueget_value () noexcept
simdjson_inline simdjson_result< valueget_value () noexcept
 
simdjson_inline simdjson_result< boolis_null () noexcept
simdjson_inline simdjson_result< bool > is_null () noexcept
 
template<typename T >
simdjson_inline simdjson_result< Tget () &noexcept
template<typename T >
simdjson_inline simdjson_result< T > get () &noexcept
 
template<typename T >
simdjson_inline simdjson_result< Tget () &&noexcept
template<typename T >
simdjson_inline simdjson_result< T > get () &&noexcept
 
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &out) &noexcept
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &out) &noexcept
 Get this value as the given type.
 
-template<typename T >
simdjson_inline error_code get (T &out) &&noexcept
simdjson_inline error_code get (T &out) &&noexcept
 
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
 
simdjson_inline operator document & () const noexcept
simdjson_inline operator document & () const noexcept
 
template<class T >
simdjson_inline operator T () noexcept(false)
template<class T >
simdjson_inline operator T () noexcept(false)
 
simdjson_inline operator array () &noexcept(false)
simdjson_inline operator array () &noexcept(false)
 
simdjson_inline operator object () &noexcept(false)
simdjson_inline operator object () &noexcept(false)
 
simdjson_inline operator uint64_t () noexcept(false)
simdjson_inline operator uint64_t () noexcept(false)
 
simdjson_inline operator int64_t () noexcept(false)
simdjson_inline operator int64_t () noexcept(false)
 
simdjson_inline operator double () noexcept(false)
simdjson_inline operator double () noexcept(false)
 
simdjson_inline operator std::string_view () noexcept(false)
simdjson_inline operator std::string_view () noexcept(false)
 
simdjson_inline operator raw_json_string () noexcept(false)
simdjson_inline operator raw_json_string () noexcept(false)
 
simdjson_inline operator bool () noexcept(false)
simdjson_inline operator bool () noexcept(false)
 
simdjson_inline operator value () noexcept(false)
simdjson_inline operator value () noexcept(false)
 
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
 
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
 
simdjson_inline simdjson_result< valueat (size_t index) &noexcept
simdjson_inline simdjson_result< valueat (size_t index) &noexcept
 
simdjson_inline simdjson_result< array_iteratorbegin () &noexcept
simdjson_inline simdjson_result< array_iteratorbegin () &noexcept
 
simdjson_inline simdjson_result< array_iteratorend () &noexcept
simdjson_inline simdjson_result< array_iteratorend () &noexcept
 
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &noexcept
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &noexcept
 
simdjson_inline simdjson_result< valuefind_field (const char *key) &noexcept
simdjson_inline simdjson_result< valuefind_field (const char *key) &noexcept
 
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &noexcept
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &noexcept
 
simdjson_inline simdjson_result< valueoperator[] (const char *key) &noexcept
simdjson_inline simdjson_result< valueoperator[] (const char *key) &noexcept
 
-simdjson_result< valueoperator[] (int) &noexcept=delete
operator[] (int) &noexcept=delete
 
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &noexcept
 
simdjson_inline simdjson_result< valuefind_field_unordered (const char *key) &noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (const char *key) &noexcept
 
simdjson_inline simdjson_result< json_typetype () noexcept
simdjson_inline simdjson_result< json_typetype () noexcept
 
simdjson_inline simdjson_result< boolis_scalar () noexcept
simdjson_inline simdjson_result< bool > is_scalar () noexcept
 
simdjson_inline simdjson_result< boolis_string () noexcept
simdjson_inline simdjson_result< bool > is_string () noexcept
 
simdjson_inline simdjson_result< const char * > current_location () noexcept
simdjson_inline simdjson_result< const char * > current_location () noexcept
 
simdjson_inline int32_t current_depth () const noexcept
simdjson_inline int32_t current_depth () const noexcept
 
simdjson_inline bool is_negative () noexcept
simdjson_inline bool is_negative () noexcept
 
simdjson_inline simdjson_result< boolis_integer () noexcept
simdjson_inline simdjson_result< bool > is_integer () noexcept
 
simdjson_inline simdjson_result< number_typeget_number_type () noexcept
simdjson_inline simdjson_result< number_typeget_number_type () noexcept
 
simdjson_inline simdjson_result< numberget_number () noexcept
simdjson_inline simdjson_result< numberget_number () noexcept
 
simdjson_inline simdjson_result< std::string_view > raw_json_token () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json_token () noexcept
 
simdjson_inline simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
simdjson_inline simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
 
simdjson_inline simdjson_result< valueat_path (std::string_view json_path) noexcept
simdjson_inline simdjson_result< valueat_path (std::string_view json_path) noexcept
 
template<>
simdjson_inline simdjson_result< arrayget () &noexcept
simdjson_inline simdjson_result< arrayget () &noexcept
 
template<>
simdjson_inline simdjson_result< objectget () &noexcept
simdjson_inline simdjson_result< objectget () &noexcept
 
template<>
simdjson_inline simdjson_result< raw_json_stringget () &noexcept
simdjson_inline simdjson_result< raw_json_stringget () &noexcept
 
template<>
simdjson_inline simdjson_result< std::string_view > get () &noexcept
simdjson_inline simdjson_result< std::string_view > get () &noexcept
 
template<>
simdjson_inline simdjson_result< doubleget () &noexcept
simdjson_inline simdjson_result< double > get () &noexcept
 
template<>
simdjson_inline simdjson_result< uint64_tget () &noexcept
simdjson_inline simdjson_result< uint64_t > get () &noexcept
 
template<>
simdjson_inline simdjson_result< int64_tget () &noexcept
simdjson_inline simdjson_result< int64_t > get () &noexcept
 
template<>
simdjson_inline simdjson_result< boolget () &noexcept
simdjson_inline simdjson_result< bool > get () &noexcept
 
template<>
simdjson_inline simdjson_result< valueget () &noexcept
simdjson_inline simdjson_result< valueget () &noexcept
 

Detailed Description

@@ -503,7 +503,7 @@ template< - + @@ -530,7 +530,7 @@ template<
simdjson_inline int32_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::current_depth simdjson_inline int32_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::current_depth ( ) const
- + @@ -586,7 +586,7 @@ template<simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::find_field - + @@ -642,7 +642,7 @@ template<simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::find_field_unordered - + @@ -692,13 +692,13 @@ template<
+template<typename T >
simdjson_inline simdjson_result< const char * > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::current_location simdjson_inline simdjson_result< const char * > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::current_location ( ) (const charconst char *  key) &
(const charconst char *  key) &
- + @@ -843,7 +843,7 @@ template<>
simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get ( ) && - + @@ -872,7 +872,7 @@ template<>
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get ( ) & - + @@ -901,7 +901,7 @@ template<>
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get ( ) & - + @@ -930,7 +930,7 @@ template<>
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get ( ) & - + @@ -982,13 +982,13 @@ template<>
-template<typename T >
+template<typename T >
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get ( ) &
- + @@ -1011,7 +1011,7 @@ template<
+template<typename T >
simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get ( ) &
- + @@ -1085,7 +1085,7 @@ SUCCESS If the parse succeeded and the out parameter was set to the value.
@@ -1019,7 +1019,7 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get (TT &  out) &
- + @@ -1112,7 +1112,7 @@ SUCCESS If the parse succeeded and the out parameter was set to the value.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_bool simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_bool ( ) - + @@ -1139,7 +1139,7 @@ SUCCESS If the parse succeeded and the out parameter was set to the value.
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_double simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_double ( ) - + @@ -1166,7 +1166,7 @@ SUCCESS If the parse succeeded and the out parameter was set to the value.
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_double_in_string simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_double_in_string ( ) - + @@ -1193,7 +1193,7 @@ SUCCESS If the parse succeeded and the out parameter was set to the value.
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_int64 simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_int64 ( ) - + @@ -1330,8 +1330,8 @@ SUCCESS If the parse succeeded and the out parameter was set to the value. - - + +
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_int64_in_string simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_int64_in_string ( )
simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_string (bool allow_replacement = false)bool allow_replacement = false)
@@ -1352,7 +1352,7 @@ SUCCESS If the parse succeeded and the out parameter was set to the value.
-template<typename string_type >
+template<typename string_type >
- + - - + + @@ -1396,7 +1396,7 @@ template<
@@ -1360,14 +1360,14 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_string (string_typestring_type &  receiver,
bool allow_replacement = false bool allow_replacement = false 
- + @@ -1428,7 +1428,7 @@ template<
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_uint64 simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_uint64 ( )
- + @@ -1509,7 +1509,7 @@ template<
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_uint64_in_string simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get_uint64_in_string ( )
- + @@ -1536,7 +1536,7 @@ template<
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_integer simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_integer ( )
- + @@ -1563,7 +1563,7 @@ template<
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_negative simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_negative ( )
- + @@ -1590,7 +1590,7 @@ template<
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_null simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_null ( )
- + @@ -1617,7 +1617,7 @@ template<
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_scalar simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_scalar ( )
- + @@ -1660,7 +1660,7 @@ template<
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_string simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::is_string ( )
- + @@ -1706,7 +1706,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator bool simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator bool ( )
- + @@ -1725,7 +1725,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator double simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator double ( )
- + @@ -1800,13 +1800,13 @@ template<
+template<class T >
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator int64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator int64_t ( )
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html index 9542204dd..300e4220c 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html @@ -29,7 +29,7 @@ @@ -104,40 +104,40 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
- + @@ -1830,7 +1830,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator T simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator T ( )
- + @@ -1873,7 +1873,7 @@ template<simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator[] - + @@ -1981,7 +1981,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator uint64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::operator uint64_t ( ) (const charconst char *  key) &
- + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream-members.html index dd0ad246e..12af60ef4 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html index fbcc73ece..902e8bd1b 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html @@ -29,7 +29,7 @@ @@ -115,32 +115,32 @@ Classes
simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::rewind simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::rewind ( )
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- +

Public Types

using iterator = document_stream::iterator
using iterator = document_stream::iterator
 
- + +simdjson_inline  +simdjson_inline document_stream &  - + - + - + - +

Public Member Functions

simdjson_inline document_stream () noexcept
simdjson_inline document_stream () noexcept
 Construct an uninitialized document_stream.
 
-simdjson_inline document_stream (document_stream &&other) noexcept=default
document_stream (document_stream &&other) noexcept=default
 Move one document_stream to another.
 
-simdjson_inline document_streamoperator= (document_stream &&other) noexcept=default
operator= (document_stream &&other) noexcept=default
 Move one document_stream to another.
 
size_t size_in_bytes () const noexcept
size_t size_in_bytes () const noexcept
 Returns the input size in bytes.
 
size_t truncated_bytes () const noexcept
size_t truncated_bytes () const noexcept
 After iterating through the stream, this method returns the number of bytes that were not parsed at the end of the stream.
 
simdjson_inline iterator begin () noexcept
simdjson_inline iterator begin () noexcept
 Start iterating the documents in the stream.
 
simdjson_inline iterator end () noexcept
simdjson_inline iterator end () noexcept
 The end of the stream, for iterator comparison purposes.
 
@@ -157,7 +157,7 @@ simdjson_inline - +
using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator = document_stream::iteratorusing simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator = document_stream::iterator
@@ -191,10 +191,8 @@ simdjson_inline

Construct an uninitialized document_stream.

-
++
- -
auto error = parser.iterate_many(json).get(docs);
- +
+
auto error = parser.iterate_many(json).get(docs);
simdjson_result< document_stream > iterate_many(const uint8_t *buf, size_t len, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
Parse a buffer containing many JSON documents.
Definition parser-inl.h:136
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator-members.html index e5202aa95..ca2260848 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator-members.html @@ -29,7 +29,7 @@
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - +

Public Types

using value_type = simdjson_result< document >
using value_type = simdjson_result< document >
 
using reference = simdjson_result< ondemand::document_reference >
using reference = simdjson_result< ondemand::document_reference >
 
using pointer = void
using pointer = void
 
using difference_type = std::ptrdiff_t
using difference_type = std::ptrdiff_t
 
using iterator_category = std::input_iterator_tag
using iterator_category = std::input_iterator_tag
 
- + +simdjson_inline  - + - + - + - + - + - +

Public Member Functions

simdjson_inline iterator () noexcept
simdjson_inline iterator () noexcept
 Default constructor.
 
-simdjson_inline iterator (const iterator &other) noexcept=default
iterator (const iterator &other) noexcept=default
 
simdjson_inline reference operator* () noexcept
simdjson_inline reference operator* () noexcept
 Get the current document (or error).
 
iteratoroperator++ () noexcept
iteratoroperator++ () noexcept
 Advance to the next document (prefix).
 
simdjson_inline bool operator!= (const iterator &other) const noexcept
simdjson_inline bool operator!= (const iterator &other) const noexcept
 Check if we're at the end yet.
 
simdjson_inline bool operator== (const iterator &other) const noexcept
simdjson_inline bool operator== (const iterator &other) const noexcept
 
error_code error () const noexcept
error_code error () const noexcept
 Returns error of the stream (if any).
 
bool at_end () const noexcept
bool at_end () const noexcept
 Returns whether the iterator is at the end.
 
@@ -152,7 +152,7 @@ simdjson_inline 
iterator - +
using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::difference_type = std::ptrdiff_tusing simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::difference_type = std::ptrdiff_t
@@ -168,7 +168,7 @@ simdjson_inline 
iterator - +
using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::iterator_category = std::input_iterator_tagusing simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::iterator_category = std::input_iterator_tag
@@ -184,7 +184,7 @@ simdjson_inline 
iterator - +
using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::pointer = voidusing simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::pointer = void
@@ -200,7 +200,7 @@ simdjson_inline 
iterator - +
using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::reference = simdjson_result<ondemand::document_reference>using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::reference = simdjson_result<ondemand::document_reference>
@@ -216,7 +216,7 @@ simdjson_inline 
iterator - +
using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::value_type = simdjson_result<document>using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::value_type = simdjson_result<document>
@@ -266,7 +266,7 @@ simdjson_inline 
iterator - + @@ -324,9 +324,9 @@ simdjson_inline 
-template<typename string_type >
+template<typename string_type >
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::at_end simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::at_end ( ) constiterator - + - + @@ -418,9 +418,9 @@ simdjson_inline  - + @@ -398,8 +398,8 @@ Static Protected Member Functions - - + +
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::operator!= simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::operator!= (const iteratorconst iterator other) const
iterator - + - + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field-members.html index 2a70ed5ff..3c08bbb60 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html index f6e4b7e5c..2dfc41da0 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html @@ -29,7 +29,7 @@ @@ -116,41 +116,41 @@ Inheritance diagram for simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field: - + - + - - + + - + - + - + - + - +
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::operator== simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::operator== (const iteratorconst iterator other) const
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON

Public Member Functions

simdjson_inline field () noexcept
simdjson_inline field () noexcept
 Create a new invalid field.
 
simdjson_inline simdjson_warn_unused simdjson_result< std::string_view > unescaped_key (bool allow_replacement=false) noexcept
simdjson_inline simdjson_warn_unused simdjson_result< std::string_view > unescaped_key (bool allow_replacement=false) noexcept
 Get the key as a string_view (for higher speed, consider raw_key).
 
template<typename string_type >
simdjson_inline simdjson_warn_unused error_code unescaped_key (string_type &receiver, bool allow_replacement=false) noexcept
template<typename string_type >
simdjson_inline simdjson_warn_unused error_code unescaped_key (string_type &receiver, bool allow_replacement=false) noexcept
 Get the key as a string_view (for higher speed, consider raw_key).
 
simdjson_inline raw_json_string key () const noexcept
simdjson_inline raw_json_string key () const noexcept
 Get the key as a raw_json_string.
 
simdjson_inline std::string_view key_raw_json_token () const noexcept
simdjson_inline std::string_view key_raw_json_token () const noexcept
 Get the unprocessed key as a string_view.
 
simdjson_inline std::string_view escaped_key () const noexcept
simdjson_inline std::string_view escaped_key () const noexcept
 Get the key as a string_view.
 
simdjson_inline ondemand::value & value () &noexcept
simdjson_inline ondemand::value & value () &noexcept
 Get the field value.
 
simdjson_inline ondemand::value value () &&noexcept
simdjson_inline ondemand::value value () &&noexcept
 
- +

Protected Member Functions

simdjson_inline field (raw_json_string key, ondemand::value &&value) noexcept
simdjson_inline field (raw_json_string key, ondemand::value &&value) noexcept
 
- + - +

Static Protected Member Functions

static simdjson_inline simdjson_result< fieldstart (value_iterator &parent_iter) noexcept
static simdjson_inline simdjson_result< fieldstart (value_iterator &parent_iter) noexcept
 
static simdjson_inline simdjson_result< fieldstart (const value_iterator &parent_iter, raw_json_string key) noexcept
static simdjson_inline simdjson_result< fieldstart (const value_iterator &parent_iter, raw_json_string key) noexcept
 

Detailed Description

@@ -332,7 +332,7 @@ Static Protected Member Functions
simdjson_inline simdjson_result< field > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::start (const value_iterator & const value_iterator &  parent_iter,
simdjson_inline simdjson_warn_unused simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::unescaped_key (bool allow_replacement = false)bool allow_replacement = false)
@@ -424,7 +424,7 @@ Static Protected Member Functions
- + - - + + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object-members.html index 545994246..11963e887 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html index f931219ba..cdf0ea841 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html @@ -29,7 +29,7 @@ @@ -111,66 +111,66 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
@@ -432,14 +432,14 @@ template<simdjson_inline simdjson_warn_unused error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::unescaped_key (string_typestring_type &  receiver,
bool allow_replacement = false bool allow_replacement = false 
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline object () noexcept=default
simdjson_inline object () noexcept=default
 Create a new invalid object.
 
simdjson_inline simdjson_result< object_iteratorbegin () noexcept
simdjson_inline simdjson_result< object_iteratorbegin () noexcept
 
simdjson_inline simdjson_result< object_iteratorend () noexcept
simdjson_inline simdjson_result< object_iteratorend () noexcept
 
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &noexcept
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &noexcept
 Look up a field by name on an object (order-sensitive).
 
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &&noexcept
simdjson_inline simdjson_result< valuefind_field (std::string_view key) &&noexcept
 
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &noexcept
 Look up a field by name on an object, without regard to key order.
 
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &&noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) &&noexcept
 
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &noexcept
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &noexcept
 
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &&noexcept
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) &&noexcept
 
simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
 Get the value associated with the given JSON pointer.
 
simdjson_result< valueat_path (std::string_view json_path) noexcept
simdjson_result< valueat_path (std::string_view json_path) noexcept
 Get the value associated with the given JSONPath expression.
 
simdjson_result< boolreset () &noexcept
simdjson_result< bool > reset () &noexcept
 Reset the iterator so that we are pointing back at the beginning of the object.
 
simdjson_result< boolis_empty () &noexcept
simdjson_result< bool > is_empty () &noexcept
 This method scans the beginning of the object and checks whether the object is empty.
 
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
 This method scans the object and counts the number of key-value pairs.
 
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
 Consumes the object and returns a string_view instance corresponding to the object as represented in JSON.
 
- + - + +simdjson_warn_unused simdjson_inline error_code 

Protected Member Functions

simdjson_warn_unused simdjson_inline error_code consume () noexcept
simdjson_warn_unused simdjson_inline error_code consume () noexcept
 Go to the end of the object, no matter where you are right now.
 
simdjson_inline object (const value_iterator &iter) noexcept
simdjson_inline object (const value_iterator &iter) noexcept
 
-simdjson_warn_unused simdjson_inline error_code find_field_raw (const std::string_view key) noexcept
find_field_raw (const std::string_view key) noexcept
 
- + - + - + - +

Static Protected Member Functions

static simdjson_inline simdjson_result< objectstart (value_iterator &iter) noexcept
static simdjson_inline simdjson_result< objectstart (value_iterator &iter) noexcept
 
static simdjson_inline simdjson_result< objectstart_root (value_iterator &iter) noexcept
static simdjson_inline simdjson_result< objectstart_root (value_iterator &iter) noexcept
 
static simdjson_inline simdjson_result< objectstarted (value_iterator &iter) noexcept
static simdjson_inline simdjson_result< objectstarted (value_iterator &iter) noexcept
 
static simdjson_inline object resume (const value_iterator &iter) noexcept
static simdjson_inline object resume (const value_iterator &iter) noexcept
 
- + @@ -493,13 +493,11 @@ Protected Attributes

Look up a field by name on an object (order-sensitive).

The following code reads z, then y, then x, and thus will not retrieve x or y if fed the JSON { "x": 1, "y": 2, "z": 3 }:

-
++
-
simdjson::ondemand::parser parser;
-
auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
-
double z = obj.find_field("z");
-
double y = obj.find_field("y");
-
double x = obj.find_field("x");
- +
simdjson::ondemand::parser parser;
+
auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+
double z = obj.find_field("z");
+
double y = obj.find_field("y");
+
double x = obj.find_field("x");

If you have multiple fields with a matching key ({"x": 1, "x": 1}) be mindful that only one field is returned.

Raw Keys: The lookup will be done against the raw key, and will not unescape keys. e.g. object["a"] will match { "a": 1 }, but will not match { "\u0061": 1 }.

@@ -600,7 +598,7 @@ Protected Attributes

@@ -223,7 +223,7 @@ Protected Attributes

simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::object (const value_iterator & const value_iterator &  iter)
- + @@ -716,7 +714,7 @@ Protected Attributes
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::is_empty simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::is_empty ( ) &
- + @@ -749,7 +747,7 @@ Protected Attributes - + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator-members.html index 0419ec8cd..ed6303d2c 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html index 776c40112..4cfcc5d8b 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html @@ -29,7 +29,7 @@ @@ -103,16 +103,16 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::reset simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::reset ( ) &
simdjson_inline object simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::resume (const value_iterator & const value_iterator &  iter)
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - +

Public Member Functions

simdjson_inline object_iterator () noexcept=default
simdjson_inline object_iterator () noexcept=default
 Create a new invalid object_iterator.
 
simdjson_inline simdjson_result< fieldoperator* () noexcept
simdjson_inline simdjson_result< fieldoperator* () noexcept
 
simdjson_inline bool operator== (const object_iterator &) const noexcept
simdjson_inline bool operator== (const object_iterator &) const noexcept
 
simdjson_inline bool operator!= (const object_iterator &) const noexcept
simdjson_inline bool operator!= (const object_iterator &) const noexcept
 
simdjson_inline object_iteratoroperator++ () noexcept
simdjson_inline object_iteratoroperator++ () noexcept
 

Detailed Description

@@ -158,9 +158,9 @@ Public Member Functions
- + - + @@ -240,9 +240,9 @@ Public Member Functions - + @@ -405,7 +405,7 @@ Public Attributes - + @@ -433,7 +433,7 @@ Public Attributes - + @@ -461,7 +461,7 @@ Public Attributes - + @@ -489,7 +489,7 @@ Public Attributes - + @@ -548,19 +548,19 @@ Public Attributes

Start iterating an on-demand JSON document.

ondemand::parser parser; document doc = parser.iterate(json);

It is expected that the content is a valid UTF-8 file, containing a valid JSON document. Otherwise the iterate method may return an error. In particular, the whole input should be valid: we do not attempt to tolerate incorrect content either before or after a JSON document. If there is a UTF-8 BOM, the parser skips it.

-

+

IMPORTANT: Validate what you use

Calling iterate on an invalid JSON document may not immediately trigger an error. The call to iterate does not parse and validate the whole document.

-

+

IMPORTANT: Buffer Lifetime

Because parsing is done while you iterate, you must keep the JSON buffer around at least as long as the document iteration.

-

+

IMPORTANT: Document Lifetime

Only one iteration at a time can happen per parser, and the parser must be kept alive during iteration to ensure intermediate buffers can be accessed. Any document must be destroyed before you call parse() again or destroy the parser.

-

+

REQUIRED: Buffer Padding

The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what those bytes are initialized to, as long as they are allocated. These bytes will be read: if you using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the SIMDJSON_PADDING bytes to avoid runtime warnings.

-

+

std::string references

If you pass a mutable std::string reference (std::string&), the parser will seek to extend its capacity to SIMDJSON_PADDING bytes beyond the end of the string.

Whenever you pass an std::string reference, the parser will access the bytes beyond the end of the string but before the end of the allocated memory (std::string::capacity()). If you are using a sanitizer that checks for reading uninitialized bytes or std::string's container-overflow checks, you may encounter sanitizer warnings. You can safely ignore these warnings. Or you can call simdjson::pad(std::string&) to pad the string with SIMDJSON_PADDING spaces: this function returns a simdjson::padding_string_view which can be be passed to the parser's iterate function:

@@ -665,7 +665,7 @@ std::string references - + @@ -683,8 +683,8 @@ std::string references - - + + @@ -715,7 +715,7 @@ std::string references - + @@ -727,8 +727,8 @@ std::string references - - + + @@ -759,7 +759,7 @@ std::string references - + @@ -771,8 +771,8 @@ std::string references - - + + @@ -803,7 +803,7 @@ std::string references - + @@ -821,8 +821,8 @@ std::string references - - + + @@ -842,22 +842,22 @@ std::string references

No copy of the input buffer is made.

The function is lazy: it may be that no more than one JSON document at a time is parsed.

The caller is responsabile to ensure that the input string data remains unchanged and is not deleted during the loop.

-

+

Format

The buffer must contain a series of one or more JSON documents, concatenated into a single buffer, separated by ASCII whitespace. It effectively parses until it has a fully valid document, then starts parsing the next document at that point. (It does this with more parallelism and lookahead than you might think, though.)

documents that consist of an object or array may omit the whitespace between them, concatenating with no separator. Documents that consist of a single primitive (i.e. documents that are not arrays or objects) MUST be separated with ASCII whitespace.

The characters inside a JSON document, and between JSON documents, must be valid Unicode (UTF-8). If there is a UTF-8 BOM, the parser skips it.

The documents must not exceed batch_size bytes (by default 1MB) or they will fail to parse. Setting batch_size to excessively large or excessively small values may impact negatively the performance.

-

+

Threads

When compiled with SIMDJSON_THREADS_ENABLED, this method will use a single thread under the hood to do some lookahead.

-

+

REQUIRED: Buffer Padding

The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what those bytes are initialized to, as long as they are allocated. These bytes will be read: if you using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the SIMDJSON_PADDING bytes to avoid runtime warnings.

This is checked automatically with all iterate_many function calls, except for the two that take pointers (const char* or const uint8_t*).

-

+

Threads

-

+

Parser Capacity

If the parser's current capacity is less than batch_size, it will allocate enough capacity to handle it (up to max_capacity).

Parameters
@@ -904,8 +904,8 @@ Parser Capacity
- - + + @@ -948,8 +948,8 @@ Parser Capacity - - + + @@ -1037,7 +1037,7 @@ Parser Capacity - + @@ -227,9 +227,9 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object_iterator::operator!= simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object_iterator::operator!= (const object_iteratorconst object_iterator ) const
- + - + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser-members.html index d92376e71..99222a7cf 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html index 3da25cfda..6d8e220c5 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html @@ -29,7 +29,7 @@ @@ -110,93 +110,93 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object_iterator::operator== simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object_iterator::operator== (const object_iteratorconst object_iterator other) const
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + +  +simdjson_inline  +simdjson_inline parser &  +simdjson_inline parser &  +  - + - + - + - + - + - + - + - + +simdjson_warn_unused simdjson_result< document >  - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

 parser (size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept
 parser (size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept
 Create a JSON parser.
 
parser (parser &&other) noexcept=default
parser (parser &&other) noexcept=default
 
-simdjson_inline parser (const parser &other)=delete
parser (const parser &other)=delete
 
-simdjson_inline parseroperator= (const parser &other)=delete
operator= (const parser &other)=delete
 
-simdjson_inline parseroperator= (parser &&other) noexcept=default
operator= (parser &&other) noexcept=default
 
~parser () noexcept=default
~parser () noexcept=default
 Deallocate the JSON parser.
 
simdjson_warn_unused simdjson_result< documentiterate (padded_string_view json) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (padded_string_view json) &noexcept
 Start iterating an on-demand JSON document.
 
simdjson_warn_unused simdjson_result< documentiterate (const char *json, size_t len, size_t capacity) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (const char *json, size_t len, size_t capacity) &noexcept
 
simdjson_warn_unused simdjson_result< documentiterate (const uint8_t *json, size_t len, size_t capacity) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (const uint8_t *json, size_t len, size_t capacity) &noexcept
 
simdjson_warn_unused simdjson_result< documentiterate (std::string_view json, size_t capacity) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (std::string_view json, size_t capacity) &noexcept
 
simdjson_warn_unused simdjson_result< documentiterate (const std::string &json) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (const std::string &json) &noexcept
 
simdjson_warn_unused simdjson_result< documentiterate (std::string &json) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (std::string &json) &noexcept
 
simdjson_warn_unused simdjson_result< documentiterate (const simdjson_result< padded_string > &json) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (const simdjson_result< padded_string > &json) &noexcept
 
simdjson_warn_unused simdjson_result< documentiterate (const simdjson_result< padded_string_view > &json) &noexcept
simdjson_warn_unused simdjson_result< documentiterate (const simdjson_result< padded_string_view > &json) &noexcept
 
-simdjson_warn_unused simdjson_result< documentiterate (padded_string &&json) &noexcept=delete
iterate (padded_string &&json) &noexcept=delete
 
simdjson_result< document_streamiterate_many (const uint8_t *buf, size_t len, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
simdjson_result< document_streamiterate_many (const uint8_t *buf, size_t len, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
 Parse a buffer containing many JSON documents.
 
simdjson_result< document_streamiterate_many (padded_string_view json, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
simdjson_result< document_streamiterate_many (padded_string_view json, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
 
simdjson_result< document_streamiterate_many (const char *buf, size_t len, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
simdjson_result< document_streamiterate_many (const char *buf, size_t len, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
 
simdjson_result< document_streamiterate_many (const std::string &s, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
simdjson_result< document_streamiterate_many (const std::string &s, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
 
simdjson_result< document_streamiterate_many (std::string &s, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
simdjson_result< document_streamiterate_many (std::string &s, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
 
simdjson_result< document_streamiterate_many (const padded_string &s, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
simdjson_result< document_streamiterate_many (const padded_string &s, size_t batch_size=DEFAULT_BATCH_SIZE, bool allow_comma_separated=false) noexcept
 
simdjson_pure simdjson_inline size_t capacity () const noexcept
simdjson_pure simdjson_inline size_t capacity () const noexcept
 The capacity of this parser (the largest document it can process).
 
simdjson_pure simdjson_inline size_t max_capacity () const noexcept
simdjson_pure simdjson_inline size_t max_capacity () const noexcept
 The maximum capacity of this parser (the largest document it is allowed to process).
 
simdjson_inline void set_max_capacity (size_t max_capacity) noexcept
simdjson_inline void set_max_capacity (size_t max_capacity) noexcept
 
simdjson_pure simdjson_inline size_t max_depth () const noexcept
simdjson_pure simdjson_inline size_t max_depth () const noexcept
 The maximum depth of this parser (the most deeply nested objects and arrays it can process).
 
simdjson_warn_unused error_code allocate (size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept
simdjson_warn_unused error_code allocate (size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept
 Ensure this parser has enough memory to process JSON documents up to capacity bytes in length and max_depth depth.
 
simdjson_inline simdjson_result< std::string_view > unescape (raw_json_string in, uint8_t *&dst, bool allow_replacement=false) const noexcept
simdjson_inline simdjson_result< std::string_view > unescape (raw_json_string in, uint8_t *&dst, bool allow_replacement=false) const noexcept
 Unescape this JSON string, replacing \ with \,
with newline, etc.
 
simdjson_inline simdjson_result< std::string_view > unescape_wobbly (raw_json_string in, uint8_t *&dst) const noexcept
simdjson_inline simdjson_result< std::string_view > unescape_wobbly (raw_json_string in, uint8_t *&dst) const noexcept
 Unescape this JSON string, replacing \ with \,
with newline, etc.
 
- + - +

Static Public Member Functions

static simdjson_inline simdjson_warn_unused ondemand::parser & get_parser ()
static simdjson_inline simdjson_warn_unused ondemand::parser & get_parser ()
 Get a unique parser instance corresponding to the current thread.
 
static simdjson_inline bool release_parser ()
static simdjson_inline bool release_parser ()
 Release the parser instance initialized by get_parser() and all the associated resources (memory).
 
- +

Public Attributes

bool threaded {false}
bool threaded {false}
 When SIMDJSON_THREADS_ENABLED is not defined, the parser instance cannot use threads.
 
@@ -361,7 +361,7 @@ Public Attributes
simdjson_warn_unused simdjson_inline simdjson_result< document > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate (const charconst char *  json,
simdjson_warn_unused simdjson_inline simdjson_result< document > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate (const simdjson_result< padded_string > & const simdjson_result< padded_string > &  json) &
simdjson_warn_unused simdjson_inline simdjson_result< document > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate (const simdjson_result< padded_string_view > & const simdjson_result< padded_string_view > &  json) &
simdjson_warn_unused simdjson_inline simdjson_result< document > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate (const std::string & const std::string &  json) &
simdjson_warn_unused simdjson_inline simdjson_result< document > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate (const uint8_tconst uint8_t *  json,
simdjson_result< document_stream > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate_many (const charconst char *  buf,
bool allow_comma_separated = false bool allow_comma_separated = false 
simdjson_result< document_stream > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate_many (const padded_stringconst padded_string s,
bool allow_comma_separated = false bool allow_comma_separated = false 
simdjson_result< document_stream > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate_many (const std::string & const std::string &  s,
bool allow_comma_separated = false bool allow_comma_separated = false 
simdjson_result< document_stream > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate_many (const uint8_tconst uint8_t *  buf,
bool allow_comma_separated = false bool allow_comma_separated = false 
bool allow_comma_separated = false bool allow_comma_separated = false 
bool allow_comma_separated = false bool allow_comma_separated = false 
- + @@ -1065,7 +1065,7 @@ Parser Capacity diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html index 56c5c06de..62d99b536 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html @@ -29,7 +29,7 @@ @@ -109,40 +109,40 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
static simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::release_parser static simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::release_parser ( ) - + @@ -1101,14 +1101,14 @@ Parser Capacity - + - - + + @@ -1127,7 +1127,7 @@ Parser Capacity with newline, etc.

to a user-provided buffer. The result must be valid UTF-8. The provided pointer is advanced to the end of the string by reference, and a string_view instance is returned. You can ensure that your buffer is large enough by allocating a block of memory at least as large as the input JSON plus SIMDJSON_PADDING and then unescape all strings to this one buffer.

This unescape function is a low-level function. If you want a more user-friendly approach, you should avoid raw_json_string instances (e.g., by calling unescaped_key() instead of key() or get_string() instead of get_raw_json_string()).

-

+

IMPORTANT: string_view lifetime

The string_view is only valid as long as the bytes in dst.

Parameters
@@ -1162,7 +1162,7 @@ IMPORTANT: string_view lifetime
- + @@ -1182,7 +1182,7 @@ IMPORTANT: string_view lifetime with newline, etc.

to a user-provided buffer. The result may not be valid UTF-8. See https://simonsapin.github.io/wtf-8/ The provided pointer is advanced to the end of the string by reference, and a string_view instance is returned. You can ensure that your buffer is large enough by allocating a block of memory at least as large as the input JSON plus SIMDJSON_PADDING and then unescape all strings to this one buffer.

This unescape function is a low-level function. If you want a more user-friendly approach, you should avoid raw_json_string instances (e.g., by calling unescaped_key() instead of key() or get_string() instead of get_raw_json_string()).

-

+

IMPORTANT: string_view lifetime

The string_view is only valid as long as the bytes in dst.

Parameters
@@ -1206,7 +1206,7 @@ IMPORTANT: string_view lifetime
simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::set_max_capacity simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::set_max_capacity ( size_t  max_capacity)
uint8_t *& uint8_t *&  dst,
bool allow_replacement = false bool allow_replacement = false 
uint8_t *& uint8_t *&  dst 
- +
bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::threaded {false}bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::threaded {false}
diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string-members.html index 3f2b1c373..7e0ace40a 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string-members.html @@ -29,7 +29,7 @@
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline raw_json_string () noexcept=default
simdjson_inline raw_json_string () noexcept=default
 Create a new invalid raw_json_string.
 
simdjson_inline raw_json_string (const uint8_t *_buf) noexcept
simdjson_inline raw_json_string (const uint8_t *_buf) noexcept
 Create a new invalid raw_json_string pointed at the given location in the JSON.
 
simdjson_inline const charraw () const noexcept
simdjson_inline const char * raw () const noexcept
 Get the raw pointer to the beginning of the string in the JSON (just after the ").
 
simdjson_inline char operator[] (size_t i) const noexcept
simdjson_inline char operator[] (size_t i) const noexcept
 Get the character at index i.
 
simdjson_inline bool unsafe_is_equal (size_t length, std::string_view target) const noexcept
simdjson_inline bool unsafe_is_equal (size_t length, std::string_view target) const noexcept
 This compares the current instance to the std::string_view target: returns true if they are byte-by-byte equal (no escaping is done) on target.size() characters, and if the raw_json_string instance has a quote character at byte index target.size().
 
simdjson_inline bool unsafe_is_equal (std::string_view target) const noexcept
simdjson_inline bool unsafe_is_equal (std::string_view target) const noexcept
 This compares the current instance to the std::string_view target: returns true if they are byte-by-byte equal (no escaping is done).
 
simdjson_inline bool unsafe_is_equal (const char *target) const noexcept
simdjson_inline bool unsafe_is_equal (const char *target) const noexcept
 This compares the current instance to the C string target: returns true if they are byte-by-byte equal (no escaping is done).
 
simdjson_inline bool is_equal (std::string_view target) const noexcept
simdjson_inline bool is_equal (std::string_view target) const noexcept
 This compares the current instance to the std::string_view target: returns true if they are byte-by-byte equal (no escaping is done).
 
simdjson_inline bool is_equal (const char *target) const noexcept
simdjson_inline bool is_equal (const char *target) const noexcept
 This compares the current instance to the C string target: returns true if they are byte-by-byte equal (no escaping is done).
 
- + - +

Static Public Member Functions

static simdjson_inline bool is_free_from_unescaped_quote (std::string_view target) noexcept
static simdjson_inline bool is_free_from_unescaped_quote (std::string_view target) noexcept
 Returns true if target is free from unescaped quote.
 
static simdjson_inline bool is_free_from_unescaped_quote (const char *target) noexcept
static simdjson_inline bool is_free_from_unescaped_quote (const char *target) noexcept
 

Detailed Description

@@ -195,7 +195,7 @@ Static Public Member Functions
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw_json_string (const uint8_tconst uint8_t *  _buf)
- + - + @@ -257,7 +257,7 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal (const charconst char *  target) const
- + @@ -287,9 +287,9 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal ( std::string_view  target) - + - + @@ -315,7 +315,7 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_free_from_unescaped_quote simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_free_from_unescaped_quote (const charconst char *  target)
- + @@ -346,7 +346,7 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_free_from_unescaped_quote simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_free_from_unescaped_quote ( std::string_view  target) - + @@ -377,7 +377,7 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline char simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::operator[] simdjson_inline char simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::operator[] ( size_t  i) - + @@ -407,9 +407,9 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline const char * simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw simdjson_inline const char * simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw ( ) const - + - + @@ -440,7 +440,7 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal (const charconst char *  target) const
- + @@ -483,7 +483,7 @@ It <em>must</em> be terminated by a ", and be a valid JSON string. <
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal ( size_t  length, - + diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value-members.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value-members.html index 9f2fdfe20..f002e8080 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value-members.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html index e9b9ca894..7f79867cc 100644 --- a/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html +++ b/classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html @@ -29,7 +29,7 @@ @@ -111,233 +111,233 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1_s_i_m_d_j_s_o_n___i_
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal ( std::string_view  target)
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - - + + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + +simdjson_result< value >  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline value () noexcept=default
simdjson_inline value () noexcept=default
 Create a new invalid value.
 
template<typename T >
simdjson_inline simdjson_result< Tget () noexcept
template<typename T >
simdjson_inline simdjson_result< T > get () noexcept
 Get this value as the given type.
 
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &out) noexcept
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &out) noexcept
 Get this value as the given type.
 
simdjson_inline simdjson_result< arrayget_array () noexcept
simdjson_inline simdjson_result< arrayget_array () noexcept
 Cast this JSON value to an array.
 
simdjson_inline simdjson_result< objectget_object () noexcept
simdjson_inline simdjson_result< objectget_object () noexcept
 Cast this JSON value to an object.
 
simdjson_inline simdjson_result< uint64_tget_uint64 () noexcept
simdjson_inline simdjson_result< uint64_t > get_uint64 () noexcept
 Cast this JSON value to an unsigned integer.
 
simdjson_inline simdjson_result< uint64_tget_uint64_in_string () noexcept
simdjson_inline simdjson_result< uint64_t > get_uint64_in_string () noexcept
 Cast this JSON value (inside string) to a unsigned integer.
 
simdjson_inline simdjson_result< int64_tget_int64 () noexcept
simdjson_inline simdjson_result< int64_t > get_int64 () noexcept
 Cast this JSON value to a signed integer.
 
simdjson_inline simdjson_result< int64_tget_int64_in_string () noexcept
simdjson_inline simdjson_result< int64_t > get_int64_in_string () noexcept
 Cast this JSON value (inside string) to a signed integer.
 
simdjson_inline simdjson_result< doubleget_double () noexcept
simdjson_inline simdjson_result< double > get_double () noexcept
 Cast this JSON value to a double.
 
simdjson_inline simdjson_result< doubleget_double_in_string () noexcept
simdjson_inline simdjson_result< double > get_double_in_string () noexcept
 Cast this JSON value (inside string) to a double.
 
simdjson_inline simdjson_result< std::string_view > get_string (bool allow_replacement=false) noexcept
simdjson_inline simdjson_result< std::string_view > get_string (bool allow_replacement=false) noexcept
 Cast this JSON value to a string.
 
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code get_string (string_type &receiver, bool allow_replacement=false) noexcept
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code get_string (string_type &receiver, bool allow_replacement=false) noexcept
 Attempts to fill the provided std::string reference with the parsed value of the current string.
 
simdjson_inline simdjson_result< std::string_view > get_wobbly_string () noexcept
simdjson_inline simdjson_result< std::string_view > get_wobbly_string () noexcept
 Cast this JSON value to a "wobbly" string.
 
simdjson_inline simdjson_result< raw_json_stringget_raw_json_string () noexcept
simdjson_inline simdjson_result< raw_json_stringget_raw_json_string () noexcept
 Cast this JSON value to a raw_json_string.
 
simdjson_inline simdjson_result< boolget_bool () noexcept
simdjson_inline simdjson_result< bool > get_bool () noexcept
 Cast this JSON value to a bool.
 
simdjson_inline simdjson_result< boolis_null () noexcept
simdjson_inline simdjson_result< bool > is_null () noexcept
 Checks if this JSON value is null.
 
template<class T >
simdjson_inline operator T () noexcept(false)
template<class T >
simdjson_inline operator T () noexcept(false)
 Cast this JSON value to an instance of type T.
 
simdjson_inline operator array () noexcept(false)
simdjson_inline operator array () noexcept(false)
 Cast this JSON value to an array.
 
simdjson_inline operator object () noexcept(false)
simdjson_inline operator object () noexcept(false)
 Cast this JSON value to an object.
 
simdjson_inline operator uint64_t () noexcept(false)
simdjson_inline operator uint64_t () noexcept(false)
 Cast this JSON value to an unsigned integer.
 
simdjson_inline operator int64_t () noexcept(false)
simdjson_inline operator int64_t () noexcept(false)
 Cast this JSON value to a signed integer.
 
simdjson_inline operator double () noexcept(false)
simdjson_inline operator double () noexcept(false)
 Cast this JSON value to a double.
 
simdjson_inline operator std::string_view () noexcept(false)
simdjson_inline operator std::string_view () noexcept(false)
 Cast this JSON value to a string.
 
simdjson_inline operator raw_json_string () noexcept(false)
simdjson_inline operator raw_json_string () noexcept(false)
 Cast this JSON value to a raw_json_string.
 
simdjson_inline operator bool () noexcept(false)
simdjson_inline operator bool () noexcept(false)
 Cast this JSON value to a bool.
 
simdjson_inline simdjson_result< array_iteratorbegin () &noexcept
simdjson_inline simdjson_result< array_iteratorbegin () &noexcept
 Begin array iteration.
 
simdjson_inline simdjson_result< array_iteratorend () &noexcept
simdjson_inline simdjson_result< array_iteratorend () &noexcept
 Sentinel representing the end of the array.
 
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
simdjson_inline simdjson_result< size_t > count_elements () &noexcept
 This method scans the array and counts the number of elements.
 
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
simdjson_inline simdjson_result< size_t > count_fields () &noexcept
 This method scans the object and counts the number of key-value pairs.
 
simdjson_inline simdjson_result< valueat (size_t index) noexcept
simdjson_inline simdjson_result< valueat (size_t index) noexcept
 Get the value at the given index in the array.
 
simdjson_inline simdjson_result< valuefind_field (std::string_view key) noexcept
simdjson_inline simdjson_result< valuefind_field (std::string_view key) noexcept
 Look up a field by name on an object (order-sensitive).
 
simdjson_inline simdjson_result< valuefind_field (const char *key) noexcept
simdjson_inline simdjson_result< valuefind_field (const char *key) noexcept
 
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (std::string_view key) noexcept
 Look up a field by name on an object, without regard to key order.
 
simdjson_inline simdjson_result< valuefind_field_unordered (const char *key) noexcept
simdjson_inline simdjson_result< valuefind_field_unordered (const char *key) noexcept
 
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) noexcept
simdjson_inline simdjson_result< valueoperator[] (std::string_view key) noexcept
 
simdjson_inline simdjson_result< valueoperator[] (const char *key) noexcept
simdjson_inline simdjson_result< valueoperator[] (const char *key) noexcept
 
-simdjson_result< valueoperator[] (int) noexcept=delete
operator[] (int) noexcept=delete
 
simdjson_inline simdjson_result< json_typetype () noexcept
simdjson_inline simdjson_result< json_typetype () noexcept
 Get the type of this JSON value.
 
simdjson_inline simdjson_result< boolis_scalar () noexcept
simdjson_inline simdjson_result< bool > is_scalar () noexcept
 Checks whether the value is a scalar (string, number, null, Boolean).
 
simdjson_inline simdjson_result< boolis_string () noexcept
simdjson_inline simdjson_result< bool > is_string () noexcept
 Checks whether the value is a string.
 
simdjson_inline bool is_negative () noexcept
simdjson_inline bool is_negative () noexcept
 Checks whether the value is a negative number.
 
simdjson_inline simdjson_result< boolis_integer () noexcept
simdjson_inline simdjson_result< bool > is_integer () noexcept
 Checks whether the value is an integer number.
 
simdjson_inline simdjson_result< number_typeget_number_type () noexcept
simdjson_inline simdjson_result< number_typeget_number_type () noexcept
 Determine the number type (integer or floating-point number) as quickly as possible.
 
simdjson_warn_unused simdjson_inline simdjson_result< numberget_number () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< numberget_number () noexcept
 Attempt to parse an ondemand::number.
 
simdjson_inline std::string_view raw_json_token () noexcept
simdjson_inline std::string_view raw_json_token () noexcept
 Get the raw JSON for this token.
 
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
simdjson_inline simdjson_result< std::string_view > raw_json () noexcept
 Get a string_view pointing at this value in the JSON document.
 
simdjson_inline simdjson_result< const char * > current_location () noexcept
simdjson_inline simdjson_result< const char * > current_location () noexcept
 Returns the current location in the document if in bounds.
 
simdjson_inline int32_t current_depth () const noexcept
simdjson_inline int32_t current_depth () const noexcept
 Returns the current depth in the document if in bounds.
 
simdjson_inline simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
simdjson_inline simdjson_result< valueat_pointer (std::string_view json_pointer) noexcept
 Get the value associated with the given JSON pointer.
 
simdjson_inline simdjson_result< valueat_path (std::string_view at_path) noexcept
simdjson_inline simdjson_result< valueat_path (std::string_view at_path) noexcept
 Get the value associated with the given JSONPath expression.
 
template<>
simdjson_inline simdjson_result< arrayget () noexcept
simdjson_inline simdjson_result< arrayget () noexcept
 
template<>
simdjson_inline simdjson_result< objectget () noexcept
simdjson_inline simdjson_result< objectget () noexcept
 
template<>
simdjson_inline simdjson_result< raw_json_stringget () noexcept
simdjson_inline simdjson_result< raw_json_stringget () noexcept
 
template<>
simdjson_inline simdjson_result< std::string_view > get () noexcept
simdjson_inline simdjson_result< std::string_view > get () noexcept
 
template<>
simdjson_inline simdjson_result< numberget () noexcept
simdjson_inline simdjson_result< numberget () noexcept
 
template<>
simdjson_inline simdjson_result< doubleget () noexcept
simdjson_inline simdjson_result< double > get () noexcept
 
template<>
simdjson_inline simdjson_result< uint64_tget () noexcept
simdjson_inline simdjson_result< uint64_t > get () noexcept
 
template<>
simdjson_inline simdjson_result< int64_tget () noexcept
simdjson_inline simdjson_result< int64_t > get () noexcept
 
template<>
simdjson_inline simdjson_result< boolget () noexcept
simdjson_inline simdjson_result< bool > get () noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (array &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (array &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (object &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (object &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (raw_json_string &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (raw_json_string &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (std::string_view &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (std::string_view &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (number &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (number &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (double &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (double &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (uint64_t &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (uint64_t &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (int64_t &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (int64_t &out) noexcept
 
template<>
simdjson_warn_unused simdjson_inline error_code get (bool &out) noexcept
simdjson_warn_unused simdjson_inline error_code get (bool &out) noexcept
 
- + +simdjson_inline void  - +

Protected Member Functions

simdjson_inline value (const value_iterator &iter) noexcept
simdjson_inline value (const value_iterator &iter) noexcept
 Create a value.
 
-simdjson_inline void skip () noexcept
skip () noexcept
 Skip this value, allowing iteration to continue.
 
simdjson_inline simdjson_result< objectstart_or_resume_object () noexcept
simdjson_inline simdjson_result< objectstart_or_resume_object () noexcept
 Get the object, starting or resuming it as necessary.
 
- + - +

Static Protected Member Functions

static simdjson_inline value start (const value_iterator &iter) noexcept
static simdjson_inline value start (const value_iterator &iter) noexcept
 Start a value at the current position.
 
static simdjson_inline value resume (const value_iterator &iter) noexcept
static simdjson_inline value resume (const value_iterator &iter) noexcept
 Resume a value.
 
@@ -392,7 +392,7 @@ Protected Attributes - + @@ -634,7 +634,7 @@ Protected Attributes
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::value (const value_iterator & const value_iterator &  iter)
- + @@ -664,7 +664,7 @@ Protected Attributes
simdjson_inline int32_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_depth simdjson_inline int32_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_depth ( ) const
- + @@ -725,7 +725,7 @@ Protected Attributes - + @@ -767,13 +767,11 @@ Protected Attributes

Look up a field by name on an object (order-sensitive).

The following code reads z, then y, then x, and thus will not retrieve x or y if fed the JSON { "x": 1, "y": 2, "z": 3 }:

-
++
-
simdjson::ondemand::parser parser;
-
auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
-
double z = obj.find_field("z");
-
double y = obj.find_field("y");
-
double x = obj.find_field("x");
- +
simdjson::ondemand::parser parser;
+
auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
+
double z = obj.find_field("z");
+
double y = obj.find_field("y");
+
double x = obj.find_field("x");

If you have multiple fields with a matching key ({"x": 1, "x": 1}) be mindful that only one field is returned.

Raw Keys: The lookup will be done against the raw key, and will not unescape keys. e.g. object["a"] will match { "a": 1 }, but will not match { "\u0061": 1 }.

@@ -802,7 +800,7 @@ Protected Attributes
- + @@ -1017,7 +1015,7 @@ template<>
simdjson_inline simdjson_result< const char * > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_location simdjson_inline simdjson_result< const char * > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_location ( )
simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::find_field (const charconst char *  key)
simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::find_field_unordered (const charconst char *  key)
- + @@ -1046,7 +1044,7 @@ template<>
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get ( ) - + @@ -1075,7 +1073,7 @@ template<>
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get ( ) - + @@ -1104,7 +1102,7 @@ template<>
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get ( ) - + @@ -1127,13 +1125,13 @@ template<>
-template<typename T >
+template<typename T >
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get ( )
- + @@ -1201,7 +1199,7 @@ template<> - + @@ -1231,7 +1229,7 @@ template<> - + @@ -1261,7 +1259,7 @@ template<> - + @@ -1403,7 +1401,7 @@ template<>
-template<typename T >
+template<typename T >
simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get simdjson_inline simdjson_result< T > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get ( )
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get (boolbool &  out)
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get (doubledouble &  out)
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get (int64_tint64_t &  out)
- + @@ -1453,7 +1451,7 @@ template<> - + @@ -1511,7 +1509,7 @@ INCORRECT_TYPE If the JSON value is not an array.
@@ -1411,7 +1409,7 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get (TT &  out)
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get (uint64_tuint64_t &  out)
- + @@ -1543,7 +1541,7 @@ INCORRECT_TYPE if the JSON value is not true or false.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_bool simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_bool ( ) - + @@ -1575,7 +1573,7 @@ INCORRECT_TYPE If the JSON value is not a valid floating-point number.
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_double simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_double ( )
- + @@ -1607,7 +1605,7 @@ INCORRECT_TYPE If the JSON value is not a valid floating-point number.
simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_double_in_string simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_double_in_string ( )
- + @@ -1639,7 +1637,7 @@ INCORRECT_TYPE If the JSON value is not a 64-bit integer.
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_int64 simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_int64 ( ) - + @@ -1809,8 +1807,8 @@ INCORRECT_TYPE if the JSON value is not a string. - - + +
simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_int64_in_string simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_int64_in_string ( )
simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_string (bool allow_replacement = false)bool allow_replacement = false)
@@ -1826,7 +1824,7 @@ INCORRECT_TYPE if the JSON value is not a string.

Equivalent to get<std::string_view>().

Important: a value should be consumed once. Calling get_string() twice on the same value is an error.

In some instances, you may want to allow replacement of invalid Unicode sequences. You may do so by passing the allow_replacement parameter as true. In the following example, the string "431924697b\udff0L\u0001Y" is not valid Unicode. By passing true to get_string, we allow the replacement of the invalid Unicode sequences with the Unicode replacement character (U+FFFD).

-

simdjson::ondemand::parser parser; auto json = R"({"deviceId":"431924697b\udff0L\u0001Y"})"_padded; simdjson::ondemand::document doc = parser.iterate(json); auto view = doc["deviceId"].get_string(true);

+

simdjson::ondemand::parser parser; auto json = R"({"deviceId":"431924697b\udff0L\u0001Y"})"_padded; simdjson::ondemand::document doc = parser.iterate(json); auto view = doc["deviceId"].get_string(true);

Returns
An UTF-8 string. The string is stored in the parser and will be invalidated the next time it parses a document or when it is destroyed.
INCORRECT_TYPE if the JSON value is not a string.
@@ -1841,7 +1839,7 @@ INCORRECT_TYPE if the JSON value is not a string.
-template<typename string_type >
+template<typename string_type >
- + - - + + @@ -1891,7 +1889,7 @@ template<
@@ -1849,14 +1847,14 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_string (string_typestring_type &  receiver,
bool allow_replacement = false bool allow_replacement = false 
- + @@ -1923,7 +1921,7 @@ INCORRECT_TYPE If the JSON value is not a 64-bit unsigned integer.
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_uint64 simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_uint64 ( ) - + @@ -1989,7 +1987,7 @@ INCORRECT_TYPE if the JSON value is not a string. - + @@ -508,7 +508,7 @@ Public Member Functions - + @@ -536,7 +536,7 @@ Public Member Functions - + @@ -649,7 +649,7 @@ template<>
simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_uint64_in_string simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get_uint64_in_string ( ) - + @@ -2021,7 +2019,7 @@ INCORRECT_TYPE if the JSON value is not a string.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_integer simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_integer ( ) - + @@ -2051,7 +2049,7 @@ INCORRECT_TYPE if the JSON value is not a string.
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_negative simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_negative ( ) - + @@ -2084,7 +2082,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_null simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_null ( ) - + @@ -2115,7 +2113,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_scalar simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_scalar ( ) - + @@ -2170,7 +2168,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_string simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_string ( )
- + @@ -2198,7 +2196,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator bool simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator bool ( )
- + @@ -2226,7 +2224,7 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator double simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator double ( )
- + @@ -2341,13 +2339,13 @@ INCORRECT_TYPE If the JSON value begins with 'n' and is not 'null'.
-template<class T >
+template<class T >
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator int64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator int64_t ( )

Get the value associated with the given JSONPath expression.

We only support JSONPath queries that trivially convertible to JSON Pointer queries: key names and array indices.

-

https://datatracker.ietf.org/doc/html/draft-normington-jsonpath-00

+

https://www.rfc-editor.org/rfc/rfc9535 (RFC 9535)

Returns
The value associated with the given JSONPath expression, or:
  • INVALID_JSON_POINTER if the JSONPath to JSON Pointer conversion fails
  • NO_SUCH_FIELD if a field does not exist in an object
  • @@ -463,7 +463,7 @@ Public Member Functions
- + @@ -2376,7 +2374,7 @@ template<
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator T simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator T ( )
- + @@ -2409,7 +2407,7 @@ template<simdjson_inline simdjson_result< value > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator[] - + @@ -2537,7 +2535,7 @@ template<simdjson_inline value simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::resume - + @@ -2567,7 +2565,7 @@ template<simdjson_inline value simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::start - + diff --git a/classsimdjson_1_1dom_1_1array-members.html b/classsimdjson_1_1dom_1_1array-members.html index b03e4d4c4..3876d5e93 100644 --- a/classsimdjson_1_1dom_1_1array-members.html +++ b/classsimdjson_1_1dom_1_1array-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1array.html b/classsimdjson_1_1dom_1_1array.html index ef89f2a19..bc9039760 100644 --- a/classsimdjson_1_1dom_1_1array.html +++ b/classsimdjson_1_1dom_1_1array.html @@ -29,7 +29,7 @@ @@ -114,40 +114,40 @@ Classes
simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator uint64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator uint64_t ( ) (const charconst char *  key)
(const value_iterator & const value_iterator &  iter)
(const value_iterator & const value_iterator &  iter)
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline array () noexcept
simdjson_inline array () noexcept
 Create a new, invalid array.
 
iterator begin () const noexcept
iterator begin () const noexcept
 Return the first array element.
 
iterator end () const noexcept
iterator end () const noexcept
 One past the last array element.
 
size_t size () const noexcept
size_t size () const noexcept
 Get the size of the array (number of immediate children).
 
size_t number_of_slots () const noexcept
size_t number_of_slots () const noexcept
 Get the total number of slots used by this array on the tape.
 
simdjson_result< elementat_pointer (std::string_view json_pointer) const noexcept
simdjson_result< elementat_pointer (std::string_view json_pointer) const noexcept
 Get the value associated with the given JSON pointer.
 
void process_json_path_of_child_elements (std::vector< element >::iterator &current, std::vector< element >::iterator &end, const std::string_view &path_suffix, std::vector< element > &accumulator) const noexcept
void process_json_path_of_child_elements (std::vector< element >::iterator &current, std::vector< element >::iterator &end, const std::string_view &path_suffix, std::vector< element > &accumulator) const noexcept
 Recursive function which processes the JSON path of each child element.
 
simdjson_result< std::vector< element > > at_path_with_wildcard (std::string_view json_path) const noexcept
simdjson_result< std::vector< element > > at_path_with_wildcard (std::string_view json_path) const noexcept
 Adds support for JSONPath expression with wildcards '*'.
 
simdjson_result< elementat_path (std::string_view json_path) const noexcept
simdjson_result< elementat_path (std::string_view json_path) const noexcept
 Get the value associated with the given JSONPath expression.
 
simdjson_result< elementat (size_t index) const noexcept
simdjson_result< elementat (size_t index) const noexcept
 Get the value at the given index.
 
std::vector< element > & get_values (std::vector< element > &out) const noexcept
std::vector< element > & get_values (std::vector< element > &out) const noexcept
 Gets the values of items in an array element This function has linear-time complexity: the values are checked one by one.
 
 operator element () const noexcept
 operator element () const noexcept
 Implicitly convert object to element.
 
@@ -249,7 +249,7 @@ Public Member Functions
- + @@ -492,7 +492,7 @@ Public Member Functions
simdjson::dom::array::operator element simdjson::dom::array::operator element ( ) const
- + @@ -506,7 +506,7 @@ Public Member Functions - + diff --git a/classsimdjson_1_1dom_1_1array_1_1iterator-members.html b/classsimdjson_1_1dom_1_1array_1_1iterator-members.html index caa66e5da..ce39ba044 100644 --- a/classsimdjson_1_1dom_1_1array_1_1iterator-members.html +++ b/classsimdjson_1_1dom_1_1array_1_1iterator-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1array_1_1iterator.html b/classsimdjson_1_1dom_1_1array_1_1iterator.html index 5d1b0b2fc..28e5af4d4 100644 --- a/classsimdjson_1_1dom_1_1array_1_1iterator.html +++ b/classsimdjson_1_1dom_1_1array_1_1iterator.html @@ -29,7 +29,7 @@ @@ -104,46 +104,46 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1dom_1_1array_1_1itera
void simdjson::dom::array::process_json_path_of_child_elements void simdjson::dom::array::process_json_path_of_child_elements ( std::vector< element >::iterator &  current,
const std::string_view & const std::string_view &  path_suffix,
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - +

Public Types

using value_type = element
using value_type = element
 
using difference_type = std::ptrdiff_t
using difference_type = std::ptrdiff_t
 
using pointer = void
using pointer = void
 
using reference = value_type
using reference = value_type
 
using iterator_category = std::forward_iterator_tag
using iterator_category = std::forward_iterator_tag
 
- + - + - + - + - + - + - + - + - + +  +iterator

Public Member Functions

reference operator* () const noexcept
reference operator* () const noexcept
 Get the actual value.
 
iteratoroperator++ () noexcept
iteratoroperator++ () noexcept
 Get the next value.
 
iterator operator++ (int) noexcept
iterator operator++ (int) noexcept
 Get the next value.
 
bool operator!= (const iterator &other) const noexcept
bool operator!= (const iterator &other) const noexcept
 Check if these values come from the same place in the JSON.
 
bool operator== (const iterator &other) const noexcept
bool operator== (const iterator &other) const noexcept
 
bool operator< (const iterator &other) const noexcept
bool operator< (const iterator &other) const noexcept
 
bool operator<= (const iterator &other) const noexcept
bool operator<= (const iterator &other) const noexcept
 
bool operator>= (const iterator &other) const noexcept
bool operator>= (const iterator &other) const noexcept
 
bool operator> (const iterator &other) const noexcept
bool operator> (const iterator &other) const noexcept
 
iterator (const iterator &) noexcept=default
iterator (const iterator &) noexcept=default
 
-iteratoroperator= (const iterator &) noexcept=default
operator= (const iterator &) noexcept=default
 

Detailed Description

@@ -157,7 +157,7 @@ Public Member Functions
- +
using simdjson::dom::array::iterator::difference_type = std::ptrdiff_tusing simdjson::dom::array::iterator::difference_type = std::ptrdiff_t
@@ -173,7 +173,7 @@ Public Member Functions
- +
using simdjson::dom::array::iterator::iterator_category = std::forward_iterator_tagusing simdjson::dom::array::iterator::iterator_category = std::forward_iterator_tag
@@ -189,7 +189,7 @@ Public Member Functions
- +
using simdjson::dom::array::iterator::pointer = voidusing simdjson::dom::array::iterator::pointer = void
@@ -205,7 +205,7 @@ Public Member Functions
- +
using simdjson::dom::array::iterator::reference = value_typeusing simdjson::dom::array::iterator::reference = value_type
@@ -221,7 +221,7 @@ Public Member Functions
- +
using simdjson::dom::array::iterator::value_type = elementusing simdjson::dom::array::iterator::value_type = element
@@ -241,9 +241,9 @@ Public Member Functions
- + - + @@ -333,7 +333,7 @@ Public Member Functions - + @@ -362,9 +362,9 @@ Public Member Functions
bool simdjson::dom::array::iterator::operator!= bool simdjson::dom::array::iterator::operator!= (const iteratorconst iterator other) const
array::iterator simdjson::dom::array::iterator::operator++ (int int  )
- + - + @@ -390,9 +390,9 @@ Public Member Functions
bool simdjson::dom::array::iterator::operator< bool simdjson::dom::array::iterator::operator< (const iteratorconst iterator other) const
- + - + @@ -418,9 +418,9 @@ Public Member Functions
bool simdjson::dom::array::iterator::operator<= bool simdjson::dom::array::iterator::operator<= (const iteratorconst iterator other) const
- + - + @@ -446,9 +446,9 @@ Public Member Functions diff --git a/classsimdjson_1_1dom_1_1document__stream_1_1iterator.html b/classsimdjson_1_1dom_1_1document__stream_1_1iterator.html index 43277f4b3..c87159b7c 100644 --- a/classsimdjson_1_1dom_1_1document__stream_1_1iterator.html +++ b/classsimdjson_1_1dom_1_1document__stream_1_1iterator.html @@ -29,7 +29,7 @@ @@ -109,27 +109,27 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1dom_1_1document__stre
bool simdjson::dom::array::iterator::operator== bool simdjson::dom::array::iterator::operator== (const iteratorconst iterator other) const
- + - + @@ -474,9 +474,9 @@ Public Member Functions diff --git a/classsimdjson_1_1dom_1_1document__stream.html b/classsimdjson_1_1dom_1_1document__stream.html index f8b19c62a..b375bc34f 100644 --- a/classsimdjson_1_1dom_1_1document__stream.html +++ b/classsimdjson_1_1dom_1_1document__stream.html @@ -29,7 +29,7 @@ @@ -115,27 +115,27 @@ Classes
bool simdjson::dom::array::iterator::operator> bool simdjson::dom::array::iterator::operator> (const iteratorconst iterator other) const
- + - + diff --git a/classsimdjson_1_1dom_1_1document-members.html b/classsimdjson_1_1dom_1_1document-members.html index b37f636c1..a315e37e3 100644 --- a/classsimdjson_1_1dom_1_1document-members.html +++ b/classsimdjson_1_1dom_1_1document-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1document.html b/classsimdjson_1_1dom_1_1document.html index b06926f32..1082a14e7 100644 --- a/classsimdjson_1_1dom_1_1document.html +++ b/classsimdjson_1_1dom_1_1document.html @@ -29,7 +29,7 @@ @@ -108,16 +108,16 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1dom_1_1document.html'
bool simdjson::dom::array::iterator::operator>= bool simdjson::dom::array::iterator::operator>= (const iteratorconst iterator other) const
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - +

Public Member Functions

 document () noexcept=default
 document () noexcept=default
 Create a document container with zero capacity.
 
 document (document &&other) noexcept=default
 document (document &&other) noexcept=default
 Take another document's buffers.
 
documentoperator= (document &&other) noexcept=default
documentoperator= (document &&other) noexcept=default
 Take another document's buffers.
 
element root () const noexcept
element root () const noexcept
 Get the root element of this document as a JSON array.
 
diff --git a/classsimdjson_1_1dom_1_1document__stream-members.html b/classsimdjson_1_1dom_1_1document__stream-members.html index 1d05884d7..39bff0a34 100644 --- a/classsimdjson_1_1dom_1_1document__stream-members.html +++ b/classsimdjson_1_1dom_1_1document__stream-members.html @@ -29,7 +29,7 @@
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + +simdjson_inline  +simdjson_inline document_stream &  - + - + - + - +

Public Member Functions

simdjson_inline document_stream () noexcept
simdjson_inline document_stream () noexcept
 Construct an uninitialized document_stream.
 
-simdjson_inline document_stream (document_stream &&other) noexcept=default
document_stream (document_stream &&other) noexcept=default
 Move one document_stream to another.
 
-simdjson_inline document_streamoperator= (document_stream &&other) noexcept=default
operator= (document_stream &&other) noexcept=default
 Move one document_stream to another.
 
size_t size_in_bytes () const noexcept
size_t size_in_bytes () const noexcept
 Returns the input size in bytes.
 
size_t truncated_bytes () const noexcept
size_t truncated_bytes () const noexcept
 After iterating through the stream, this method returns the number of bytes that were not parsed at the end of the stream.
 
simdjson_inline iterator begin () noexcept
simdjson_inline iterator begin () noexcept
 Start iterating the documents in the stream.
 
simdjson_inline iterator end () noexcept
simdjson_inline iterator end () noexcept
 The end of the stream, for iterator comparison purposes.
 
@@ -169,10 +169,8 @@ simdjson_inline

Construct an uninitialized document_stream.

-
++
- -
error = parser.parse_many(json).get(docs);
-
JSON array.
Definition array.h:15
+
+
error = parser.parse_many(json).get(docs);
A forward-only stream of documents.
A persistent document parser.
Definition parser.h:30
simdjson_result< document_stream > parse_many(const uint8_t *buf, size_t len, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
Parse a buffer containing many JSON documents.
Definition parser-inl.h:170
diff --git a/classsimdjson_1_1dom_1_1document__stream_1_1iterator-members.html b/classsimdjson_1_1dom_1_1document__stream_1_1iterator-members.html index d8e7fc993..676d0771a 100644 --- a/classsimdjson_1_1dom_1_1document__stream_1_1iterator-members.html +++ b/classsimdjson_1_1dom_1_1document__stream_1_1iterator-members.html @@ -29,7 +29,7 @@
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - +

Public Types

using value_type = simdjson_result< element >
using value_type = simdjson_result< element >
 
using reference = value_type
using reference = value_type
 
using difference_type = std::ptrdiff_t
using difference_type = std::ptrdiff_t
 
using iterator_category = std::input_iterator_tag
using iterator_category = std::input_iterator_tag
 
- + - + - + - +

Public Member Functions

simdjson_inline iterator () noexcept
simdjson_inline iterator () noexcept
 Default constructor.
 
simdjson_inline reference operator* () noexcept
simdjson_inline reference operator* () noexcept
 Get the current document (or error).
 
iteratoroperator++ () noexcept
iteratoroperator++ () noexcept
 Advance to the next document (prefix).
 
simdjson_inline bool operator!= (const iterator &other) const noexcept
simdjson_inline bool operator!= (const iterator &other) const noexcept
 Check if we're at the end yet.
 
@@ -145,7 +145,7 @@ Public Member Functions
- +
using simdjson::dom::document_stream::iterator::difference_type = std::ptrdiff_tusing simdjson::dom::document_stream::iterator::difference_type = std::ptrdiff_t
@@ -161,7 +161,7 @@ Public Member Functions
- +
using simdjson::dom::document_stream::iterator::iterator_category = std::input_iterator_tagusing simdjson::dom::document_stream::iterator::iterator_category = std::input_iterator_tag
@@ -177,7 +177,7 @@ Public Member Functions
- +
using simdjson::dom::document_stream::iterator::reference = value_typeusing simdjson::dom::document_stream::iterator::reference = value_type
@@ -193,7 +193,7 @@ Public Member Functions
- +
using simdjson::dom::document_stream::iterator::value_type = simdjson_result<element>using simdjson::dom::document_stream::iterator::value_type = simdjson_result<element>
@@ -243,9 +243,9 @@ Public Member Functions
- + - + diff --git a/classsimdjson_1_1dom_1_1element-members.html b/classsimdjson_1_1dom_1_1element-members.html index f75a42000..5dad69da5 100644 --- a/classsimdjson_1_1dom_1_1element-members.html +++ b/classsimdjson_1_1dom_1_1element-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1element.html b/classsimdjson_1_1dom_1_1element.html index 19e620012..2e0d8cba7 100644 --- a/classsimdjson_1_1dom_1_1element.html +++ b/classsimdjson_1_1dom_1_1element.html @@ -29,7 +29,7 @@ @@ -108,170 +108,170 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1dom_1_1element.html',
simdjson_inline bool simdjson::dom::document_stream::iterator::operator!= simdjson_inline bool simdjson::dom::document_stream::iterator::operator!= (const iteratorconst iterator other) const
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + +simdjson_result< element >  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline element () noexcept
simdjson_inline element () noexcept
 Create a new, invalid element.
 
simdjson_inline element_type type () const noexcept
simdjson_inline element_type type () const noexcept
 The type of this element.
 
simdjson_result< arrayget_array () const noexcept
simdjson_result< arrayget_array () const noexcept
 Cast this element to an array.
 
simdjson_result< objectget_object () const noexcept
simdjson_result< objectget_object () const noexcept
 Cast this element to an object.
 
simdjson_result< const char * > get_c_str () const noexcept
simdjson_result< const char * > get_c_str () const noexcept
 Cast this element to a null-terminated C string.
 
simdjson_result< size_t > get_string_length () const noexcept
simdjson_result< size_t > get_string_length () const noexcept
 Gives the length in bytes of the string.
 
simdjson_result< std::string_view > get_string () const noexcept
simdjson_result< std::string_view > get_string () const noexcept
 Cast this element to a string.
 
simdjson_result< int64_tget_int64 () const noexcept
simdjson_result< int64_t > get_int64 () const noexcept
 Cast this element to a signed integer.
 
simdjson_result< uint64_tget_uint64 () const noexcept
simdjson_result< uint64_t > get_uint64 () const noexcept
 Cast this element to an unsigned integer.
 
simdjson_result< doubleget_double () const noexcept
simdjson_result< double > get_double () const noexcept
 Cast this element to a double floating-point.
 
simdjson_result< boolget_bool () const noexcept
simdjson_result< bool > get_bool () const noexcept
 Cast this element to a bool.
 
bool is_array () const noexcept
bool is_array () const noexcept
 Whether this element is a json array.
 
bool is_object () const noexcept
bool is_object () const noexcept
 Whether this element is a json object.
 
bool is_string () const noexcept
bool is_string () const noexcept
 Whether this element is a json string.
 
bool is_int64 () const noexcept
bool is_int64 () const noexcept
 Whether this element is a json number that fits in a signed 64-bit integer.
 
bool is_uint64 () const noexcept
bool is_uint64 () const noexcept
 Whether this element is a json number that fits in an unsigned 64-bit integer.
 
bool is_double () const noexcept
bool is_double () const noexcept
 Whether this element is a json number that fits in a double.
 
bool is_number () const noexcept
bool is_number () const noexcept
 Whether this element is a json number.
 
bool is_bool () const noexcept
bool is_bool () const noexcept
 Whether this element is a json true or false.
 
bool is_null () const noexcept
bool is_null () const noexcept
 Whether this element is a json null.
 
template<typename T >
simdjson_inline bool is () const noexcept
template<typename T >
simdjson_inline bool is () const noexcept
 Tell whether the value can be cast to provided type (T).
 
template<typename T >
simdjson_result< Tget () const noexcept
template<typename T >
simdjson_result< T > get () const noexcept
 Get the value as the provided type (T).
 
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &value) const noexcept
template<typename T >
simdjson_warn_unused simdjson_inline error_code get (T &value) const noexcept
 Get the value as the provided type (T).
 
template<typename T >
void tie (T &value, error_code &error) &&noexcept
template<typename T >
void tie (T &value, error_code &error) &&noexcept
 Get the value as the provided type (T), setting error if it's not the given type.
 
 operator bool () const noexcept(false)
 operator bool () const noexcept(false)
 Read this element as a boolean.
 
 operator const char * () const noexcept(false)
 operator const char * () const noexcept(false)
 Read this element as a null-terminated UTF-8 string.
 
 operator std::string_view () const noexcept(false)
 operator std::string_view () const noexcept(false)
 Read this element as a null-terminated UTF-8 string.
 
 operator uint64_t () const noexcept(false)
 operator uint64_t () const noexcept(false)
 Read this element as an unsigned integer.
 
 operator int64_t () const noexcept(false)
 operator int64_t () const noexcept(false)
 Read this element as an signed integer.
 
 operator double () const noexcept(false)
 operator double () const noexcept(false)
 Read this element as an double.
 
 operator array () const noexcept(false)
 operator array () const noexcept(false)
 Read this element as a JSON array.
 
 operator object () const noexcept(false)
 operator object () const noexcept(false)
 Read this element as a JSON object (key/value pairs).
 
dom::array::iterator begin () const noexcept(false)
dom::array::iterator begin () const noexcept(false)
 Iterate over each element in this array.
 
dom::array::iterator end () const noexcept(false)
dom::array::iterator end () const noexcept(false)
 Iterate over each element in this array.
 
simdjson_result< elementoperator[] (std::string_view key) const noexcept
simdjson_result< elementoperator[] (std::string_view key) const noexcept
 Get the value associated with the given key.
 
simdjson_result< elementoperator[] (const char *key) const noexcept
simdjson_result< elementoperator[] (const char *key) const noexcept
 Get the value associated with the given key.
 
-simdjson_result< elementoperator[] (int) const noexcept=delete
operator[] (int) const noexcept=delete
 
simdjson_result< elementat_pointer (const std::string_view json_pointer) const noexcept
simdjson_result< elementat_pointer (const std::string_view json_pointer) const noexcept
 Get the value associated with the given JSON pointer.
 
simdjson_result< std::vector< element > > at_path_with_wildcard (const std::string_view json_path) const noexcept
simdjson_result< std::vector< element > > at_path_with_wildcard (const std::string_view json_path) const noexcept
 
simdjson_result< elementat_path (std::string_view json_path) const noexcept
simdjson_result< elementat_path (std::string_view json_path) const noexcept
 Get the value associated with the given JSONPath expression.
 
simdjson_result< elementat (const std::string_view json_pointer) const noexcept
simdjson_result< elementat (const std::string_view json_pointer) const noexcept
 Version 0.4 of simdjson used an incorrect interpretation of the JSON Pointer standard and allowed the following :
 
simdjson_result< elementat (size_t index) const noexcept
simdjson_result< elementat (size_t index) const noexcept
 Get the value at the given index.
 
simdjson_result< elementat_key (std::string_view key) const noexcept
simdjson_result< elementat_key (std::string_view key) const noexcept
 Get the value associated with the given key.
 
simdjson_result< elementat_key_case_insensitive (std::string_view key) const noexcept
simdjson_result< elementat_key_case_insensitive (std::string_view key) const noexcept
 Get the value associated with the given key in a case-insensitive manner.
 
bool operator< (const element &other) const noexcept
bool operator< (const element &other) const noexcept
 operator< defines a total order for element allowing to use them in ordered C++ STL containers
 
bool operator== (const element &other) const noexcept
bool operator== (const element &other) const noexcept
 operator== allows to verify if two element values reference the same JSON item
 
template<>
simdjson_warn_unused simdjson_inline error_code get (element &value) const noexcept
simdjson_warn_unused simdjson_inline error_code get (element &value) const noexcept
 
template<>
simdjson_result< arrayget () const noexcept
simdjson_result< arrayget () const noexcept
 
template<>
simdjson_result< objectget () const noexcept
simdjson_result< objectget () const noexcept
 
template<>
simdjson_result< const char * > get () const noexcept
simdjson_result< const char * > get () const noexcept
 
template<>
simdjson_result< int64_tget () const noexcept
simdjson_result< int64_t > get () const noexcept
 
template<>
simdjson_result< uint64_tget () const noexcept
simdjson_result< uint64_t > get () const noexcept
 
template<>
simdjson_result< doubleget () const noexcept
simdjson_result< double > get () const noexcept
 
template<>
simdjson_result< boolget () const noexcept
simdjson_result< bool > get () const noexcept
 

Detailed Description

@@ -322,7 +322,7 @@ Public Member Functions
simdjson_result< element > simdjson::dom::element::at (const std::string_view const std::string_view  json_pointer) const
simdjson_result< std::vector< element > > simdjson::dom::element::at_path_with_wildcard (const std::string_view const std::string_view  json_path) const
simdjson_result< element > simdjson::dom::element::at_pointer (const std::string_view const std::string_view  json_pointer) const
- + @@ -736,7 +736,7 @@ template<>
simdjson_result< bool > simdjson::dom::element::get simdjson_result< bool > simdjson::dom::element::get ( ) const - + @@ -765,7 +765,7 @@ template<>
simdjson_result< const char * > simdjson::dom::element::get simdjson_result< const char * > simdjson::dom::element::get ( ) const - + @@ -794,7 +794,7 @@ template<>
simdjson_result< int64_t > simdjson::dom::element::get simdjson_result< int64_t > simdjson::dom::element::get ( ) const - + @@ -823,7 +823,7 @@ template<>
simdjson_result< uint64_t > simdjson::dom::element::get simdjson_result< uint64_t > simdjson::dom::element::get ( ) const - + @@ -846,13 +846,13 @@ template<>
-template<typename T >
+template<typename T >
simdjson_result< double > simdjson::dom::element::get simdjson_result< double > simdjson::dom::element::get ( ) const
- + @@ -922,7 +922,7 @@ template<>
-template<typename T >
+template<typename T >
simdjson_result< T > simdjson::dom::element::get simdjson_result< T > simdjson::dom::element::get ( ) const
- + @@ -1008,7 +1008,7 @@ template<typename
@@ -930,7 +930,7 @@ template<typename
simdjson_warn_unused simdjson_inline error_code simdjson::dom::element::get (TT &  value) const
- + @@ -1038,7 +1038,7 @@ template<typename
simdjson_result< bool > simdjson::dom::element::get_bool simdjson_result< bool > simdjson::dom::element::get_bool ( ) const - + @@ -1071,7 +1071,7 @@ template<typename
simdjson_result< const char * > simdjson::dom::element::get_c_str simdjson_result< const char * > simdjson::dom::element::get_c_str ( ) const - + @@ -1101,7 +1101,7 @@ template<typename
simdjson_result< double > simdjson::dom::element::get_double simdjson_result< double > simdjson::dom::element::get_double ( ) const - + @@ -1223,7 +1223,7 @@ template<typename
simdjson_result< int64_t > simdjson::dom::element::get_int64 simdjson_result< int64_t > simdjson::dom::element::get_int64 ( ) const - + @@ -1249,13 +1249,13 @@ template<typename
-template<typename T >
+template<typename T >
simdjson_result< uint64_t > simdjson::dom::element::get_uint64 simdjson_result< uint64_t > simdjson::dom::element::get_uint64 ( ) const
- + @@ -1297,7 +1297,7 @@ template<typename
simdjson_inline bool simdjson::dom::element::is simdjson_inline bool simdjson::dom::element::is ( ) const - + @@ -1311,7 +1311,7 @@ template<typename

Whether this element is a json array.

-

Equivalent to is<array>().

+

Equivalent to is<array>().

Definition at line 350 of file element-inl.h.

@@ -1327,7 +1327,7 @@ template<typename
bool simdjson::dom::element::is_array bool simdjson::dom::element::is_array ( ) const - + @@ -1341,7 +1341,7 @@ template<typename

Whether this element is a json true or false.

-

Equivalent to is<bool>().

+

Equivalent to is<bool>().

Definition at line 356 of file element-inl.h.

@@ -1357,7 +1357,7 @@ template<typename
bool simdjson::dom::element::is_bool bool simdjson::dom::element::is_bool ( ) const - + @@ -1371,7 +1371,7 @@ template<typename

Whether this element is a json number that fits in a double.

-

Equivalent to is<double>().

+

Equivalent to is<double>().

Definition at line 355 of file element-inl.h.

@@ -1387,7 +1387,7 @@ template<typename
bool simdjson::dom::element::is_double bool simdjson::dom::element::is_double ( ) const - + @@ -1401,7 +1401,7 @@ template<typename

Whether this element is a json number that fits in a signed 64-bit integer.

-

Equivalent to is<int64_t>().

+

Equivalent to is<int64_t>().

Definition at line 353 of file element-inl.h.

@@ -1417,7 +1417,7 @@ template<typename
bool simdjson::dom::element::is_int64 bool simdjson::dom::element::is_int64 ( ) const - + @@ -1446,7 +1446,7 @@ template<typename
bool simdjson::dom::element::is_null bool simdjson::dom::element::is_null ( ) const - + @@ -1476,7 +1476,7 @@ template<typename
bool simdjson::dom::element::is_number bool simdjson::dom::element::is_number ( ) const - + @@ -1490,7 +1490,7 @@ template<typename

Whether this element is a json object.

-

Equivalent to is<object>().

+

Equivalent to is<object>().

Definition at line 351 of file element-inl.h.

@@ -1506,7 +1506,7 @@ template<typename
bool simdjson::dom::element::is_object bool simdjson::dom::element::is_object ( ) const - + @@ -1520,7 +1520,7 @@ template<typename

Whether this element is a json string.

-

Equivalent to is<std::string_view>() or is<const char *>().

+

Equivalent to is<std::string_view>() or is<const char *>().

Definition at line 352 of file element-inl.h.

@@ -1536,7 +1536,7 @@ template<typename
bool simdjson::dom::element::is_string bool simdjson::dom::element::is_string ( ) const - + @@ -1550,7 +1550,7 @@ template<typename

Whether this element is a json number that fits in an unsigned 64-bit integer.

-

Equivalent to is<uint64_t>().

+

Equivalent to is<uint64_t>().

Definition at line 354 of file element-inl.h.

@@ -1602,7 +1602,7 @@ template<typename
bool simdjson::dom::element::is_uint64 bool simdjson::dom::element::is_uint64 ( ) const - + @@ -1638,7 +1638,7 @@ template<typename
simdjson::dom::element::operator bool simdjson::dom::element::operator bool ( ) const - + @@ -1676,7 +1676,7 @@ template<typename
simdjson::dom::element::operator const char * simdjson::dom::element::operator const char * ( ) const - + @@ -1712,7 +1712,7 @@ template<typename
simdjson::dom::element::operator double simdjson::dom::element::operator double ( ) const - + @@ -1822,7 +1822,7 @@ template<typename
simdjson::dom::element::operator int64_t simdjson::dom::element::operator int64_t ( ) const - + @@ -1859,9 +1859,9 @@ template<typename
simdjson::dom::element::operator uint64_t simdjson::dom::element::operator uint64_t ( ) const - + - + @@ -1890,9 +1890,9 @@ template<typename
bool simdjson::dom::element::operator< bool simdjson::dom::element::operator< (const elementconst element other) const
- + - + @@ -1923,7 +1923,7 @@ template<typename - + @@ -1995,15 +1995,15 @@ template<typename
-template<typename T >
+template<typename T >
bool simdjson::dom::element::operator== bool simdjson::dom::element::operator== (const elementconst element other) const
simdjson_result< element > simdjson::dom::element::operator[] (const charconst char *  key) const
- + @@ -591,7 +591,7 @@ Public Member Functions
- + - + diff --git a/classsimdjson_1_1dom_1_1key__value__pair-members.html b/classsimdjson_1_1dom_1_1key__value__pair-members.html index 106a5f2e4..573a1b432 100644 --- a/classsimdjson_1_1dom_1_1key__value__pair-members.html +++ b/classsimdjson_1_1dom_1_1key__value__pair-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1key__value__pair.html b/classsimdjson_1_1dom_1_1key__value__pair.html index 5e24104c6..0c717ca02 100644 --- a/classsimdjson_1_1dom_1_1key__value__pair.html +++ b/classsimdjson_1_1dom_1_1key__value__pair.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1object-members.html b/classsimdjson_1_1dom_1_1object-members.html index 13f7eab78..0e3934fd0 100644 --- a/classsimdjson_1_1dom_1_1object-members.html +++ b/classsimdjson_1_1dom_1_1object-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1object.html b/classsimdjson_1_1dom_1_1object.html index 1cfc6f52a..82fbd9f16 100644 --- a/classsimdjson_1_1dom_1_1object.html +++ b/classsimdjson_1_1dom_1_1object.html @@ -29,7 +29,7 @@ @@ -114,49 +114,49 @@ Classes
void simdjson::dom::element::tie void simdjson::dom::element::tie (TT &  value,
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + +simdjson_result< element >  - + - + - + - + - + - + - + - +

Public Member Functions

simdjson_inline object () noexcept
simdjson_inline object () noexcept
 Create a new, invalid object.
 
iterator begin () const noexcept
iterator begin () const noexcept
 Return the first key/value pair.
 
iterator end () const noexcept
iterator end () const noexcept
 One past the last key/value pair.
 
size_t size () const noexcept
size_t size () const noexcept
 Get the size of the object (number of keys).
 
simdjson_result< elementoperator[] (std::string_view key) const noexcept
simdjson_result< elementoperator[] (std::string_view key) const noexcept
 Get the value associated with the given key.
 
simdjson_result< elementoperator[] (const char *key) const noexcept
simdjson_result< elementoperator[] (const char *key) const noexcept
 Get the value associated with the given key.
 
-simdjson_result< elementoperator[] (int) const noexcept=delete
operator[] (int) const noexcept=delete
 
simdjson_result< elementat_pointer (std::string_view json_pointer) const noexcept
simdjson_result< elementat_pointer (std::string_view json_pointer) const noexcept
 Get the value associated with the given JSON pointer.
 
void process_json_path_of_child_elements (std::vector< element >::iterator &current, std::vector< element >::iterator &end, const std::string_view &path_suffix, std::vector< element > &accumulator) const noexcept
void process_json_path_of_child_elements (std::vector< element >::iterator &current, std::vector< element >::iterator &end, const std::string_view &path_suffix, std::vector< element > &accumulator) const noexcept
 Recursive function which processes the JSON path of each child element.
 
simdjson_result< std::vector< element > > at_path_with_wildcard (std::string_view json_path) const noexcept
simdjson_result< std::vector< element > > at_path_with_wildcard (std::string_view json_path) const noexcept
 Adds support for JSONPath expression with wildcards '*'.
 
simdjson_result< elementat_path (std::string_view json_path) const noexcept
simdjson_result< elementat_path (std::string_view json_path) const noexcept
 Get the value associated with the given JSONPath expression.
 
simdjson_result< elementat_key (std::string_view key) const noexcept
simdjson_result< elementat_key (std::string_view key) const noexcept
 Get the value associated with the given key.
 
std::vector< element > & get_values (std::vector< element > &out) const noexcept
std::vector< element > & get_values (std::vector< element > &out) const noexcept
 Gets the values associated with keys of an object This function has linear-time complexity: the keys are checked one by one.
 
simdjson_result< elementat_key_case_insensitive (std::string_view key) const noexcept
simdjson_result< elementat_key_case_insensitive (std::string_view key) const noexcept
 Get the value associated with the given key in a case-insensitive manner.
 
 operator element () const noexcept
 operator element () const noexcept
 Implicitly convert object to element.
 
@@ -513,7 +513,7 @@ Public Member Functions
simdjson_result< element > simdjson::dom::object::operator[] (const charconst char *  key) const
- + @@ -605,7 +605,7 @@ Public Member Functions - + diff --git a/classsimdjson_1_1dom_1_1object_1_1iterator-members.html b/classsimdjson_1_1dom_1_1object_1_1iterator-members.html index dcc3b69cb..feeb8a8d5 100644 --- a/classsimdjson_1_1dom_1_1object_1_1iterator-members.html +++ b/classsimdjson_1_1dom_1_1object_1_1iterator-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1object_1_1iterator.html b/classsimdjson_1_1dom_1_1object_1_1iterator.html index 7277cda2e..8201c39df 100644 --- a/classsimdjson_1_1dom_1_1object_1_1iterator.html +++ b/classsimdjson_1_1dom_1_1object_1_1iterator.html @@ -29,7 +29,7 @@ @@ -104,64 +104,64 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1dom_1_1object_1_1iter
void simdjson::dom::object::process_json_path_of_child_elements void simdjson::dom::object::process_json_path_of_child_elements ( std::vector< element >::iterator &  current,
const std::string_view & const std::string_view &  path_suffix,
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - +

Public Types

using value_type = const key_value_pair
using value_type = const key_value_pair
 
using difference_type = std::ptrdiff_t
using difference_type = std::ptrdiff_t
 
using pointer = void
using pointer = void
 
using reference = value_type
using reference = value_type
 
using iterator_category = std::forward_iterator_tag
using iterator_category = std::forward_iterator_tag
 
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + +  +iterator

Public Member Functions

reference operator* () const noexcept
reference operator* () const noexcept
 Get the actual key/value pair.
 
iteratoroperator++ () noexcept
iteratoroperator++ () noexcept
 Get the next key/value pair.
 
iterator operator++ (int) noexcept
iterator operator++ (int) noexcept
 Get the next key/value pair.
 
bool operator!= (const iterator &other) const noexcept
bool operator!= (const iterator &other) const noexcept
 Check if these values come from the same place in the JSON.
 
bool operator== (const iterator &other) const noexcept
bool operator== (const iterator &other) const noexcept
 
bool operator< (const iterator &other) const noexcept
bool operator< (const iterator &other) const noexcept
 
bool operator<= (const iterator &other) const noexcept
bool operator<= (const iterator &other) const noexcept
 
bool operator>= (const iterator &other) const noexcept
bool operator>= (const iterator &other) const noexcept
 
bool operator> (const iterator &other) const noexcept
bool operator> (const iterator &other) const noexcept
 
std::string_view key () const noexcept
std::string_view key () const noexcept
 Get the key of this key/value pair.
 
uint32_t key_length () const noexcept
uint32_t key_length () const noexcept
 Get the length (in bytes) of the key in this key/value pair.
 
bool key_equals (std::string_view o) const noexcept
bool key_equals (std::string_view o) const noexcept
 Returns true if the key in this key/value pair is equal to the provided string_view.
 
bool key_equals_case_insensitive (std::string_view o) const noexcept
bool key_equals_case_insensitive (std::string_view o) const noexcept
 Returns true if the key in this key/value pair is equal to the provided string_view in a case-insensitive manner.
 
const charkey_c_str () const noexcept
const char * key_c_str () const noexcept
 Get the key of this key/value pair.
 
element value () const noexcept
element value () const noexcept
 Get the value of this key/value pair.
 
iterator (const iterator &) noexcept=default
iterator (const iterator &) noexcept=default
 
-iteratoroperator= (const iterator &) noexcept=default
operator= (const iterator &) noexcept=default
 

Detailed Description

@@ -175,7 +175,7 @@ Public Member Functions
- +
using simdjson::dom::object::iterator::difference_type = std::ptrdiff_tusing simdjson::dom::object::iterator::difference_type = std::ptrdiff_t
@@ -191,7 +191,7 @@ Public Member Functions
- +
using simdjson::dom::object::iterator::iterator_category = std::forward_iterator_tagusing simdjson::dom::object::iterator::iterator_category = std::forward_iterator_tag
@@ -207,7 +207,7 @@ Public Member Functions
- +
using simdjson::dom::object::iterator::pointer = voidusing simdjson::dom::object::iterator::pointer = void
@@ -223,7 +223,7 @@ Public Member Functions
- +
using simdjson::dom::object::iterator::reference = value_typeusing simdjson::dom::object::iterator::reference = value_type
@@ -239,7 +239,7 @@ Public Member Functions
- +
using simdjson::dom::object::iterator::value_type = const key_value_pairusing simdjson::dom::object::iterator::value_type = const key_value_pair
@@ -288,7 +288,7 @@ Public Member Functions
- + @@ -317,7 +317,7 @@ Public Member Functions
const char * simdjson::dom::object::iterator::key_c_str const char * simdjson::dom::object::iterator::key_c_str ( ) const
- + @@ -349,7 +349,7 @@ Public Member Functions
bool simdjson::dom::object::iterator::key_equals bool simdjson::dom::object::iterator::key_equals ( std::string_view  o)
- + @@ -380,7 +380,7 @@ Public Member Functions
bool simdjson::dom::object::iterator::key_equals_case_insensitive bool simdjson::dom::object::iterator::key_equals_case_insensitive ( std::string_view  o)
- + @@ -410,9 +410,9 @@ Public Member Functions
uint32_t simdjson::dom::object::iterator::key_length uint32_t simdjson::dom::object::iterator::key_length ( ) const
- + - + @@ -441,7 +441,7 @@ Public Member Functions
bool simdjson::dom::object::iterator::operator!= bool simdjson::dom::object::iterator::operator!= (const iteratorconst iterator other) const
- + @@ -502,7 +502,7 @@ Public Member Functions - + @@ -531,9 +531,9 @@ Public Member Functions
const key_value_pair simdjson::dom::object::iterator::operator* const key_value_pair simdjson::dom::object::iterator::operator* ( ) const
object::iterator simdjson::dom::object::iterator::operator++ (int int  )
- + - + @@ -559,9 +559,9 @@ Public Member Functions
bool simdjson::dom::object::iterator::operator< bool simdjson::dom::object::iterator::operator< (const iteratorconst iterator other) const
- + - + @@ -587,9 +587,9 @@ Public Member Functions
bool simdjson::dom::object::iterator::operator<= bool simdjson::dom::object::iterator::operator<= (const iteratorconst iterator other) const
- + - + @@ -615,9 +615,9 @@ Public Member Functions diff --git a/concepts_8h_source.html b/concepts_8h_source.html index a5a85f938..e01ee6938 100644 --- a/concepts_8h_source.html +++ b/concepts_8h_source.html @@ -29,7 +29,7 @@ @@ -241,25 +241,44 @@ $(document).ready(function(){initNavTree('concepts_8h_source.html',''); initResi
143 std::ranges::input_range<T> && !string_like<T> && !concepts::string_view_keyed_map<T>;
144
145
-
146} // namespace concepts
-
147
-
148
-
152template <typename Tag, typename... Args>
-
153concept tag_invocable = requires(Tag tag, Args... args) {
-
154 tag_invoke(std::forward<Tag>(tag), std::forward<Args>(args)...);
-
155};
-
156
-
157template <typename Tag, typename... Args>
-
158concept nothrow_tag_invocable =
-
159 tag_invocable<Tag, Args...> && requires(Tag tag, Args... args) {
-
160 {
-
161 tag_invoke(std::forward<Tag>(tag), std::forward<Args>(args)...)
-
162 } noexcept;
-
163 };
+
146
+
147// Concept: Indexable container that is not a string or associative container
+
148// Accepts: std::vector, std::array, std::deque (have operator[], value_type, not string_like)
+
149// Rejects: std::string (string_like), std::list (no operator[]), std::map (has key_type)
+
150template<typename Container>
+
151concept indexable_container = requires {
+
152 typename Container::value_type;
+
153 requires !concepts::string_like<Container>;
+
154 requires !requires { typename Container::key_type; }; // Reject maps/sets
+
155 requires requires(Container& c, std::size_t i) {
+
156 { c[i] } -> std::convertible_to<typename Container::value_type>;
+
157 };
+
158};
+
159
+
160
+
161// Variable template to use with std::meta::substitute
+
162template<typename Container>
+
163constexpr bool indexable_container_v = indexable_container<Container>;
164
-
165} // namespace simdjson
-
166#endif // SIMDJSON_SUPPORTS_CONCEPTS
-
167#endif // SIMDJSON_CONCEPTS_H
+
165} // namespace concepts
+
166
+
167
+
171template <typename Tag, typename... Args>
+
172concept tag_invocable = requires(Tag tag, Args... args) {
+
173 tag_invoke(std::forward<Tag>(tag), std::forward<Args>(args)...);
+
174};
+
175
+
176template <typename Tag, typename... Args>
+
177concept nothrow_tag_invocable =
+
178 tag_invocable<Tag, Args...> && requires(Tag tag, Args... args) {
+
179 {
+
180 tag_invoke(std::forward<Tag>(tag), std::forward<Args>(args)...)
+
181 } noexcept;
+
182 };
+
183
+
184} // namespace simdjson
+
185#endif // SIMDJSON_SUPPORTS_CONCEPTS
+
186#endif // SIMDJSON_CONCEPTS_H
The top level simdjson namespace, containing everything the library provides.
Definition base.h:8
diff --git a/constevalutil_8h_source.html b/constevalutil_8h_source.html index aa4396a1a..347785368 100644 --- a/constevalutil_8h_source.html +++ b/constevalutil_8h_source.html @@ -29,7 +29,7 @@ diff --git a/convert-inl_8h_source.html b/convert-inl_8h_source.html index 81ab37faa..d279e1dd3 100644 --- a/convert-inl_8h_source.html +++ b/convert-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/convert_8h_source.html b/convert_8h_source.html index 45ef4b271..1aaa0ac11 100644 --- a/convert_8h_source.html +++ b/convert_8h_source.html @@ -29,7 +29,7 @@ diff --git a/dependencies_8h_source.html b/dependencies_8h_source.html index 19f0e29f4..fcdbba752 100644 --- a/dependencies_8h_source.html +++ b/dependencies_8h_source.html @@ -29,7 +29,7 @@ diff --git a/deprecated.html b/deprecated.html index 9f5db67d2..560246b88 100644 --- a/deprecated.html +++ b/deprecated.html @@ -29,7 +29,7 @@ diff --git a/deserialize_8h_source.html b/deserialize_8h_source.html index f08ceec0c..909ed1ae0 100644 --- a/deserialize_8h_source.html +++ b/deserialize_8h_source.html @@ -29,7 +29,7 @@ diff --git a/dir_004b9f9c64771ef6ac3be5ca102ad096.html b/dir_004b9f9c64771ef6ac3be5ca102ad096.html index 86c9045d5..f85a4b0b1 100644 --- a/dir_004b9f9c64771ef6ac3be5ca102ad096.html +++ b/dir_004b9f9c64771ef6ac3be5ca102ad096.html @@ -29,7 +29,7 @@ diff --git a/dir_0d145e48adcb2584d6aad0aa1d711d9e.html b/dir_0d145e48adcb2584d6aad0aa1d711d9e.html index a419b8ddd..9a9a79f85 100644 --- a/dir_0d145e48adcb2584d6aad0aa1d711d9e.html +++ b/dir_0d145e48adcb2584d6aad0aa1d711d9e.html @@ -29,7 +29,7 @@ diff --git a/dir_0fee190c3bc9a7d22e6d44901a62fa54.html b/dir_0fee190c3bc9a7d22e6d44901a62fa54.html index a687c2c99..c537d4080 100644 --- a/dir_0fee190c3bc9a7d22e6d44901a62fa54.html +++ b/dir_0fee190c3bc9a7d22e6d44901a62fa54.html @@ -29,7 +29,7 @@ diff --git a/dir_438095d7beafc60159803dc5832a82bd.html b/dir_438095d7beafc60159803dc5832a82bd.html index 61d3e4f35..13048bfcf 100644 --- a/dir_438095d7beafc60159803dc5832a82bd.html +++ b/dir_438095d7beafc60159803dc5832a82bd.html @@ -29,7 +29,7 @@ diff --git a/dir_49a0b2767ded4a45005c5d6720a18cd1.html b/dir_49a0b2767ded4a45005c5d6720a18cd1.html index 0030dafb8..e44770aba 100644 --- a/dir_49a0b2767ded4a45005c5d6720a18cd1.html +++ b/dir_49a0b2767ded4a45005c5d6720a18cd1.html @@ -29,7 +29,7 @@ diff --git a/dir_53368a02099cf3699f2996a5d88d70b6.html b/dir_53368a02099cf3699f2996a5d88d70b6.html index eedd38413..abdb118dd 100644 --- a/dir_53368a02099cf3699f2996a5d88d70b6.html +++ b/dir_53368a02099cf3699f2996a5d88d70b6.html @@ -29,7 +29,7 @@ diff --git a/dir_76d8247d4498211a7d04a3794a38eb71.html b/dir_76d8247d4498211a7d04a3794a38eb71.html index 276444195..ddadb80c6 100644 --- a/dir_76d8247d4498211a7d04a3794a38eb71.html +++ b/dir_76d8247d4498211a7d04a3794a38eb71.html @@ -29,7 +29,7 @@ diff --git a/dir_7796bb4b727f918c96faee1bdd50e49a.html b/dir_7796bb4b727f918c96faee1bdd50e49a.html index aa5d63fb8..05597d0cd 100644 --- a/dir_7796bb4b727f918c96faee1bdd50e49a.html +++ b/dir_7796bb4b727f918c96faee1bdd50e49a.html @@ -29,7 +29,7 @@ @@ -112,6 +112,8 @@ Files + + diff --git a/dir_7796bb4b727f918c96faee1bdd50e49a.js b/dir_7796bb4b727f918c96faee1bdd50e49a.js index 7cc481297..26bf3f96f 100644 --- a/dir_7796bb4b727f918c96faee1bdd50e49a.js +++ b/dir_7796bb4b727f918c96faee1bdd50e49a.js @@ -6,6 +6,7 @@ var dir_7796bb4b727f918c96faee1bdd50e49a = [ "array_iterator-inl.h", "array__iterator-inl_8h_source.html", null ], [ "array_iterator.h", "array__iterator_8h_source.html", null ], [ "base.h", "generic_2ondemand_2base_8h_source.html", null ], + [ "compile_time_accessors.h", "compile__time__accessors_8h_source.html", null ], [ "dependencies.h", "ondemand_2dependencies_8h_source.html", null ], [ "deserialize.h", "deserialize_8h_source.html", null ], [ "document-inl.h", "generic_2ondemand_2document-inl_8h_source.html", null ], diff --git a/dir_9b01d0736ef91c92ca1a5074971144b1.html b/dir_9b01d0736ef91c92ca1a5074971144b1.html index 894aca06d..efb732d89 100644 --- a/dir_9b01d0736ef91c92ca1a5074971144b1.html +++ b/dir_9b01d0736ef91c92ca1a5074971144b1.html @@ -29,7 +29,7 @@ diff --git a/dir_aff943445258981e0d80c1f13c0bf97f.html b/dir_aff943445258981e0d80c1f13c0bf97f.html index 0c6cd2859..7d7d019f7 100644 --- a/dir_aff943445258981e0d80c1f13c0bf97f.html +++ b/dir_aff943445258981e0d80c1f13c0bf97f.html @@ -29,7 +29,7 @@ diff --git a/dir_b35ffb90479583e132afc246e9b6e77a.html b/dir_b35ffb90479583e132afc246e9b6e77a.html index aff837f5b..319903c98 100644 --- a/dir_b35ffb90479583e132afc246e9b6e77a.html +++ b/dir_b35ffb90479583e132afc246e9b6e77a.html @@ -29,7 +29,7 @@ diff --git a/dir_ba336e6e255a3bf0b1427b51513cdc60.html b/dir_ba336e6e255a3bf0b1427b51513cdc60.html index 4bfb84f0c..db2dea1e9 100644 --- a/dir_ba336e6e255a3bf0b1427b51513cdc60.html +++ b/dir_ba336e6e255a3bf0b1427b51513cdc60.html @@ -29,7 +29,7 @@ diff --git a/dir_bdd5d78d80e110a51a7313218161f5b4.html b/dir_bdd5d78d80e110a51a7313218161f5b4.html index c1593f3b3..4c6e409c7 100644 --- a/dir_bdd5d78d80e110a51a7313218161f5b4.html +++ b/dir_bdd5d78d80e110a51a7313218161f5b4.html @@ -29,7 +29,7 @@ diff --git a/dir_c9268d037c0b2c52e0345956131bd131.html b/dir_c9268d037c0b2c52e0345956131bd131.html index df483fa2b..19da2fdb5 100644 --- a/dir_c9268d037c0b2c52e0345956131bd131.html +++ b/dir_c9268d037c0b2c52e0345956131bd131.html @@ -29,7 +29,7 @@ diff --git a/dir_cae07bd9608c9724f8cbc862866fc74a.html b/dir_cae07bd9608c9724f8cbc862866fc74a.html index f3673a4ed..75dae1cef 100644 --- a/dir_cae07bd9608c9724f8cbc862866fc74a.html +++ b/dir_cae07bd9608c9724f8cbc862866fc74a.html @@ -29,7 +29,7 @@ diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index c0897c5b2..f53a0606a 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -29,7 +29,7 @@ diff --git a/dir_e68e8157741866f444e17edd764ebbae.html b/dir_e68e8157741866f444e17edd764ebbae.html index af7d7dc43..a5d28a170 100644 --- a/dir_e68e8157741866f444e17edd764ebbae.html +++ b/dir_e68e8157741866f444e17edd764ebbae.html @@ -29,7 +29,7 @@ diff --git a/dom_2array-inl_8h_source.html b/dom_2array-inl_8h_source.html index 728dcdf58..ae8a7779b 100644 --- a/dom_2array-inl_8h_source.html +++ b/dom_2array-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -178,199 +178,199 @@ $(document).ready(function(){initNavTree('dom_2array-inl_8h_source.html',''); in
73//
74// array inline implementation
75//
-
76simdjson_inline array::array() noexcept : tape{} {}
+
76simdjson_inline array::array() noexcept : tape{} {}
77simdjson_inline array::array(const internal::tape_ref &_tape) noexcept : tape{_tape} {}
- +
78inline array::iterator array::begin() const noexcept {
79 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
80 return internal::tape_ref(tape.doc, tape.json_index + 1);
81}
- +
82inline array::iterator array::end() const noexcept {
83 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
84 return internal::tape_ref(tape.doc, tape.after_element() - 1);
85}
-
86inline size_t array::size() const noexcept {
+
86inline size_t array::size() const noexcept {
87 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
88 return tape.scope_count();
89}
- +
90inline size_t array::number_of_slots() const noexcept {
91 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
92 return tape.matching_brace_index() - tape.json_index;
93}
-
94inline simdjson_result<element> array::at_pointer(std::string_view json_pointer) const noexcept {
+
94inline simdjson_result<element> array::at_pointer(std::string_view json_pointer) const noexcept {
95 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
-
96 if(json_pointer.empty()) { // an empty string means that we return the current node
+
96 if(json_pointer.empty()) { // an empty string means that we return the current node
97 return element(this->tape); // copy the current node
-
98 } else if(json_pointer[0] != '/') { // otherwise there is an error
+
98 } else if(json_pointer[0] != '/') { // otherwise there is an error
100 }
-
101 json_pointer = json_pointer.substr(1);
+
101 json_pointer = json_pointer.substr(1);
102 // - means "the append position" or "the element after the end of the array"
103 // We don't support this, because we're returning a real element, not a position.
-
104 if (json_pointer == "-") { return INDEX_OUT_OF_BOUNDS; }
+
104 if (json_pointer == "-") { return INDEX_OUT_OF_BOUNDS; }
105
106 // Read the array index
-
107 size_t array_index = 0;
-
108 size_t i;
-
109 for (i = 0; i < json_pointer.length() && json_pointer[i] != '/'; i++) {
- +
107 size_t array_index = 0;
+
108 size_t i;
+
109 for (i = 0; i < json_pointer.length() && json_pointer[i] != '/'; i++) {
+
110 uint8_t digit = uint8_t(json_pointer[i] - '0');
111 // Check for non-digit in array index. If it's there, we're trying to get a field in an object
-
112 if (digit > 9) { return INCORRECT_TYPE; }
- +
112 if (digit > 9) { return INCORRECT_TYPE; }
+
113 array_index = array_index*10 + digit;
114 }
115
116 // 0 followed by other digits is invalid
-
117 if (i > 1 && json_pointer[0] == '0') { return INVALID_JSON_POINTER; } // "JSON pointer array index has other characters after 0"
+
117 if (i > 1 && json_pointer[0] == '0') { return INVALID_JSON_POINTER; } // "JSON pointer array index has other characters after 0"
118
119 // Empty string is invalid; so is a "/" with no digits before it
-
120 if (i == 0) { return INVALID_JSON_POINTER; } // "Empty string in JSON pointer array index"
+
120 if (i == 0) { return INVALID_JSON_POINTER; } // "Empty string in JSON pointer array index"
121
122 // Get the child
-
123 auto child = array(tape).at(array_index);
+
123 auto child = array(tape).at(array_index);
124 // If there is an error, it ends here
125 if(child.error()) {
126 return child;
127 }
128 // If there is a /, we're not done yet, call recursively.
-
129 if (i < json_pointer.length()) {
-
130 child = child.at_pointer(json_pointer.substr(i));
+
129 if (i < json_pointer.length()) {
+
130 child = child.at_pointer(json_pointer.substr(i));
131 }
132 return child;
133}
134
-
135inline simdjson_result<element> array::at_path(std::string_view json_path) const noexcept {
- -
137 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
-
138 return at_pointer(json_pointer);
+
135inline simdjson_result<element> array::at_path(std::string_view json_path) const noexcept {
+
136 auto json_pointer = json_path_to_pointer_conversion(json_path);
+
137 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
+
138 return at_pointer(json_pointer);
139}
140
-
141inline void array::process_json_path_of_child_elements(std::vector<element>::iterator& current, std::vector<element>::iterator& end, const std::string_view& path_suffix, std::vector<element>& accumulator) const noexcept {
-
142 if (current == end) {
+
141inline void array::process_json_path_of_child_elements(std::vector<element>::iterator& current, std::vector<element>::iterator& end, const std::string_view& path_suffix, std::vector<element>& accumulator) const noexcept {
+
142 if (current == end) {
143 return;
144 }
145
- +
147
148
-
149 for (auto it = current; it != end; ++it) {
-
150 std::vector<element> child_result;
- +
149 for (auto it = current; it != end; ++it) {
+
150 std::vector<element> child_result;
+
151 auto error = it->at_path_with_wildcard(path_suffix).get(child_result);
152 if(error) {
153 continue;
154 }
- -
156 accumulator.insert(accumulator.end(),
-
157 std::make_move_iterator(child_result.begin()),
-
158 std::make_move_iterator(child_result.end()));
+
155 accumulator.reserve(accumulator.size() + child_result.size());
+
156 accumulator.insert(accumulator.end(),
+
157 std::make_move_iterator(child_result.begin()),
+
158 std::make_move_iterator(child_result.end()));
159 }
160}
161
- +
162inline simdjson_result<std::vector<element>> array::at_path_with_wildcard(std::string_view json_path) const noexcept {
163 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
164
-
165 size_t i = 0;
+
165 size_t i = 0;
166 // json_path.starts_with('$') requires C++20.
-
167 if (!json_path.empty() && json_path.front() == '$') {
-
168 i = 1;
+
167 if (!json_path.empty() && json_path.front() == '$') {
+
168 i = 1;
169 }
170
-
171 if (i >= json_path.size() || (json_path[i] != '.' && json_path[i] != '[')) {
+
171 if (i >= json_path.size() || (json_path[i] != '.' && json_path[i] != '[')) {
173 }
174
-
175 if (json_path.find("*") != std::string::npos) {
-
176 std::vector<element> child_values;
+
175 if (json_path.find("*") != std::string::npos) {
+
176 std::vector<element> child_values;
177
178 if (
-
179 (json_path.compare(i, 3, "[*]") == 0 && json_path.size() == i + 3) ||
-
180 (json_path.compare(i, 2,".*") == 0 && json_path.size() == i + 2)
+
179 (json_path.compare(i, 3, "[*]") == 0 && json_path.size() == i + 3) ||
+
180 (json_path.compare(i, 2,".*") == 0 && json_path.size() == i + 2)
181 ) {
-
182 get_values(child_values);
-
183 return child_values;
+
182 get_values(child_values);
+
183 return child_values;
184 }
185
-
186 std::pair<std::string_view, std::string_view> key_and_json_path = get_next_key_and_json_path(json_path);
+
186 std::pair<std::string_view, std::string_view> key_and_json_path = get_next_key_and_json_path(json_path);
187
-
188 std::string_view key = key_and_json_path.first;
- +
188 std::string_view key = key_and_json_path.first;
+
189 json_path = key_and_json_path.second;
190
191 if (key.size() > 0) {
192 if (key == "*") {
-
193 get_values(child_values);
+
193 get_values(child_values);
194 } else {
- -
196 std::string json_pointer = std::string("/") + std::string(key);
-
197 auto error = at_pointer(json_pointer).get(pointer_result);
+
195 element pointer_result;
+
196 std::string json_pointer = std::string("/") + std::string(key);
+
197 auto error = at_pointer(json_pointer).get(pointer_result);
198
199 if (!error) {
-
200 child_values.emplace_back(pointer_result);
+
200 child_values.emplace_back(pointer_result);
201 }
202 }
203
-
204 std::vector<element> result = {};
+
204 std::vector<element> result = {};
205
-
206 if (child_values.size() > 0) {
-
207 std::vector<element>::iterator child_values_begin = child_values.begin();
-
208 std::vector<element>::iterator child_values_end = child_values.end();
+
206 if (child_values.size() > 0) {
+
207 std::vector<element>::iterator child_values_begin = child_values.begin();
+
208 std::vector<element>::iterator child_values_end = child_values.end();
209
-
210 process_json_path_of_child_elements(child_values_begin, child_values_end, json_path, result);
+
210 process_json_path_of_child_elements(child_values_begin, child_values_end, json_path, result);
211 }
212
-
213 return result;
+
213 return result;
214 } else {
216 }
217 } else {
- -
219 auto error = at_path(json_path).get(result);
+
218 element result;
+
219 auto error = at_path(json_path).get(result);
220 if (error) {
221 return error;
222 }
223
-
224 return std::vector<element>{std::move(result)};
+
224 return std::vector<element>{std::move(result)};
225 }
226}
227
-
228inline simdjson_result<element> array::at(size_t index) const noexcept {
+
228inline simdjson_result<element> array::at(size_t index) const noexcept {
229 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
-
230 size_t i=0;
+
230 size_t i=0;
231 for (auto element : *this) {
-
232 if (i == index) { return element; }
-
233 i++;
+
232 if (i == index) { return element; }
+
233 i++;
234 }
235 return INDEX_OUT_OF_BOUNDS;
236}
237
-
238inline std::vector<element>& array::get_values(std::vector<element>& out) const noexcept {
-
239 out.reserve(this->size());
+
238inline std::vector<element>& array::get_values(std::vector<element>& out) const noexcept {
+
239 out.reserve(this->size());
240 for (auto element : *this) {
-
241 out.emplace_back(element);
+
241 out.emplace_back(element);
242 }
243
-
244 return out;
+
244 return out;
245}
246
- +
247inline array::operator element() const noexcept {
248 return element(tape);
249}
@@ -378,44 +378,44 @@ $(document).ready(function(){initNavTree('dom_2array-inl_8h_source.html',''); in
251//
252// array::iterator inline implementation
253//
-
254simdjson_inline array::iterator::iterator(const internal::tape_ref &_tape) noexcept : tape{_tape} { }
+
254simdjson_inline array::iterator::iterator(const internal::tape_ref &_tape) noexcept : tape{_tape} { }
- +
255inline element array::iterator::operator*() const noexcept {
256 return element(tape);
257}
- +
259 tape.json_index = tape.after_element();
260 return *this;
261}
-
263 array::iterator out = *this;
+
263 array::iterator out = *this;
264 ++*this;
-
265 return out;
+
265 return out;
266}
-
267inline bool array::iterator::operator!=(const array::iterator& other) const noexcept {
-
268 return tape.json_index != other.tape.json_index;
+
267inline bool array::iterator::operator!=(const array::iterator& other) const noexcept {
+
268 return tape.json_index != other.tape.json_index;
269}
-
270inline bool array::iterator::operator==(const array::iterator& other) const noexcept {
-
271 return tape.json_index == other.tape.json_index;
+
270inline bool array::iterator::operator==(const array::iterator& other) const noexcept {
+
271 return tape.json_index == other.tape.json_index;
272}
-
273inline bool array::iterator::operator<(const array::iterator& other) const noexcept {
-
274 return tape.json_index < other.tape.json_index;
+
273inline bool array::iterator::operator<(const array::iterator& other) const noexcept {
+
274 return tape.json_index < other.tape.json_index;
275}
-
276inline bool array::iterator::operator<=(const array::iterator& other) const noexcept {
-
277 return tape.json_index <= other.tape.json_index;
+
276inline bool array::iterator::operator<=(const array::iterator& other) const noexcept {
+
277 return tape.json_index <= other.tape.json_index;
278}
-
279inline bool array::iterator::operator>=(const array::iterator& other) const noexcept {
-
280 return tape.json_index >= other.tape.json_index;
+
279inline bool array::iterator::operator>=(const array::iterator& other) const noexcept {
+
280 return tape.json_index >= other.tape.json_index;
281}
-
282inline bool array::iterator::operator>(const array::iterator& other) const noexcept {
-
283 return tape.json_index > other.tape.json_index;
+
282inline bool array::iterator::operator>(const array::iterator& other) const noexcept {
+
283 return tape.json_index > other.tape.json_index;
284}
285
286} // namespace dom
@@ -459,6 +459,7 @@ $(document).ready(function(){initNavTree('dom_2array-inl_8h_source.html',''); in
@ INDEX_OUT_OF_BOUNDS
JSON array index too large.
Definition error.h:39
@ INVALID_JSON_POINTER
Invalid JSON pointer syntax.
Definition error.h:42
std::string json_path_to_pointer_conversion(std::string_view json_path)
Converts JSONPath to JSON Pointer.
+
The result of a simdjson operation that could fail.
Definition error.h:278
diff --git a/dom_2array_8h_source.html b/dom_2array_8h_source.html index 906362e0b..368c59dbd 100644 --- a/dom_2array_8h_source.html +++ b/dom_2array_8h_source.html @@ -29,7 +29,7 @@ @@ -123,20 +123,20 @@ $(document).ready(function(){initNavTree('dom_2array_8h_source.html',''); initRe
21 public:
22 using value_type = element;
23 using difference_type = std::ptrdiff_t;
-
24 using pointer = void;
+
24 using pointer = void;
25 using reference = value_type;
26 using iterator_category = std::forward_iterator_tag;
27
31 inline reference operator*() const noexcept;
37 inline iterator& operator++() noexcept;
43 inline iterator operator++(int) noexcept;
-
49 inline bool operator!=(const iterator& other) const noexcept;
-
50 inline bool operator==(const iterator& other) const noexcept;
+
49 inline bool operator!=(const iterator& other) const noexcept;
+
50 inline bool operator==(const iterator& other) const noexcept;
51
-
52 inline bool operator<(const iterator& other) const noexcept;
-
53 inline bool operator<=(const iterator& other) const noexcept;
-
54 inline bool operator>=(const iterator& other) const noexcept;
-
55 inline bool operator>(const iterator& other) const noexcept;
+
52 inline bool operator<(const iterator& other) const noexcept;
+
53 inline bool operator<=(const iterator& other) const noexcept;
+
54 inline bool operator>=(const iterator& other) const noexcept;
+
55 inline bool operator>(const iterator& other) const noexcept;
56
57 iterator() noexcept = default;
58 iterator(const iterator&) noexcept = default;
@@ -148,27 +148,27 @@ $(document).ready(function(){initNavTree('dom_2array_8h_source.html',''); initRe
64 };
65
- - -
83 inline size_t size() const noexcept;
- - +
71 inline iterator begin() const noexcept;
+
77 inline iterator end() const noexcept;
+
83 inline size_t size() const noexcept;
+
94 inline size_t number_of_slots() const noexcept;
+
111 inline simdjson_result<element> at_pointer(std::string_view json_pointer) const noexcept;
112
- +
116 inline void process_json_path_of_child_elements(std::vector<element>::iterator& current, std::vector<element>::iterator& end, const std::string_view& path_suffix, std::vector<element>& accumulator) const noexcept;
117
118
- +
122 inline simdjson_result<std::vector<element>> at_path_with_wildcard(std::string_view json_path) const noexcept;
123
- +
137 inline simdjson_result<element> at_path(std::string_view json_path) const noexcept;
138
- +
155 inline simdjson_result<element> at(size_t index) const noexcept;
156
- +
164 inline std::vector<element>& get_values(std::vector<element>& out) const noexcept;
165
- +
169 inline operator element() const noexcept;
170
-
171private:
-
172 simdjson_inline array(const internal::tape_ref &tape) noexcept;
+
171private:
+
172 simdjson_inline array(const internal::tape_ref &tape) noexcept;
173 internal::tape_ref tape{};
174 friend class element;
175 friend struct simdjson_result<element>;
diff --git a/dom_2base_8h_source.html b/dom_2base_8h_source.html index 03fc70508..f532e0cf1 100644 --- a/dom_2base_8h_source.html +++ b/dom_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/dom_2document-inl_8h_source.html b/dom_2document-inl_8h_source.html index 6cfa5b035..ef2bc82f7 100644 --- a/dom_2document-inl_8h_source.html +++ b/dom_2document-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -122,12 +122,12 @@ $(document).ready(function(){initNavTree('dom_2document-inl_8h_source.html','');
18// document inline implementation
19//
- +
20inline element document::root() const noexcept {
21 return element(internal::tape_ref(this, 1));
22}
23simdjson_warn_unused
-
24inline size_t document::capacity() const noexcept {
+
24inline size_t document::capacity() const noexcept {
25 return allocated_capacity;
26}
27
@@ -263,7 +263,6 @@ $(document).ready(function(){initNavTree('dom_2document-inl_8h_source.html','');
157} // namespace simdjson
158
159#endif // SIMDJSON_DOCUMENT_INL_H
-
JSON array.
Definition array.h:15
element root() const noexcept
Get the root element of this document as a JSON array.
A JSON element.
Definition element.h:33
The top level simdjson namespace, containing everything the library provides.
Definition base.h:8
diff --git a/dom_2document_8h_source.html b/dom_2document_8h_source.html index f324d91d0..4d5d2cace 100644 --- a/dom_2document_8h_source.html +++ b/dom_2document_8h_source.html @@ -29,7 +29,7 @@ @@ -115,19 +115,19 @@ $(document).ready(function(){initNavTree('dom_2document_8h_source.html',''); ini
16class document {
17public:
- - +
23 document() noexcept = default;
+
24 ~document() noexcept = default;
25
- -
33 document(const document &) = delete; // Disallow copying
- -
41 document &operator=(const document &) = delete; // Disallow copying
+
31 document(document &&other) noexcept = default;
+
33 document(const document &) = delete; // Disallow copying
+
39 document &operator=(document &&other) noexcept = default;
+
41 document &operator=(const document &) = delete; // Disallow copying
42
- +
46 element root() const noexcept;
47
-
54 bool dump_raw_tape(std::ostream &os) const noexcept;
+
54 bool dump_raw_tape(std::ostream &os) const noexcept;
55
-
57 std::unique_ptr<uint64_t[]> tape{};
+
57 std::unique_ptr<uint64_t[]> tape{};
58
63 std::unique_ptr<uint8_t[]> string_buf{};
75 error_code allocate(size_t len) noexcept;
@@ -144,7 +144,6 @@ $(document).ready(function(){initNavTree('dom_2document_8h_source.html',''); ini
89} // namespace simdjson
90
91#endif // SIMDJSON_DOM_DOCUMENT_H
-
JSON array.
Definition array.h:15
A parsed JSON document.
Definition document.h:16
document() noexcept=default
Create a document container with zero capacity.
element root() const noexcept
Get the root element of this document as a JSON array.
diff --git a/dom_2document__stream-inl_8h_source.html b/dom_2document__stream-inl_8h_source.html index a6a660088..6ee6ef310 100644 --- a/dom_2document__stream-inl_8h_source.html +++ b/dom_2document__stream-inl_8h_source.html @@ -29,7 +29,7 @@
@@ -122,41 +122,41 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
18 // for the end of the processing.
19 // This function will wait until either the thread has done
20 // the processing or, else, the destructor has been called.
-
21 std::unique_lock<std::mutex> lock(locking_mutex);
-
22 cond_var.wait(lock, [this]{return has_work == false;});
+
21 std::unique_lock<std::mutex> lock(locking_mutex);
+
22 cond_var.wait(lock, [this]{return has_work == false;});
23}
24
25inline stage1_worker::~stage1_worker() {
26 // The thread may never outlive the stage1_worker instance
27 // and will always be stopped/joined before the stage1_worker
28 // instance is gone.
- +
29 stop_thread();
30}
31
32inline void stage1_worker::start_thread() {
-
33 std::unique_lock<std::mutex> lock(locking_mutex);
-
34 if(thread.joinable()) {
+
33 std::unique_lock<std::mutex> lock(locking_mutex);
+
34 if(thread.joinable()) {
35 return; // This should never happen but we never want to create more than one thread.
36 }
-
37 thread = std::thread([this]{
+
37 thread = std::thread([this]{
38 while(true) {
-
39 std::unique_lock<std::mutex> thread_lock(locking_mutex);
+
39 std::unique_lock<std::mutex> thread_lock(locking_mutex);
40 // We wait for either "run" or "stop_thread" to be called.
-
41 cond_var.wait(thread_lock, [this]{return has_work || !can_work;});
+
41 cond_var.wait(thread_lock, [this]{return has_work || !can_work;});
42 // If, for some reason, the stop_thread() method was called (i.e., the
43 // destructor of stage1_worker is called, then we want to immediately destroy
44 // the thread (and not do any more processing).
-
45 if(!can_work) {
+
45 if(!can_work) {
46 break;
47 }
-
48 this->owner->stage1_thread_error = this->owner->run_stage1(*this->stage1_thread_parser,
-
49 this->_next_batch_start);
-
50 this->has_work = false;
+
48 this->owner->stage1_thread_error = this->owner->run_stage1(*this->stage1_thread_parser,
+
49 this->_next_batch_start);
+
50 this->has_work = false;
51 // The condition variable call should be moved after thread_lock.unlock() for performance
52 // reasons but thread sanitizers may report it as a data race if we do.
53 // See https://stackoverflow.com/questions/35775501/c-should-condition-variable-be-notified-under-lock
-
54 cond_var.notify_one(); // will notify "finish"
-
55 thread_lock.unlock();
+
54 cond_var.notify_one(); // will notify "finish"
+
55 thread_lock.unlock();
56 }
57 }
58 );
@@ -164,28 +164,28 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
60
61
62inline void stage1_worker::stop_thread() {
-
63 std::unique_lock<std::mutex> lock(locking_mutex);
+
63 std::unique_lock<std::mutex> lock(locking_mutex);
64 // We have to make sure that all locks can be released.
-
65 can_work = false;
-
66 has_work = false;
-
67 cond_var.notify_all();
-
68 lock.unlock();
-
69 if(thread.joinable()) {
-
70 thread.join();
+
65 can_work = false;
+
66 has_work = false;
+
67 cond_var.notify_all();
+
68 lock.unlock();
+
69 if(thread.joinable()) {
+
70 thread.join();
71 }
72}
73
74inline void stage1_worker::run(document_stream * ds, dom::parser * stage1, size_t next_batch_start) {
-
75 std::unique_lock<std::mutex> lock(locking_mutex);
-
76 owner = ds;
-
77 _next_batch_start = next_batch_start;
-
78 stage1_thread_parser = stage1;
-
79 has_work = true;
+
75 std::unique_lock<std::mutex> lock(locking_mutex);
+
76 owner = ds;
+
77 _next_batch_start = next_batch_start;
+
78 stage1_thread_parser = stage1;
+
79 has_work = true;
80 // The condition variable call should be moved after thread_lock.unlock() for performance
81 // reasons but thread sanitizers may report it as a data race if we do.
82 // See https://stackoverflow.com/questions/35775501/c-should-condition-variable-be-notified-under-lock
-
83 cond_var.notify_one(); // will notify the thread lock that we have work
-
84 lock.unlock();
+
83 cond_var.notify_one(); // will notify the thread lock that we have work
+
84 lock.unlock();
85}
86#endif
87
@@ -212,7 +212,7 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
108}
109
- +
110simdjson_inline document_stream::document_stream() noexcept
111 : parser{nullptr},
112 buf{nullptr},
113 len{0},
@@ -232,13 +232,13 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
126}
127
- +
128simdjson_inline document_stream::iterator::iterator() noexcept
129 : stream{nullptr}, finished{true} {
130}
131
- +
133 start();
134 // If there are no documents, we're finished.
135 return iterator(this, error == EMPTY);
@@ -246,29 +246,29 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
137
- +
139 return iterator(this, true);
140}
141
- -
143 : stream{_stream}, finished{is_end} {
+
142simdjson_inline document_stream::iterator::iterator(document_stream* _stream, bool is_end) noexcept
+
143 : stream{_stream}, finished{is_end} {
144}
145
- +
147 // Note that in case of error, we do not yet mark
148 // the iterator as "finished": this detection is done
149 // in the operator++ function since it is possible
150 // to call operator++ repeatedly while omitting
151 // calls to operator*.
-
152 if (stream->error) { return stream->error; }
+
152 if (stream->error) { return stream->error; }
153 return stream->parser->doc.root();
154}
155
- +
157 // If there is an error, then we want the iterator
158 // to be finished, no matter what. (E.g., we do not
159 // keep generating documents with errors, or go beyond
@@ -297,12 +297,12 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
182
-
183simdjson_inline bool document_stream::iterator::operator!=(const document_stream::iterator &other) const noexcept {
-
184 return finished != other.finished;
+
183simdjson_inline bool document_stream::iterator::operator!=(const document_stream::iterator &other) const noexcept {
+
184 return finished != other.finished;
185}
186
-
187inline void document_stream::start() noexcept {
+
187inline void document_stream::start() noexcept {
188 if (error) { return; }
189 error = parser->ensure_capacity(batch_size);
190 if (error) { return; }
@@ -378,19 +378,19 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
260 }
261}
- +
262inline size_t document_stream::size_in_bytes() const noexcept {
263 return len;
264}
265
- +
266inline size_t document_stream::truncated_bytes() const noexcept {
267 if(error == CAPACITY) { return len - batch_start; }
268 return parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] - parser->implementation->structural_indexes[parser->implementation->n_structural_indexes + 1];
269}
270
-
271inline size_t document_stream::next_batch_start() const noexcept {
+
271inline size_t document_stream::next_batch_start() const noexcept {
272 return batch_start + parser->implementation->structural_indexes[parser->implementation->n_structural_indexes];
273}
274
@@ -468,8 +468,6 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
346
347} // namespace simdjson
348#endif // SIMDJSON_DOCUMENT_STREAM_INL_H
-
JSON array.
Definition array.h:15
-
simdjson_inline array() noexcept
Create a new, invalid array.
Definition array-inl.h:76
An iterator through a forward-only stream of documents.
simdjson_inline reference operator*() noexcept
Get the current document (or error).
simdjson_inline bool operator!=(const iterator &other) const noexcept
Check if we're at the end yet.
@@ -490,6 +488,7 @@ $(document).ready(function(){initNavTree('dom_2document__stream-inl_8h_source.ht
@ SUCCESS
No error.
Definition error.h:20
@ UNINITIALIZED
unknown error, or uninitialized document
Definition error.h:32
The result of a simdjson operation that could fail.
Definition error.h:278
+
simdjson_inline error_code error() const noexcept
The error.
Definition error-inl.h:168
diff --git a/dom_2document__stream_8h_source.html b/dom_2document__stream_8h_source.html index fe53817e6..b59e64d03 100644 --- a/dom_2document__stream_8h_source.html +++ b/dom_2document__stream_8h_source.html @@ -29,7 +29,7 @@ @@ -119,28 +119,28 @@ $(document).ready(function(){initNavTree('dom_2document__stream_8h_source.html',
15
16#ifdef SIMDJSON_THREADS_ENABLED
18struct stage1_worker {
- - - - - -
28 void start_thread();
-
33 void run(document_stream * ds, dom::parser * stage1, size_t next_batch_start);
-
35 void finish();
+
19 stage1_worker() noexcept = default;
+
20 stage1_worker(const stage1_worker&) = delete;
+
21 stage1_worker(stage1_worker&&) = delete;
+
22 stage1_worker operator=(const stage1_worker&) = delete;
+
23 ~stage1_worker();
+
28 void start_thread();
+
33 void run(document_stream * ds, dom::parser * stage1, size_t next_batch_start);
+
35 void finish();
36
- +
37private:
38
-
44 void stop_thread();
+
44 void stop_thread();
45
-
46 std::thread thread{};
-
48 dom::parser * stage1_thread_parser{};
-
49 size_t _next_batch_start{};
-
50 document_stream * owner{};
-
55 bool has_work{false};
-
56 bool can_work{true};
+
46 std::thread thread{};
+
48 dom::parser * stage1_thread_parser{};
+
49 size_t _next_batch_start{};
+
50 document_stream * owner{};
+
55 bool has_work{false};
+
56 bool can_work{true};
57
-
61 std::mutex locking_mutex{};
-
62 std::condition_variable cond_var{};
+
61 std::mutex locking_mutex{};
+
62 std::condition_variable cond_var{};
63};
64#endif
65
@@ -148,16 +148,16 @@ $(document).ready(function(){initNavTree('dom_2document__stream_8h_source.html',
73public:
82 simdjson_inline document_stream() noexcept;
-
84 simdjson_inline document_stream(document_stream &&other) noexcept = default;
-
86 simdjson_inline document_stream &operator=(document_stream &&other) noexcept = default;
+
84 simdjson_inline document_stream(document_stream &&other) noexcept = default;
+
86 simdjson_inline document_stream &operator=(document_stream &&other) noexcept = default;
87
-
88 simdjson_inline ~document_stream() noexcept;
- - +
88 simdjson_inline ~document_stream() noexcept;
+
92 inline size_t size_in_bytes() const noexcept;
+
111 inline size_t truncated_bytes() const noexcept;
- +
115 class iterator {
116 public:
- +
118 using reference = value_type;
119
120 using difference_type = std::ptrdiff_t;
@@ -167,45 +167,45 @@ $(document).ready(function(){initNavTree('dom_2document__stream_8h_source.html',
127 simdjson_inline iterator() noexcept;
131 simdjson_inline reference operator*() noexcept;
135 inline iterator& operator++() noexcept;
-
140 simdjson_inline bool operator!=(const iterator &other) const noexcept;
+
140 simdjson_inline bool operator!=(const iterator &other) const noexcept;
156 simdjson_inline size_t current_index() const noexcept;
176 simdjson_inline std::string_view source() const noexcept;
177
178 private:
-
179 simdjson_inline iterator(document_stream *s, bool finished) noexcept;
+
179 simdjson_inline iterator(document_stream *s, bool finished) noexcept;
181 document_stream* stream;
183 bool finished;
184 friend class document_stream;
185 };
186
-
190 simdjson_inline iterator begin() noexcept;
-
194 simdjson_inline iterator end() noexcept;
+
190 simdjson_inline iterator begin() noexcept;
+
194 simdjson_inline iterator end() noexcept;
195
-
196private:
+
196private:
197
-
198 document_stream &operator=(const document_stream &) = delete; // Disallow copying
-
199 document_stream(const document_stream &other) = delete; // Disallow copying
+
198 document_stream &operator=(const document_stream &) = delete; // Disallow copying
+
199 document_stream(const document_stream &other) = delete; // Disallow copying
200
210 simdjson_inline document_stream(
211 dom::parser &parser,
-
212 const uint8_t *buf,
+
212 const uint8_t *buf,
213 size_t len,
214 size_t batch_size
-
215 ) noexcept;
+
215 ) noexcept;
216
-
221 inline void start() noexcept;
+
221 inline void start() noexcept;
222
-
246 inline void next() noexcept;
+
246 inline void next() noexcept;
247
-
252 inline void load_batch() noexcept;
+
252 inline void load_batch() noexcept;
253
-
255 inline size_t next_batch_start() const noexcept;
+
255 inline size_t next_batch_start() const noexcept;
256
-
258 inline error_code run_stage1(dom::parser &p, size_t batch_start) noexcept;
+
258 inline error_code run_stage1(dom::parser &p, size_t batch_start) noexcept;
259
260 dom::parser *parser;
-
261 const uint8_t *buf;
+
261 const uint8_t *buf;
262 size_t len;
263 size_t batch_size;
265 error_code error;
@@ -260,8 +260,6 @@ $(document).ready(function(){initNavTree('dom_2document__stream_8h_source.html',
320} // namespace simdjson
321
322#endif // SIMDJSON_DOCUMENT_STREAM_H
-
JSON array.
Definition array.h:15
-
simdjson_inline array() noexcept
Create a new, invalid array.
Definition array-inl.h:76
An iterator through a forward-only stream of documents.
A forward-only stream of documents.
size_t size_in_bytes() const noexcept
Returns the input size in bytes.
diff --git a/dom_2object-inl_8h_source.html b/dom_2object-inl_8h_source.html index 648e62a78..fa4091abd 100644 --- a/dom_2object-inl_8h_source.html +++ b/dom_2object-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -184,191 +184,191 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
80//
81// object inline implementation
82//
-
83simdjson_inline object::object() noexcept : tape{} {}
+
83simdjson_inline object::object() noexcept : tape{} {}
84simdjson_inline object::object(const internal::tape_ref &_tape) noexcept : tape{_tape} { }
- +
85inline object::iterator object::begin() const noexcept {
86 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
87 return internal::tape_ref(tape.doc, tape.json_index + 1);
88}
- +
89inline object::iterator object::end() const noexcept {
90 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
91 return internal::tape_ref(tape.doc, tape.after_element() - 1);
92}
-
93inline size_t object::size() const noexcept {
+
93inline size_t object::size() const noexcept {
94 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
95 return tape.scope_count();
96}
97
-
98inline simdjson_result<element> object::operator[](std::string_view key) const noexcept {
+
98inline simdjson_result<element> object::operator[](std::string_view key) const noexcept {
99 return at_key(key);
100}
-
101inline simdjson_result<element> object::operator[](const char *key) const noexcept {
+
101inline simdjson_result<element> object::operator[](const char *key) const noexcept {
102 return at_key(key);
103}
-
104inline simdjson_result<element> object::at_pointer(std::string_view json_pointer) const noexcept {
+
104inline simdjson_result<element> object::at_pointer(std::string_view json_pointer) const noexcept {
105 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
-
106 if(json_pointer.empty()) { // an empty string means that we return the current node
+
106 if(json_pointer.empty()) { // an empty string means that we return the current node
107 return element(this->tape); // copy the current node
-
108 } else if(json_pointer[0] != '/') { // otherwise there is an error
+
108 } else if(json_pointer[0] != '/') { // otherwise there is an error
110 }
-
111 json_pointer = json_pointer.substr(1);
-
112 size_t slash = json_pointer.find('/');
-
113 std::string_view key = json_pointer.substr(0, slash);
+
111 json_pointer = json_pointer.substr(1);
+
112 size_t slash = json_pointer.find('/');
+
113 std::string_view key = json_pointer.substr(0, slash);
114 // Grab the child with the given key
- +
116
117 // If there is an escape character in the key, unescape it and then get the child.
-
118 size_t escape = key.find('~');
-
119 if (escape != std::string_view::npos) {
+
118 size_t escape = key.find('~');
+
119 if (escape != std::string_view::npos) {
120 // Unescape the key
-
121 std::string unescaped(key);
+
121 std::string unescaped(key);
122 do {
-
123 switch (unescaped[escape+1]) {
+
123 switch (unescaped[escape+1]) {
124 case '0':
-
125 unescaped.replace(escape, 2, "~");
+
125 unescaped.replace(escape, 2, "~");
126 break;
127 case '1':
-
128 unescaped.replace(escape, 2, "/");
+
128 unescaped.replace(escape, 2, "/");
129 break;
130 default:
131 return INVALID_JSON_POINTER; // "Unexpected ~ escape character in JSON pointer");
132 }
-
133 escape = unescaped.find('~', escape+1);
-
134 } while (escape != std::string::npos);
-
135 child = at_key(unescaped);
+
133 escape = unescaped.find('~', escape+1);
+
134 } while (escape != std::string::npos);
+
135 child = at_key(unescaped);
136 } else {
137 child = at_key(key);
138 }
-
139 if(child.error()) {
+
139 if(child.error()) {
140 return child; // we do not continue if there was an error
141 }
142 // If there is a /, we have to recurse and look up more of the path
-
143 if (slash != std::string_view::npos) {
-
144 child = child.at_pointer(json_pointer.substr(slash));
+
143 if (slash != std::string_view::npos) {
+
144 child = child.at_pointer(json_pointer.substr(slash));
145 }
146 return child;
147}
148
-
149inline simdjson_result<element> object::at_path(std::string_view json_path) const noexcept {
- -
151 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
-
152 return at_pointer(json_pointer);
+
149inline simdjson_result<element> object::at_path(std::string_view json_path) const noexcept {
+
150 auto json_pointer = json_path_to_pointer_conversion(json_path);
+
151 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
+
152 return at_pointer(json_pointer);
153}
154
-
155inline void object::process_json_path_of_child_elements(std::vector<element>::iterator& current, std::vector<element>::iterator& end, const std::string_view& path_suffix, std::vector<element>& accumulator) const noexcept {
-
156 if (current == end) {
+
155inline void object::process_json_path_of_child_elements(std::vector<element>::iterator& current, std::vector<element>::iterator& end, const std::string_view& path_suffix, std::vector<element>& accumulator) const noexcept {
+
156 if (current == end) {
157 return;
158 }
159
- +
161
-
162 for (auto it = current; it != end; ++it) {
-
163 std::vector<element> child_result;
- +
162 for (auto it = current; it != end; ++it) {
+
163 std::vector<element> child_result;
+
164 auto error = it->at_path_with_wildcard(path_suffix).get(child_result);
165 if(error) {
166 continue;
167 }
- -
169 accumulator.insert(accumulator.end(),
-
170 std::make_move_iterator(child_result.begin()),
-
171 std::make_move_iterator(child_result.end()));
+
168 accumulator.reserve(accumulator.size() + child_result.size());
+
169 accumulator.insert(accumulator.end(),
+
170 std::make_move_iterator(child_result.begin()),
+
171 std::make_move_iterator(child_result.end()));
172 }
173}
174
- +
175inline simdjson_result<std::vector<element>> object::at_path_with_wildcard(std::string_view json_path) const noexcept {
176 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
177
-
178 size_t i = 0;
-
179 if (json_path.empty()) {
+
178 size_t i = 0;
+
179 if (json_path.empty()) {
181 }
182 // if JSONPath starts with $, skip it
183 // json_path.starts_with('$') requires C++20.
-
184 if (json_path.front() == '$') {
-
185 i = 1;
+
184 if (json_path.front() == '$') {
+
185 i = 1;
186 }
187
-
188 if (i >= json_path.size() || (json_path[i] != '.' && json_path[i] != '[')) {
+
188 if (i >= json_path.size() || (json_path[i] != '.' && json_path[i] != '[')) {
189 // expect JSONPath expressions to always start with $ but this isn't currently
190 // expected in jsonpathutil.h.
192 }
193
-
194 if (json_path.find("*") != std::string::npos) {
+
194 if (json_path.find("*") != std::string::npos) {
195
-
196 std::vector<element> child_values;
+
196 std::vector<element> child_values;
197
198 if (
-
199 (json_path.compare(i, 3, "[*]") == 0 && json_path.size() == i + 3) ||
-
200 (json_path.compare(i, 2,".*") == 0 && json_path.size() == i + 2)
+
199 (json_path.compare(i, 3, "[*]") == 0 && json_path.size() == i + 3) ||
+
200 (json_path.compare(i, 2,".*") == 0 && json_path.size() == i + 2)
201 ) {
-
202 get_values(child_values);
-
203 return child_values;
+
202 get_values(child_values);
+
203 return child_values;
204 }
205
-
206 std::pair<std::string_view, std::string_view> key_and_json_path = get_next_key_and_json_path(json_path);
+
206 std::pair<std::string_view, std::string_view> key_and_json_path = get_next_key_and_json_path(json_path);
207
-
208 std::string_view key = key_and_json_path.first;
- +
208 std::string_view key = key_and_json_path.first;
+
209 json_path = key_and_json_path.second;
210
211 if (key.size() > 0) {
212 if (key == "*") {
-
213 get_values(child_values);
+
213 get_values(child_values);
214 } else {
- -
216 auto error = at_pointer(std::string("/") + std::string(key)).get(pointer_result);
+
215 element pointer_result;
+
216 auto error = at_pointer(std::string("/") + std::string(key)).get(pointer_result);
217
218 if (!error) {
-
219 child_values.emplace_back(pointer_result);
+
219 child_values.emplace_back(pointer_result);
220 }
221 }
222
-
223 std::vector<element> result = {};
-
224 if (child_values.size() > 0) {
+
223 std::vector<element> result = {};
+
224 if (child_values.size() > 0) {
225
-
226 std::vector<element>::iterator child_values_begin = child_values.begin();
-
227 std::vector<element>::iterator child_values_end = child_values.end();
+
226 std::vector<element>::iterator child_values_begin = child_values.begin();
+
227 std::vector<element>::iterator child_values_end = child_values.end();
228
-
229 process_json_path_of_child_elements(child_values_begin, child_values_end, json_path, result);
+
229 process_json_path_of_child_elements(child_values_begin, child_values_end, json_path, result);
230 }
231
-
232 return result;
+
232 return result;
233 } else {
235 }
236 } else {
- -
238 auto error = this->at_path(json_path).get(result);
+
237 element result;
+
238 auto error = this->at_path(json_path).get(result);
239 if (error) {
240 return error;
241 }
-
242 return std::vector<element>{std::move(result)};
+
242 return std::vector<element>{std::move(result)};
243 }
244}
245
-
246inline simdjson_result<element> object::at_key(std::string_view key) const noexcept {
-
247 iterator end_field = end();
-
248 for (iterator field = begin(); field != end_field; ++field) {
+
246inline simdjson_result<element> object::at_key(std::string_view key) const noexcept {
+
247 iterator end_field = end();
+
248 for (iterator field = begin(); field != end_field; ++field) {
249 if (field.key_equals(key)) {
250 return field.value();
251 }
@@ -378,25 +378,25 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
255
-
256inline std::vector<element>& object::get_values(std::vector<element>& out) const noexcept {
-
257 iterator end_field = end();
-
258 iterator begin_field = begin();
+
256inline std::vector<element>& object::get_values(std::vector<element>& out) const noexcept {
+
257 iterator end_field = end();
+
258 iterator begin_field = begin();
259
-
260 out.reserve(std::distance(begin_field, end_field));
-
261 for (iterator field = begin_field; field != end_field; ++field) {
-
262 out.emplace_back(field.value());
+
260 out.reserve(std::distance(begin_field, end_field));
+
261 for (iterator field = begin_field; field != end_field; ++field) {
+
262 out.emplace_back(field.value());
263 }
264
-
265 return out;
+
265 return out;
266}
267// In case you wonder why we need this, please see
268// https://github.com/simdjson/simdjson/issues/323
269// People do seek keys in a case-insensitive manner.
-
270inline simdjson_result<element> object::at_key_case_insensitive(std::string_view key) const noexcept {
-
271 iterator end_field = end();
-
272 for (iterator field = begin(); field != end_field; ++field) {
+
270inline simdjson_result<element> object::at_key_case_insensitive(std::string_view key) const noexcept {
+
271 iterator end_field = end();
+
272 for (iterator field = begin(); field != end_field; ++field) {
273 if (field.key_equals_case_insensitive(key)) {
274 return field.value();
275 }
@@ -406,7 +406,7 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
279
-
280inline object::operator element() const noexcept {
+
280inline object::operator element() const noexcept {
281 return element(tape);
282}
@@ -414,22 +414,22 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
284//
285// object::iterator inline implementation
286//
-
287simdjson_inline object::iterator::iterator(const internal::tape_ref &_tape) noexcept : tape{_tape} { }
+
287simdjson_inline object::iterator::iterator(const internal::tape_ref &_tape) noexcept : tape{_tape} { }
- +
288inline const key_value_pair object::iterator::operator*() const noexcept {
289 return key_value_pair(key(), value());
290}
-
291inline bool object::iterator::operator!=(const object::iterator& other) const noexcept {
-
292 return tape.json_index != other.tape.json_index;
+
291inline bool object::iterator::operator!=(const object::iterator& other) const noexcept {
+
292 return tape.json_index != other.tape.json_index;
293}
-
294inline bool object::iterator::operator==(const object::iterator& other) const noexcept {
-
295 return tape.json_index == other.tape.json_index;
+
294inline bool object::iterator::operator==(const object::iterator& other) const noexcept {
+
295 return tape.json_index == other.tape.json_index;
296}
-
297inline bool object::iterator::operator<(const object::iterator& other) const noexcept {
-
298 return tape.json_index < other.tape.json_index;
+
297inline bool object::iterator::operator<(const object::iterator& other) const noexcept {
+
298 return tape.json_index < other.tape.json_index;
299}
300inline bool object::iterator::operator<=(const object::iterator& other) const noexcept {
301 return tape.json_index <= other.tape.json_index;
@@ -441,7 +441,7 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
307 return tape.json_index > other.tape.json_index;
308}
- +
310 tape.json_index++;
311 tape.json_index = tape.after_element();
312 return *this;
@@ -449,55 +449,55 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
-
315 object::iterator out = *this;
+
315 object::iterator out = *this;
316 ++*this;
-
317 return out;
+
317 return out;
318}
-
319inline std::string_view object::iterator::key() const noexcept {
+
319inline std::string_view object::iterator::key() const noexcept {
320 return tape.get_string_view();
321}
- +
322inline uint32_t object::iterator::key_length() const noexcept {
323 return tape.get_string_length();
324}
- -
326 return reinterpret_cast<const char *>(&tape.doc->string_buf[size_t(tape.tape_value()) + sizeof(uint32_t)]);
+
325inline const char* object::iterator::key_c_str() const noexcept {
+
326 return reinterpret_cast<const char *>(&tape.doc->string_buf[size_t(tape.tape_value()) + sizeof(uint32_t)]);
327}
- +
328inline element object::iterator::value() const noexcept {
329 return element(internal::tape_ref(tape.doc, tape.json_index + 1));
330}
331
-
345inline bool object::iterator::key_equals(std::string_view o) const noexcept {
+
345inline bool object::iterator::key_equals(std::string_view o) const noexcept {
346 // We use the fact that the key length can be computed quickly
347 // without access to the string buffer.
-
348 const uint32_t len = key_length();
-
349 if(o.size() == len) {
+
348 const uint32_t len = key_length();
+
349 if(o.size() == len) {
350 // We avoid construction of a temporary string_view instance.
-
351 return (memcmp(o.data(), key_c_str(), len) == 0);
+
351 return (memcmp(o.data(), key_c_str(), len) == 0);
352 }
353 return false;
354}
355
-
356inline bool object::iterator::key_equals_case_insensitive(std::string_view o) const noexcept {
+
356inline bool object::iterator::key_equals_case_insensitive(std::string_view o) const noexcept {
357 // We use the fact that the key length can be computed quickly
358 // without access to the string buffer.
-
359 const uint32_t len = key_length();
-
360 if(o.size() == len) {
+
359 const uint32_t len = key_length();
+
360 if(o.size() == len) {
361 // See For case-insensitive string comparisons, avoid char-by-char functions
362 // https://lemire.me/blog/2020/04/30/for-case-insensitive-string-comparisons-avoid-char-by-char-functions/
363 // Note that it might be worth rolling our own strncasecmp function, with vectorization.
-
364 return (simdjson_strncasecmp(o.data(), key_c_str(), len) == 0);
+
364 return (simdjson_strncasecmp(o.data(), key_c_str(), len) == 0);
365 }
366 return false;
367}
@@ -505,8 +505,8 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
368//
369// key_value_pair inline implementation
370//
-
371inline key_value_pair::key_value_pair(std::string_view _key, element _value) noexcept :
-
372 key(_key), value(_value) {}
+
371inline key_value_pair::key_value_pair(std::string_view _key, element _value) noexcept :
+
372 key(_key), value(_value) {}
373
374} // namespace dom
375
@@ -522,12 +522,6 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
385#endif // SIMDJSON_SUPPORTS_RANGES
386
387#endif // SIMDJSON_OBJECT_INL_H
-
JSON array.
Definition array.h:15
-
simdjson_result< std::vector< element > > at_path_with_wildcard(std::string_view json_path) const noexcept
Adds support for JSONPath expression with wildcards '*'.
Definition array-inl.h:162
-
iterator end() const noexcept
One past the last array element.
Definition array-inl.h:82
-
size_t size() const noexcept
Get the size of the array (number of immediate children).
Definition array-inl.h:86
-
simdjson_result< element > at_pointer(std::string_view json_pointer) const noexcept
Get the value associated with the given JSON pointer.
Definition array-inl.h:94
-
iterator begin() const noexcept
Return the first array element.
Definition array-inl.h:78
A JSON element.
Definition element.h:33
Key/value pair in an object.
Definition object.h:258
@@ -557,6 +551,8 @@ $(document).ready(function(){initNavTree('dom_2object-inl_8h_source.html',''); i
@ NO_SUCH_FIELD
JSON field not found in object.
Definition error.h:40
@ INVALID_JSON_POINTER
Invalid JSON pointer syntax.
Definition error.h:42
std::string json_path_to_pointer_conversion(std::string_view json_path)
Converts JSONPath to JSON Pointer.
+
The result of a simdjson operation that could fail.
Definition error.h:278
+
simdjson_inline error_code error() const noexcept
The error.
Definition error-inl.h:168
diff --git a/dom_2object_8h_source.html b/dom_2object_8h_source.html index 52805f488..30277be4b 100644 --- a/dom_2object_8h_source.html +++ b/dom_2object_8h_source.html @@ -29,7 +29,7 @@ @@ -124,24 +124,24 @@ $(document).ready(function(){initNavTree('dom_2object_8h_source.html',''); initR
22 public:
23 using value_type = const key_value_pair;
24 using difference_type = std::ptrdiff_t;
-
25 using pointer = void;
+
25 using pointer = void;
26 using reference = value_type;
27 using iterator_category = std::forward_iterator_tag;
28
32 inline reference operator*() const noexcept;
39 inline iterator& operator++() noexcept;
46 inline iterator operator++(int) noexcept;
-
52 inline bool operator!=(const iterator& other) const noexcept;
-
53 inline bool operator==(const iterator& other) const noexcept;
+
52 inline bool operator!=(const iterator& other) const noexcept;
+
53 inline bool operator==(const iterator& other) const noexcept;
54
-
55 inline bool operator<(const iterator& other) const noexcept;
-
56 inline bool operator<=(const iterator& other) const noexcept;
-
57 inline bool operator>=(const iterator& other) const noexcept;
-
58 inline bool operator>(const iterator& other) const noexcept;
+
55 inline bool operator<(const iterator& other) const noexcept;
+
56 inline bool operator<=(const iterator& other) const noexcept;
+
57 inline bool operator>=(const iterator& other) const noexcept;
+
58 inline bool operator>(const iterator& other) const noexcept;
62 inline std::string_view key() const noexcept;
-
67 inline uint32_t key_length() const noexcept;
-
72 inline bool key_equals(std::string_view o) const noexcept;
-
78 inline bool key_equals_case_insensitive(std::string_view o) const noexcept;
+
67 inline uint32_t key_length() const noexcept;
+
72 inline bool key_equals(std::string_view o) const noexcept;
+
78 inline bool key_equals_case_insensitive(std::string_view o) const noexcept;
82 inline const char *key_c_str() const noexcept;
86 inline element value() const noexcept;
87
@@ -157,32 +157,32 @@ $(document).ready(function(){initNavTree('dom_2object_8h_source.html',''); initR
97 };
98
-
104 inline iterator begin() const noexcept;
- -
116 inline size_t size() const noexcept;
-
132 inline simdjson_result<element> operator[](std::string_view key) const noexcept;
+
104 inline iterator begin() const noexcept;
+
110 inline iterator end() const noexcept;
+
116 inline size_t size() const noexcept;
+
132 inline simdjson_result<element> operator[](std::string_view key) const noexcept;
133
- - +
149 inline simdjson_result<element> operator[](const char *key) const noexcept;
+
150 simdjson_result<element> operator[](int) const noexcept = delete;
151
- +
175 inline simdjson_result<element> at_pointer(std::string_view json_pointer) const noexcept;
176
- +
180 inline void process_json_path_of_child_elements(std::vector<element>::iterator& current, std::vector<element>::iterator& end, const std::string_view& path_suffix, std::vector<element>& accumulator) const noexcept;
181
- +
185 inline simdjson_result<std::vector<element>> at_path_with_wildcard(std::string_view json_path) const noexcept;
186
- +
200 inline simdjson_result<element> at_path(std::string_view json_path) const noexcept;
201
-
216 inline simdjson_result<element> at_key(std::string_view key) const noexcept;
+
216 inline simdjson_result<element> at_key(std::string_view key) const noexcept;
217
- +
224 inline std::vector<element>& get_values(std::vector<element>& out) const noexcept;
225
- +
237 inline simdjson_result<element> at_key_case_insensitive(std::string_view key) const noexcept;
238
- +
242 inline operator element() const noexcept;
243
-
244private:
-
245 simdjson_inline object(const internal::tape_ref &tape) noexcept;
+
244private:
+
245 simdjson_inline object(const internal::tape_ref &tape) noexcept;
246
247 internal::tape_ref tape{};
248
@@ -200,7 +200,7 @@ $(document).ready(function(){initNavTree('dom_2object_8h_source.html',''); initR
264
265private:
-
266 simdjson_inline key_value_pair(std::string_view _key, element _value) noexcept;
+
266 simdjson_inline key_value_pair(std::string_view _key, element _value) noexcept;
267 friend class object;
268};
@@ -250,7 +250,6 @@ $(document).ready(function(){initNavTree('dom_2object_8h_source.html',''); initR
311#endif // SIMDJSON_SUPPORTS_RANGES
312
313#endif // SIMDJSON_DOM_OBJECT_H
-
JSON array.
Definition array.h:15
A JSON element.
Definition element.h:33
Key/value pair in an object.
Definition object.h:258
std::string_view key
key in the key-value pair
Definition object.h:261
diff --git a/dom_2parser-inl_8h_source.html b/dom_2parser-inl_8h_source.html index b897255be..945e5a9cb 100644 --- a/dom_2parser-inl_8h_source.html +++ b/dom_2parser-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -125,7 +125,7 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
21// parser inline implementation
22//
-
23simdjson_inline parser::parser(size_t max_capacity) noexcept
+
23simdjson_inline parser::parser(size_t max_capacity) noexcept
24 : _max_capacity{max_capacity},
25 loaded_bytes(nullptr) {
26}
@@ -198,37 +198,37 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
92}
93
-
94inline simdjson_result<element> parser::load(std::string_view path) & noexcept {
-
95 return load_into_document(doc, path);
+
94inline simdjson_result<element> parser::load(std::string_view path) & noexcept {
+
95 return load_into_document(doc, path);
96}
97
- +
98inline simdjson_result<element> parser::load_into_document(document& provided_doc, std::string_view path) & noexcept {
99 size_t len;
-
100 auto _error = read_file(path).get(len);
+
100 auto _error = read_file(path).get(len);
101 if (_error) { return _error; }
-
102 return parse_into_document(provided_doc, loaded_bytes.get(), len, false);
+
102 return parse_into_document(provided_doc, loaded_bytes.get(), len, false);
103}
104
-
105inline simdjson_result<document_stream> parser::load_many(std::string_view path, size_t batch_size) noexcept {
+
105inline simdjson_result<document_stream> parser::load_many(std::string_view path, size_t batch_size) noexcept {
106 size_t len;
-
107 auto _error = read_file(path).get(len);
+
107 auto _error = read_file(path).get(len);
108 if (_error) { return _error; }
109 if(batch_size < MINIMAL_BATCH_SIZE) { batch_size = MINIMAL_BATCH_SIZE; }
-
110 return document_stream(*this, reinterpret_cast<const uint8_t*>(loaded_bytes.get()), len, batch_size);
+
110 return document_stream(*this, reinterpret_cast<const uint8_t*>(loaded_bytes.get()), len, batch_size);
111}
112
- +
113inline simdjson_result<element> parser::parse_into_document(document& provided_doc, const uint8_t *buf, size_t len, bool realloc_if_needed) & noexcept {
114 // Important: we need to ensure that document has enough capacity.
115 // Important: It is possible that provided_doc is actually the internal 'doc' within the parser!!!
-
116 error_code _error = ensure_capacity(provided_doc, len);
+
116 error_code _error = ensure_capacity(provided_doc, len);
117 if (_error) { return _error; }
-
118 if (realloc_if_needed) {
+
118 if (realloc_if_needed) {
119 // Make sure we have enough capacity to copy len bytes
120 if (!loaded_bytes || _loaded_bytes_capacity < len) {
121 loaded_bytes.reset( internal::allocate_padded_buffer(len) );
@@ -238,23 +238,23 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
125 _loaded_bytes_capacity = len;
126 }
127 std::memcpy(static_cast<void *>(loaded_bytes.get()), buf, len);
-
128 buf = reinterpret_cast<const uint8_t*>(loaded_bytes.get());
+
128 buf = reinterpret_cast<const uint8_t*>(loaded_bytes.get());
129 }
130
131 if((len >= 3) && (std::memcmp(buf, "\xEF\xBB\xBF", 3) == 0)) {
132 buf += 3;
133 len -= 3;
134 }
-
135 _error = implementation->parse(buf, len, provided_doc);
+
135 _error = implementation->parse(buf, len, provided_doc);
136
137 if (_error) { return _error; }
138
-
139 return provided_doc.root();
+
139 return provided_doc.root();
140}
141
-
142simdjson_inline simdjson_result<element> parser::parse_into_document(document& provided_doc, const char *buf, size_t len, bool realloc_if_needed) & noexcept {
-
143 return parse_into_document(provided_doc, reinterpret_cast<const uint8_t *>(buf), len, realloc_if_needed);
+
142simdjson_inline simdjson_result<element> parser::parse_into_document(document& provided_doc, const char *buf, size_t len, bool realloc_if_needed) & noexcept {
+
143 return parse_into_document(provided_doc, reinterpret_cast<const uint8_t *>(buf), len, realloc_if_needed);
144}
145simdjson_inline simdjson_result<element> parser::parse_into_document(document& provided_doc, const std::string &s) & noexcept {
146 return parse_into_document(provided_doc, s.data(), s.length(), s.capacity() - s.length() < SIMDJSON_PADDING);
@@ -265,13 +265,13 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
151
152
-
153inline simdjson_result<element> parser::parse(const uint8_t *buf, size_t len, bool realloc_if_needed) & noexcept {
-
154 return parse_into_document(doc, buf, len, realloc_if_needed);
+
153inline simdjson_result<element> parser::parse(const uint8_t *buf, size_t len, bool realloc_if_needed) & noexcept {
+
154 return parse_into_document(doc, buf, len, realloc_if_needed);
155}
156
-
157simdjson_inline simdjson_result<element> parser::parse(const char *buf, size_t len, bool realloc_if_needed) & noexcept {
-
158 return parse(reinterpret_cast<const uint8_t *>(buf), len, realloc_if_needed);
+
157simdjson_inline simdjson_result<element> parser::parse(const char *buf, size_t len, bool realloc_if_needed) & noexcept {
+
158 return parse(reinterpret_cast<const uint8_t *>(buf), len, realloc_if_needed);
159}
160simdjson_inline simdjson_result<element> parser::parse(const std::string &s) & noexcept {
161 return parse(s.data(), s.length(), s.capacity() - s.length() < SIMDJSON_PADDING);
@@ -284,7 +284,7 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
168}
169
-
170inline simdjson_result<document_stream> parser::parse_many(const uint8_t *buf, size_t len, size_t batch_size) noexcept {
+
170inline simdjson_result<document_stream> parser::parse_many(const uint8_t *buf, size_t len, size_t batch_size) noexcept {
171 if(batch_size < MINIMAL_BATCH_SIZE) { batch_size = MINIMAL_BATCH_SIZE; }
172 if((len >= 3) && (std::memcmp(buf, "\xEF\xBB\xBF", 3) == 0)) {
173 buf += 3;
@@ -293,8 +293,8 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
176 return document_stream(*this, buf, len, batch_size);
177}
-
178inline simdjson_result<document_stream> parser::parse_many(const char *buf, size_t len, size_t batch_size) noexcept {
-
179 return parse_many(reinterpret_cast<const uint8_t *>(buf), len, batch_size);
+
178inline simdjson_result<document_stream> parser::parse_many(const char *buf, size_t len, size_t batch_size) noexcept {
+
179 return parse_many(reinterpret_cast<const uint8_t *>(buf), len, batch_size);
180}
181inline simdjson_result<document_stream> parser::parse_many(const std::string &s, size_t batch_size) noexcept {
182 return parse_many(s.data(), s.length(), batch_size);
@@ -304,17 +304,17 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
186}
187
-
188simdjson_inline size_t parser::capacity() const noexcept {
+
188simdjson_inline size_t parser::capacity() const noexcept {
189 return implementation ? implementation->capacity() : 0;
190}
-
191simdjson_inline size_t parser::max_capacity() const noexcept {
+
191simdjson_inline size_t parser::max_capacity() const noexcept {
192 return _max_capacity;
193}
-
194simdjson_pure simdjson_inline size_t parser::max_depth() const noexcept {
+
194simdjson_pure simdjson_inline size_t parser::max_depth() const noexcept {
195 return implementation ? implementation->max_depth() : DEFAULT_MAX_DEPTH;
196}
@@ -325,13 +325,13 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
200 //
201 // Reallocate implementation if needed
202 //
- +
203 error_code err;
204 if (implementation) {
-
205 err = implementation->allocate(capacity, max_depth);
+
205 err = implementation->allocate(capacity, max_depth);
206 } else {
-
207 err = simdjson::get_active_implementation()->create_dom_parser_implementation(capacity, max_depth, implementation);
+
207 err = simdjson::get_active_implementation()->create_dom_parser_implementation(capacity, max_depth, implementation);
208 }
-
209 if (err) { return err; }
+
209 if (err) { return err; }
210 return SUCCESS;
211}
@@ -384,7 +384,6 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
256} // namespace simdjson
257
258#endif // SIMDJSON_PARSER_INL_H
-
JSON array.
Definition array.h:15
A forward-only stream of documents.
A parsed JSON document.
Definition document.h:16
simdjson_inline parser(size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept
Create a JSON parser.
Definition parser-inl.h:23
@@ -412,6 +411,7 @@ $(document).ready(function(){initNavTree('dom_2parser-inl_8h_source.html',''); i
@ IO_ERROR
Error reading a file.
Definition error.h:41
constexpr size_t SIMDJSON_PADDING
The amount of padding needed in a buffer to parse JSON.
Definition base.h:33
The result of a simdjson operation that could fail.
Definition error.h:278
+
simdjson_warn_unused simdjson_inline error_code get(T &value) &&noexcept
Move the value to the provided variable.
Definition error-inl.h:163
diff --git a/dom_2parser_8h_source.html b/dom_2parser_8h_source.html index a2c6c90b9..15ff62d7a 100644 --- a/dom_2parser_8h_source.html +++ b/dom_2parser_8h_source.html @@ -29,7 +29,7 @@ @@ -116,53 +116,53 @@ $(document).ready(function(){initNavTree('dom_2parser_8h_source.html',''); initR
30class parser {
31public:
43 simdjson_inline explicit parser(size_t max_capacity = SIMDJSON_MAXSIZE_BYTES) noexcept;
-
49 simdjson_inline parser(parser &&other) noexcept;
+
49 simdjson_inline parser(parser &&other) noexcept;
50 parser(const parser &) = delete;
-
56 simdjson_inline parser &operator=(parser &&other) noexcept;
+
56 simdjson_inline parser &operator=(parser &&other) noexcept;
57 parser &operator=(const parser &) = delete;
58
60 ~parser()=default;
61
-
105 inline simdjson_result<element> load(std::string_view path) & noexcept;
-
106 inline simdjson_result<element> load(std::string_view path) && = delete ;
+
105 inline simdjson_result<element> load(std::string_view path) & noexcept;
+
106 inline simdjson_result<element> load(std::string_view path) && = delete ;
107
-
151 inline simdjson_result<element> load_into_document(document& doc, std::string_view path) & noexcept;
-
152 inline simdjson_result<element> load_into_document(document& doc, std::string_view path) && =delete;
+
151 inline simdjson_result<element> load_into_document(document& doc, std::string_view path) & noexcept;
+
152 inline simdjson_result<element> load_into_document(document& doc, std::string_view path) && =delete;
153
-
237 inline simdjson_result<element> parse(const uint8_t *buf, size_t len, bool realloc_if_needed = true) & noexcept;
-
238 inline simdjson_result<element> parse(const uint8_t *buf, size_t len, bool realloc_if_needed = true) && =delete;
-
240 simdjson_inline simdjson_result<element> parse(const char *buf, size_t len, bool realloc_if_needed = true) & noexcept;
-
241 simdjson_inline simdjson_result<element> parse(const char *buf, size_t len, bool realloc_if_needed = true) && =delete;
-
243 simdjson_inline simdjson_result<element> parse(const std::string &s) & noexcept;
-
244 simdjson_inline simdjson_result<element> parse(const std::string &s) && =delete;
-
246 simdjson_inline simdjson_result<element> parse(const padded_string &s) & noexcept;
-
247 simdjson_inline simdjson_result<element> parse(const padded_string &s) && =delete;
-
249 simdjson_inline simdjson_result<element> parse(const padded_string_view &v) & noexcept;
-
250 simdjson_inline simdjson_result<element> parse(const padded_string_view &v) && =delete;
+
237 inline simdjson_result<element> parse(const uint8_t *buf, size_t len, bool realloc_if_needed = true) & noexcept;
+
238 inline simdjson_result<element> parse(const uint8_t *buf, size_t len, bool realloc_if_needed = true) && =delete;
+
240 simdjson_inline simdjson_result<element> parse(const char *buf, size_t len, bool realloc_if_needed = true) & noexcept;
+
241 simdjson_inline simdjson_result<element> parse(const char *buf, size_t len, bool realloc_if_needed = true) && =delete;
+
243 simdjson_inline simdjson_result<element> parse(const std::string &s) & noexcept;
+
244 simdjson_inline simdjson_result<element> parse(const std::string &s) && =delete;
+
246 simdjson_inline simdjson_result<element> parse(const padded_string &s) & noexcept;
+
247 simdjson_inline simdjson_result<element> parse(const padded_string &s) && =delete;
+
249 simdjson_inline simdjson_result<element> parse(const padded_string_view &v) & noexcept;
+
250 simdjson_inline simdjson_result<element> parse(const padded_string_view &v) && =delete;
251
-
253 simdjson_inline simdjson_result<element> parse(const char *buf) noexcept = delete;
+
253 simdjson_inline simdjson_result<element> parse(const char *buf) noexcept = delete;
254
-
299 inline simdjson_result<element> parse_into_document(document& doc, const uint8_t *buf, size_t len, bool realloc_if_needed = true) & noexcept;
-
300 inline simdjson_result<element> parse_into_document(document& doc, const uint8_t *buf, size_t len, bool realloc_if_needed = true) && =delete;
-
302 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const char *buf, size_t len, bool realloc_if_needed = true) & noexcept;
-
303 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const char *buf, size_t len, bool realloc_if_needed = true) && =delete;
-
305 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const std::string &s) & noexcept;
-
306 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const std::string &s) && =delete;
-
308 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const padded_string &s) & noexcept;
-
309 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const padded_string &s) && =delete;
+
299 inline simdjson_result<element> parse_into_document(document& doc, const uint8_t *buf, size_t len, bool realloc_if_needed = true) & noexcept;
+
300 inline simdjson_result<element> parse_into_document(document& doc, const uint8_t *buf, size_t len, bool realloc_if_needed = true) && =delete;
+
302 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const char *buf, size_t len, bool realloc_if_needed = true) & noexcept;
+
303 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const char *buf, size_t len, bool realloc_if_needed = true) && =delete;
+
305 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const std::string &s) & noexcept;
+
306 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const std::string &s) && =delete;
+
308 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const padded_string &s) & noexcept;
+
309 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const padded_string &s) && =delete;
310
-
312 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const char *buf) noexcept = delete;
+
312 simdjson_inline simdjson_result<element> parse_into_document(document& doc, const char *buf) noexcept = delete;
313
-
389 inline simdjson_result<document_stream> load_many(std::string_view path, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
+
389 inline simdjson_result<document_stream> load_many(std::string_view path, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
390
-
487 inline simdjson_result<document_stream> parse_many(const uint8_t *buf, size_t len, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
-
489 inline simdjson_result<document_stream> parse_many(const char *buf, size_t len, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
-
491 inline simdjson_result<document_stream> parse_many(const std::string &s, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
-
492 inline simdjson_result<document_stream> parse_many(const std::string &&s, size_t batch_size) = delete;// unsafe
-
494 inline simdjson_result<document_stream> parse_many(const padded_string &s, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
-
495 inline simdjson_result<document_stream> parse_many(const padded_string &&s, size_t batch_size) = delete;// unsafe
+
487 inline simdjson_result<document_stream> parse_many(const uint8_t *buf, size_t len, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
+
489 inline simdjson_result<document_stream> parse_many(const char *buf, size_t len, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
+
491 inline simdjson_result<document_stream> parse_many(const std::string &s, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
+
492 inline simdjson_result<document_stream> parse_many(const std::string &&s, size_t batch_size) = delete;// unsafe
+
494 inline simdjson_result<document_stream> parse_many(const padded_string &s, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept;
+
495 inline simdjson_result<document_stream> parse_many(const padded_string &&s, size_t batch_size) = delete;// unsafe
496
-
498 simdjson_result<document_stream> parse_many(const char *buf, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept = delete;
+
498 simdjson_result<document_stream> parse_many(const char *buf, size_t batch_size = dom::DEFAULT_BATCH_SIZE) noexcept = delete;
499
508 simdjson_warn_unused inline error_code allocate(size_t capacity, size_t max_depth = DEFAULT_MAX_DEPTH) noexcept;
509
@@ -172,11 +172,11 @@ $(document).ready(function(){initNavTree('dom_2parser_8h_source.html',''); initR
524#endif // SIMDJSON_DISABLE_DEPRECATED_API
530 simdjson_inline size_t capacity() const noexcept;
531
-
539 simdjson_inline size_t max_capacity() const noexcept;
+
539 simdjson_inline size_t max_capacity() const noexcept;
540
-
546 simdjson_pure simdjson_inline size_t max_depth() const noexcept;
+
546 simdjson_pure simdjson_inline size_t max_depth() const noexcept;
547
-
562 simdjson_inline void set_max_capacity(size_t max_capacity) noexcept;
+
562 simdjson_inline void set_max_capacity(size_t max_capacity) noexcept;
563
564#ifdef SIMDJSON_THREADS_ENABLED
570 bool threaded{true};
@@ -245,7 +245,6 @@ $(document).ready(function(){initNavTree('dom_2parser_8h_source.html',''); initR
669} // namespace simdjson
670
671#endif // SIMDJSON_DOM_PARSER_H
-
JSON array.
Definition array.h:15
A parsed JSON document.
Definition document.h:16
A persistent document parser.
Definition parser.h:30
simdjson_result< element > parse(const uint8_t *buf, size_t len, bool realloc_if_needed=true) &noexcept
Parse a JSON document and return a temporary reference to it.
Definition parser-inl.h:153
@@ -273,6 +272,7 @@ $(document).ready(function(){initNavTree('dom_2parser_8h_source.html',''); initR
SIMDJSON_PUSH_DISABLE_UNUSED_WARNINGS constexpr size_t SIMDJSON_MAXSIZE_BYTES
The maximum document size supported by simdjson.
Definition base.h:23
String with extra allocation for ease of use with parser::parse()
Exception thrown when an exception-supporting simdjson method is called.
Definition error.h:91
+
The result of a simdjson operation that could fail.
Definition error.h:278
diff --git a/dom_2serialization-inl_8h_source.html b/dom_2serialization-inl_8h_source.html index b4aed7f14..d4bcdf7c7 100644 --- a/dom_2serialization-inl_8h_source.html +++ b/dom_2serialization-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -131,11 +131,11 @@ $(document).ready(function(){initNavTree('dom_2serialization-inl_8h_source.html'
27}
28
-
29inline std::ostream &operator<<(std::ostream &out,
+
29inline std::ostream &operator<<(std::ostream &out,
-
31 simdjson::internal::string_builder<> sb;
-
32 sb.append(value);
-
33 return (out << sb.str());
+
31 simdjson::internal::string_builder<> sb;
+
32 sb.append(value);
+
33 return (out << sb.str());
34}
35#if SIMDJSON_EXCEPTIONS
@@ -149,10 +149,10 @@ $(document).ready(function(){initNavTree('dom_2serialization-inl_8h_source.html'
43}
44#endif
-
45inline std::ostream &operator<<(std::ostream &out, simdjson::dom::array value) {
-
46 simdjson::internal::string_builder<> sb;
-
47 sb.append(value);
-
48 return (out << sb.str());
+
45inline std::ostream &operator<<(std::ostream &out, simdjson::dom::array value) {
+
46 simdjson::internal::string_builder<> sb;
+
47 sb.append(value);
+
48 return (out << sb.str());
49}
50#if SIMDJSON_EXCEPTIONS
@@ -166,11 +166,11 @@ $(document).ready(function(){initNavTree('dom_2serialization-inl_8h_source.html'
58}
59#endif
-
60inline std::ostream &operator<<(std::ostream &out,
+
60inline std::ostream &operator<<(std::ostream &out,
-
62 simdjson::internal::string_builder<> sb;
-
63 sb.append(value);
-
64 return (out << sb.str());
+
62 simdjson::internal::string_builder<> sb;
+
63 sb.append(value);
+
64 return (out << sb.str());
65}
66#if SIMDJSON_EXCEPTIONS
diff --git a/dom_2serialization_8h_source.html b/dom_2serialization_8h_source.html index 3fc9fadec..e0109b955 100644 --- a/dom_2serialization_8h_source.html +++ b/dom_2serialization_8h_source.html @@ -29,7 +29,7 @@ diff --git a/dom_8h_source.html b/dom_8h_source.html index ec4285ab0..2f17380fc 100644 --- a/dom_8h_source.html +++ b/dom_8h_source.html @@ -29,7 +29,7 @@ diff --git a/element-inl_8h_source.html b/element-inl_8h_source.html index 11fb213da..9437b74fa 100644 --- a/element-inl_8h_source.html +++ b/element-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -304,11 +304,11 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
200//
201// element inline implementation
202//
-
203simdjson_inline element::element() noexcept : tape{} {}
+
203simdjson_inline element::element() noexcept : tape{} {}
204simdjson_inline element::element(const internal::tape_ref &_tape) noexcept : tape{_tape} { }
205
- +
206inline element_type element::type() const noexcept {
207 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
208 auto tape_type = tape.tape_ref_type();
209 return tape_type == internal::tape_type::FALSE_VALUE ? element_type::BOOL : static_cast<element_type>(tape_type);
@@ -316,7 +316,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
211
- +
213 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
214 if(tape.is_true()) {
215 return true;
@@ -327,7 +327,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
220}
- +
222 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
223 switch (tape.tape_ref_type()) {
224 case internal::tape_type::STRING: {
@@ -339,7 +339,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
230}
- +
232 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
233 switch (tape.tape_ref_type()) {
234 case internal::tape_type::STRING: {
@@ -351,7 +351,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
240}
- +
242 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
243 switch (tape.tape_ref_type()) {
244 case internal::tape_type::STRING:
@@ -362,40 +362,40 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
249}
- +
251 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
252 if(simdjson_unlikely(!tape.is_uint64())) { // branch rarely taken
253 if(tape.is_int64()) {
-
254 int64_t result = tape.next_tape_value<int64_t>();
-
255 if (result < 0) {
+
254 int64_t result = tape.next_tape_value<int64_t>();
+
255 if (result < 0) {
256 return NUMBER_OUT_OF_RANGE;
257 }
-
258 return uint64_t(result);
+
258 return uint64_t(result);
259 }
260 return INCORRECT_TYPE;
261 }
-
262 return tape.next_tape_value<int64_t>();
+
262 return tape.next_tape_value<int64_t>();
263}
- +
265 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
266 if(simdjson_unlikely(!tape.is_int64())) { // branch rarely taken
267 if(tape.is_uint64()) {
-
268 uint64_t result = tape.next_tape_value<uint64_t>();
+
268 uint64_t result = tape.next_tape_value<uint64_t>();
269 // Wrapping max in parens to handle Windows issue: https://stackoverflow.com/questions/11544073/how-do-i-deal-with-the-max-macro-in-windows-h-colliding-with-max-in-std
-
270 if (result > uint64_t((std::numeric_limits<int64_t>::max)())) {
+
270 if (result > uint64_t((std::numeric_limits<int64_t>::max)())) {
271 return NUMBER_OUT_OF_RANGE;
272 }
-
273 return static_cast<int64_t>(result);
+
273 return static_cast<int64_t>(result);
274 }
275 return INCORRECT_TYPE;
276 }
-
277 return tape.next_tape_value<int64_t>();
+
277 return tape.next_tape_value<int64_t>();
278}
- +
280 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
281 // Performance considerations:
282 // 1. Querying tape_ref_type() implies doing a shift, it is fast to just do a straight
@@ -408,9 +408,9 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
289 // information. (This could also be solved with profile-guided optimization.)
290 if(simdjson_unlikely(!tape.is_double())) { // branch rarely taken
291 if(tape.is_uint64()) {
-
292 return double(tape.next_tape_value<uint64_t>());
+
292 return double(tape.next_tape_value<uint64_t>());
293 } else if(tape.is_int64()) {
-
294 return double(tape.next_tape_value<int64_t>());
+
294 return double(tape.next_tape_value<int64_t>());
295 }
296 return INCORRECT_TYPE;
297 }
@@ -419,7 +419,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
300}
- +
302 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
303 switch (tape.tape_ref_type()) {
304 case internal::tape_type::START_ARRAY:
@@ -430,7 +430,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
309}
- +
311 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
312 switch (tape.tape_ref_type()) {
313 case internal::tape_type::START_OBJECT:
@@ -443,8 +443,8 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
319
320template<typename T>
-
321simdjson_warn_unused simdjson_inline error_code element::get(T &value) const noexcept {
-
322 return get<T>().get(value);
+
321simdjson_warn_unused simdjson_inline error_code element::get(T &value) const noexcept {
+
322 return get<T>().get(value);
323}
324// An element-specific version prevents recursion with simdjson_result::get<element>(value)
@@ -455,20 +455,20 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
329}
330template<typename T>
-
331inline void element::tie(T &value, error_code &error) && noexcept {
-
332 error = get<T>(value);
+
331inline void element::tie(T &value, error_code &error) && noexcept {
+
332 error = get<T>(value);
333}
334
335template<typename T>
-
336simdjson_inline bool element::is() const noexcept {
-
337 auto result = get<T>();
-
338 return !result.error();
+
336simdjson_inline bool element::is() const noexcept {
+
337 auto result = get<T>();
+
338 return !result.error();
339}
340
-
341template<> inline simdjson_result<array> element::get<array>() const noexcept { return get_array(); }
+
341template<> inline simdjson_result<array> element::get<array>() const noexcept { return get_array(); }
342template<> inline simdjson_result<object> element::get<object>() const noexcept { return get_object(); }
343template<> inline simdjson_result<const char *> element::get<const char *>() const noexcept { return get_c_str(); }
344template<> inline simdjson_result<std::string_view> element::get<std::string_view>() const noexcept { return get_string(); }
@@ -477,58 +477,58 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
347template<> inline simdjson_result<double> element::get<double>() const noexcept { return get_double(); }
348template<> inline simdjson_result<bool> element::get<bool>() const noexcept { return get_bool(); }
349
-
350inline bool element::is_array() const noexcept { return is<array>(); }
-
351inline bool element::is_object() const noexcept { return is<object>(); }
- -
353inline bool element::is_int64() const noexcept { return is<int64_t>(); }
- -
355inline bool element::is_double() const noexcept { return is<double>(); }
-
356inline bool element::is_bool() const noexcept { return is<bool>(); }
-
357inline bool element::is_number() const noexcept { return is_int64() || is_uint64() || is_double(); }
+
350inline bool element::is_array() const noexcept { return is<array>(); }
+
351inline bool element::is_object() const noexcept { return is<object>(); }
+
352inline bool element::is_string() const noexcept { return is<std::string_view>(); }
+
353inline bool element::is_int64() const noexcept { return is<int64_t>(); }
+
354inline bool element::is_uint64() const noexcept { return is<uint64_t>(); }
+
355inline bool element::is_double() const noexcept { return is<double>(); }
+
356inline bool element::is_bool() const noexcept { return is<bool>(); }
+
357inline bool element::is_number() const noexcept { return is_int64() || is_uint64() || is_double(); }
358
- +
359inline bool element::is_null() const noexcept {
360 return tape.is_null_on_tape();
361}
362
363#if SIMDJSON_EXCEPTIONS
364
-
365inline element::operator bool() const noexcept(false) { return get<bool>(); }
-
366inline element::operator const char*() const noexcept(false) { return get<const char *>(); }
-
367inline element::operator std::string_view() const noexcept(false) { return get<std::string_view>(); }
-
368inline element::operator uint64_t() const noexcept(false) { return get<uint64_t>(); }
-
369inline element::operator int64_t() const noexcept(false) { return get<int64_t>(); }
-
370inline element::operator double() const noexcept(false) { return get<double>(); }
-
371inline element::operator array() const noexcept(false) { return get<array>(); }
-
372inline element::operator object() const noexcept(false) { return get<object>(); }
+
365inline element::operator bool() const noexcept(false) { return get<bool>(); }
+
366inline element::operator const char*() const noexcept(false) { return get<const char *>(); }
+
367inline element::operator std::string_view() const noexcept(false) { return get<std::string_view>(); }
+
368inline element::operator uint64_t() const noexcept(false) { return get<uint64_t>(); }
+
369inline element::operator int64_t() const noexcept(false) { return get<int64_t>(); }
+
370inline element::operator double() const noexcept(false) { return get<double>(); }
+
371inline element::operator array() const noexcept(false) { return get<array>(); }
+
372inline element::operator object() const noexcept(false) { return get<object>(); }
373
- -
375 return get<array>().begin();
+
374inline array::iterator element::begin() const noexcept(false) {
+
375 return get<array>().begin();
376}
- -
378 return get<array>().end();
+
377inline array::iterator element::end() const noexcept(false) {
+
378 return get<array>().end();
379}
380
381#endif // SIMDJSON_EXCEPTIONS
382
-
383inline simdjson_result<element> element::operator[](std::string_view key) const noexcept {
+
383inline simdjson_result<element> element::operator[](std::string_view key) const noexcept {
384 return at_key(key);
385}
-
386inline simdjson_result<element> element::operator[](const char *key) const noexcept {
+
386inline simdjson_result<element> element::operator[](const char *key) const noexcept {
387 return at_key(key);
388}
389
-
390inline bool is_pointer_well_formed(std::string_view json_pointer) noexcept {
-
391 if (simdjson_unlikely(json_pointer[0] != '/')) {
+
390inline bool is_pointer_well_formed(std::string_view json_pointer) noexcept {
+
391 if (simdjson_unlikely(json_pointer[0] != '/')) {
392 return false;
393 }
394 size_t escape = json_pointer.find('~');
@@ -545,88 +545,88 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
405}
406
-
407inline simdjson_result<element> element::at_pointer(std::string_view json_pointer) const noexcept {
+
407inline simdjson_result<element> element::at_pointer(std::string_view json_pointer) const noexcept {
408 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
409 switch (tape.tape_ref_type()) {
410 case internal::tape_type::START_OBJECT:
-
411 return object(tape).at_pointer(json_pointer);
+
411 return object(tape).at_pointer(json_pointer);
412 case internal::tape_type::START_ARRAY:
-
413 return array(tape).at_pointer(json_pointer);
+
413 return array(tape).at_pointer(json_pointer);
414 default: {
-
415 if (!json_pointer.empty()) { // a non-empty string can be invalid, or accessing a primitive (issue 2154)
-
416 if (is_pointer_well_formed(json_pointer)) {
+
415 if (!json_pointer.empty()) { // a non-empty string can be invalid, or accessing a primitive (issue 2154)
+
416 if (is_pointer_well_formed(json_pointer)) {
417 return NO_SUCH_FIELD;
418 }
420 }
421 // an empty string means that we return the current node
-
422 dom::element copy(*this);
-
423 return simdjson_result<element>(std::move(copy));
+
422 dom::element copy(*this);
+
423 return simdjson_result<element>(std::move(copy));
424 }
425 }
426}
427
-
428inline simdjson_result<std::vector<element>> element::at_path_with_wildcard(std::string_view json_path) const noexcept {
+
428inline simdjson_result<std::vector<element>> element::at_path_with_wildcard(std::string_view json_path) const noexcept {
429 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
430
431 switch (tape.tape_ref_type()) {
432 case internal::tape_type::START_OBJECT:
- +
433 return object(tape).at_path_with_wildcard(json_path);
434 case internal::tape_type::START_ARRAY:
- +
435 return array(tape).at_path_with_wildcard(json_path);
436 default:
437 return std::vector<element>{};
438 }
439}
440
-
441inline simdjson_result<element> element::at_path(std::string_view json_path) const noexcept {
- -
443 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
-
444 return at_pointer(json_pointer);
+
441inline simdjson_result<element> element::at_path(std::string_view json_path) const noexcept {
+
442 auto json_pointer = json_path_to_pointer_conversion(json_path);
+
443 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
+
444 return at_pointer(json_pointer);
445}
446#ifndef SIMDJSON_DISABLE_DEPRECATED_API
447[[deprecated("For standard compliance, use at_pointer instead, and prefix your pointers with a slash '/', see RFC6901 ")]]
-
448inline simdjson_result<element> element::at(std::string_view json_pointer) const noexcept {
+
448inline simdjson_result<element> element::at(std::string_view json_pointer) const noexcept {
449 // version 0.4 of simdjson allowed non-compliant pointers
-
450 auto std_pointer = (json_pointer.empty() ? "" : "/") + std::string(json_pointer.begin(), json_pointer.end());
-
451 return at_pointer(std_pointer);
+
450 auto std_pointer = (json_pointer.empty() ? "" : "/") + std::string(json_pointer.begin(), json_pointer.end());
+
451 return at_pointer(std_pointer);
452}
453#endif // SIMDJSON_DISABLE_DEPRECATED_API
454
-
455inline simdjson_result<element> element::at(size_t index) const noexcept {
-
456 return get<array>().at(index);
+
455inline simdjson_result<element> element::at(size_t index) const noexcept {
+
456 return get<array>().at(index);
457}
-
458inline simdjson_result<element> element::at_key(std::string_view key) const noexcept {
-
459 return get<object>().at_key(key);
+
458inline simdjson_result<element> element::at_key(std::string_view key) const noexcept {
+
459 return get<object>().at_key(key);
460}
-
461inline simdjson_result<element> element::at_key_case_insensitive(std::string_view key) const noexcept {
-
462 return get<object>().at_key_case_insensitive(key);
+
461inline simdjson_result<element> element::at_key_case_insensitive(std::string_view key) const noexcept {
+
462 return get<object>().at_key_case_insensitive(key);
463}
-
464inline bool element::operator<(const element &other) const noexcept {
-
465 return tape.json_index < other.tape.json_index;
+
464inline bool element::operator<(const element &other) const noexcept {
+
465 return tape.json_index < other.tape.json_index;
466}
-
467inline bool element::operator==(const element &other) const noexcept {
-
468 return tape.json_index == other.tape.json_index;
+
467inline bool element::operator==(const element &other) const noexcept {
+
468 return tape.json_index == other.tape.json_index;
469}
470
-
471inline bool element::dump_raw_tape(std::ostream &out) const noexcept {
+
471inline bool element::dump_raw_tape(std::ostream &out) const noexcept {
472 SIMDJSON_DEVELOPMENT_ASSERT(tape.usable()); // https://github.com/simdjson/simdjson/issues/1914
-
473 return tape.doc->dump_raw_tape(out);
+
473 return tape.doc->dump_raw_tape(out);
474}
475
476
@@ -661,10 +661,7 @@ $(document).ready(function(){initNavTree('element-inl_8h_source.html',''); initR
JSON array.
Definition array.h:15
simdjson_result< std::vector< element > > at_path_with_wildcard(std::string_view json_path) const noexcept
Adds support for JSONPath expression with wildcards '*'.
Definition array-inl.h:162
-
iterator end() const noexcept
One past the last array element.
Definition array-inl.h:82
-
simdjson_result< element > at(size_t index) const noexcept
Get the value at the given index.
Definition array-inl.h:228
simdjson_result< element > at_pointer(std::string_view json_pointer) const noexcept
Get the value associated with the given JSON pointer.
Definition array-inl.h:94
-
iterator begin() const noexcept
Return the first array element.
Definition array-inl.h:78
A JSON element.
Definition element.h:33
bool is_object() const noexcept
Whether this element is a json object.
bool is_double() const noexcept
Whether this element is a json number that fits in a double.
diff --git a/element_8h_source.html b/element_8h_source.html index 14e6529b1..12338e270 100644 --- a/element_8h_source.html +++ b/element_8h_source.html @@ -29,7 +29,7 @@
@@ -133,15 +133,15 @@ $(document).ready(function(){initNavTree('element_8h_source.html',''); initResiz
37
39 simdjson_inline element_type type() const noexcept;
40
-
47 inline simdjson_result<array> get_array() const noexcept;
-
54 inline simdjson_result<object> get_object() const noexcept;
-
71 inline simdjson_result<const char *> get_c_str() const noexcept;
-
81 inline simdjson_result<size_t> get_string_length() const noexcept;
-
91 inline simdjson_result<std::string_view> get_string() const noexcept;
-
99 inline simdjson_result<int64_t> get_int64() const noexcept;
-
107 inline simdjson_result<uint64_t> get_uint64() const noexcept;
-
114 inline simdjson_result<double> get_double() const noexcept;
-
121 inline simdjson_result<bool> get_bool() const noexcept;
+
47 inline simdjson_result<array> get_array() const noexcept;
+
54 inline simdjson_result<object> get_object() const noexcept;
+
71 inline simdjson_result<const char *> get_c_str() const noexcept;
+
81 inline simdjson_result<size_t> get_string_length() const noexcept;
+
91 inline simdjson_result<std::string_view> get_string() const noexcept;
+
99 inline simdjson_result<int64_t> get_int64() const noexcept;
+
107 inline simdjson_result<uint64_t> get_uint64() const noexcept;
+
114 inline simdjson_result<double> get_double() const noexcept;
+
121 inline simdjson_result<bool> get_bool() const noexcept;
122
128 inline bool is_array() const noexcept;
134 inline bool is_object() const noexcept;
@@ -160,10 +160,10 @@ $(document).ready(function(){initNavTree('element_8h_source.html',''); initResiz
192
212 template<typename T>
- +
213 inline simdjson_result<T> get() const noexcept {
214 // Unless the simdjson library provides an inline implementation, calling this method should
215 // immediately fail.
-
216 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
+
216 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
217 "The supported types are Boolean (bool), numbers (double, uint64_t, int64_t), "
218 "strings (std::string_view, const char *), arrays (dom::array) and objects (dom::object). "
219 "We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
@@ -172,57 +172,57 @@ $(document).ready(function(){initNavTree('element_8h_source.html',''); initResiz
222
239 template<typename T>
-
240 simdjson_warn_unused simdjson_inline error_code get(T &value) const noexcept;
+
240 simdjson_warn_unused simdjson_inline error_code get(T &value) const noexcept;
241
257 template<typename T>
-
258 inline void tie(T &value, error_code &error) && noexcept;
+
258 inline void tie(T &value, error_code &error) && noexcept;
259
260#if SIMDJSON_EXCEPTIONS
-
267 inline operator bool() const noexcept(false);
+
267 inline operator bool() const noexcept(false);
268
- +
280 inline explicit operator const char*() const noexcept(false);
281
- +
291 inline operator std::string_view() const noexcept(false);
292
- - - - - +
300 inline operator uint64_t() const noexcept(false);
+
308 inline operator int64_t() const noexcept(false);
+
315 inline operator double() const noexcept(false);
+
322 inline operator array() const noexcept(false);
+
329 inline operator object() const noexcept(false);
330
-
337 inline dom::array::iterator begin() const noexcept(false);
+
337 inline dom::array::iterator begin() const noexcept(false);
338
-
345 inline dom::array::iterator end() const noexcept(false);
+
345 inline dom::array::iterator end() const noexcept(false);
346#endif // SIMDJSON_EXCEPTIONS
347
-
361 inline simdjson_result<element> operator[](std::string_view key) const noexcept;
+
361 inline simdjson_result<element> operator[](std::string_view key) const noexcept;
362
-
376 inline simdjson_result<element> operator[](const char *key) const noexcept;
-
377 simdjson_result<element> operator[](int) const noexcept = delete;
+
376 inline simdjson_result<element> operator[](const char *key) const noexcept;
+
377 simdjson_result<element> operator[](int) const noexcept = delete;
378
379
-
402 inline simdjson_result<element> at_pointer(const std::string_view json_pointer) const noexcept;
+
402 inline simdjson_result<element> at_pointer(const std::string_view json_pointer) const noexcept;
403
-
404 inline simdjson_result<std::vector<element>> at_path_with_wildcard(const std::string_view json_path) const noexcept;
+
404 inline simdjson_result<std::vector<element>> at_path_with_wildcard(const std::string_view json_path) const noexcept;
405
-
419 inline simdjson_result<element> at_path(std::string_view json_path) const noexcept;
+
419 inline simdjson_result<element> at_path(std::string_view json_path) const noexcept;
420
421#ifndef SIMDJSON_DISABLE_DEPRECATED_API
442 [[deprecated("For standard compliance, use at_pointer instead, and prefix your pointers with a slash '/', see RFC6901 ")]]
-
443 inline simdjson_result<element> at(const std::string_view json_pointer) const noexcept;
+
443 inline simdjson_result<element> at(const std::string_view json_pointer) const noexcept;
444#endif // SIMDJSON_DISABLE_DEPRECATED_API
445
-
452 inline simdjson_result<element> at(size_t index) const noexcept;
+
452 inline simdjson_result<element> at(size_t index) const noexcept;
453
-
466 inline simdjson_result<element> at_key(std::string_view key) const noexcept;
+
466 inline simdjson_result<element> at_key(std::string_view key) const noexcept;
467
-
476 inline simdjson_result<element> at_key_case_insensitive(std::string_view key) const noexcept;
+
476 inline simdjson_result<element> at_key_case_insensitive(std::string_view key) const noexcept;
477
-
484 inline bool operator<(const element &other) const noexcept;
+
484 inline bool operator<(const element &other) const noexcept;
485
-
492 inline bool operator==(const element &other) const noexcept;
+
492 inline bool operator==(const element &other) const noexcept;
493
-
495 inline bool dump_raw_tape(std::ostream &out) const noexcept;
+
495 inline bool dump_raw_tape(std::ostream &out) const noexcept;
496
497private:
498 simdjson_inline element(const internal::tape_ref &tape) noexcept;
diff --git a/error-inl_8h_source.html b/error-inl_8h_source.html index 465396ce6..6d4301dc3 100644 --- a/error-inl_8h_source.html +++ b/error-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/error_8h_source.html b/error_8h_source.html index b94f40a8f..f5545ab6d 100644 --- a/error_8h_source.html +++ b/error_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2base_8h_source.html b/fallback_2base_8h_source.html index b35cbb885..5d6323490 100644 --- a/fallback_2base_8h_source.html +++ b/fallback_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2begin_8h_source.html b/fallback_2begin_8h_source.html index 1d89958d7..6548acb7e 100644 --- a/fallback_2begin_8h_source.html +++ b/fallback_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2bitmanipulation_8h_source.html b/fallback_2bitmanipulation_8h_source.html index fe582b4f8..a176dbda4 100644 --- a/fallback_2bitmanipulation_8h_source.html +++ b/fallback_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2end_8h_source.html b/fallback_2end_8h_source.html index 301099280..00482109f 100644 --- a/fallback_2end_8h_source.html +++ b/fallback_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2implementation_8h_source.html b/fallback_2implementation_8h_source.html index 366db9aec..b83f25e5c 100644 --- a/fallback_2implementation_8h_source.html +++ b/fallback_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2numberparsing__defs_8h_source.html b/fallback_2numberparsing__defs_8h_source.html index 587b9a2b4..8b3fadc5a 100644 --- a/fallback_2numberparsing__defs_8h_source.html +++ b/fallback_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2ondemand_8h_source.html b/fallback_2ondemand_8h_source.html index 9e815504d..be28ea750 100644 --- a/fallback_2ondemand_8h_source.html +++ b/fallback_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_2stringparsing__defs_8h_source.html b/fallback_2stringparsing__defs_8h_source.html index 2da69a576..e8a4418ae 100644 --- a/fallback_2stringparsing__defs_8h_source.html +++ b/fallback_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/fallback_8h_source.html b/fallback_8h_source.html index dfa745003..1be4d6885 100644 --- a/fallback_8h_source.html +++ b/fallback_8h_source.html @@ -29,7 +29,7 @@ diff --git a/field-inl_8h_source.html b/field-inl_8h_source.html index 623b434cc..a981ae6ac 100644 --- a/field-inl_8h_source.html +++ b/field-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -117,9 +117,9 @@ $(document).ready(function(){initNavTree('field-inl_8h_source.html',''); initRes
13namespace ondemand {
14
15// clang 6 does not think the default constructor can be noexcept, so we make it explicit
-
16simdjson_inline field::field() noexcept : std::pair<raw_json_string, ondemand::value>() {}
+
16simdjson_inline field::field() noexcept : std::pair<raw_json_string, ondemand::value>() {}
17
-
18simdjson_inline field::field(raw_json_string key, ondemand::value &&value) noexcept
+
18simdjson_inline field::field(raw_json_string key, ondemand::value &&value) noexcept
19 : std::pair<raw_json_string, ondemand::value>(key, std::forward<ondemand::value>(value))
20{
21}
@@ -136,26 +136,26 @@ $(document).ready(function(){initNavTree('field-inl_8h_source.html',''); initRes
32}
33
-
34simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> field::unescaped_key(bool allow_replacement) noexcept {
+
34simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> field::unescaped_key(bool allow_replacement) noexcept {
35 SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() but Visual Studio won't let us.
-
36 simdjson_result<std::string_view> answer = first.unescape(second.iter.json_iter(), allow_replacement);
-
37 first.consume();
-
38 return answer;
+
36 simdjson_result<std::string_view> answer = first.unescape(second.iter.json_iter(), allow_replacement);
+
37 first.consume();
+
38 return answer;
39}
40
41template <typename string_type>
-
42simdjson_inline simdjson_warn_unused error_code field::unescaped_key(string_type& receiver, bool allow_replacement) noexcept {
+
42simdjson_inline simdjson_warn_unused error_code field::unescaped_key(string_type& receiver, bool allow_replacement) noexcept {
43 std::string_view key;
-
44 SIMDJSON_TRY( unescaped_key(allow_replacement).get(key) );
-
45 receiver = key;
+
44 SIMDJSON_TRY( unescaped_key(allow_replacement).get(key) );
+
45 receiver = key;
46 return SUCCESS;
47}
48
- +
49simdjson_inline raw_json_string field::key() const noexcept {
50 SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() by Visual Studio won't let us.
51 return first;
52}
@@ -163,18 +163,18 @@ $(document).ready(function(){initNavTree('field-inl_8h_source.html',''); initRes
53
54
-
55simdjson_inline std::string_view field::key_raw_json_token() const noexcept {
+
55simdjson_inline std::string_view field::key_raw_json_token() const noexcept {
56 SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() by Visual Studio won't let us.
57 return std::string_view(reinterpret_cast<const char*>(first.buf-1), second.iter._json_iter->token.peek(-1) - first.buf + 1);
58}
59
-
60simdjson_inline std::string_view field::escaped_key() const noexcept {
+
60simdjson_inline std::string_view field::escaped_key() const noexcept {
61 SIMDJSON_ASSUME(first.buf != nullptr); // We would like to call .alive() by Visual Studio won't let us.
-
62 auto end_quote = second.iter._json_iter->token.peek(-1);
-
63 while(*end_quote != '"') end_quote--;
-
64 return std::string_view(reinterpret_cast<const char*>(first.buf), end_quote - first.buf);
+
62 auto end_quote = second.iter._json_iter->token.peek(-1);
+
63 while(*end_quote != '"') end_quote--;
+
64 return std::string_view(reinterpret_cast<const char*>(first.buf), end_quote - first.buf);
65}
66
@@ -243,9 +243,6 @@ $(document).ready(function(){initNavTree('field-inl_8h_source.html',''); initRes
127} // namespace simdjson
128
129#endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_INL_H
- -
value_iterator iter
Iterator marking current position.
Definition array.h:212
-
simdjson_warn_unused simdjson_inline error_code consume() noexcept
Go to the end of the array, no matter where you are right now.
Definition array-inl.h:88
simdjson_inline std::string_view key_raw_json_token() const noexcept
Get the unprocessed key as a string_view.
Definition field-inl.h:55
simdjson_inline simdjson_warn_unused simdjson_result< std::string_view > unescaped_key(bool allow_replacement=false) noexcept
Get the key as a string_view (for higher speed, consider raw_key).
Definition field-inl.h:34
simdjson_inline raw_json_string key() const noexcept
Get the key as a raw_json_string.
Definition field-inl.h:49
diff --git a/field_8h_source.html b/field_8h_source.html index 29f806211..493f083b7 100644 --- a/field_8h_source.html +++ b/field_8h_source.html @@ -29,7 +29,7 @@
@@ -121,9 +121,9 @@ $(document).ready(function(){initNavTree('field_8h_source.html',''); initResizab
23public:
29 simdjson_inline field() noexcept;
30
-
39 simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescaped_key(bool allow_replacement = false) noexcept;
+
39 simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescaped_key(bool allow_replacement = false) noexcept;
48 template <typename string_type>
-
49 simdjson_inline simdjson_warn_unused error_code unescaped_key(string_type& receiver, bool allow_replacement = false) noexcept;
+
49 simdjson_inline simdjson_warn_unused error_code unescaped_key(string_type& receiver, bool allow_replacement = false) noexcept;
57 simdjson_inline raw_json_string key() const noexcept;
64 simdjson_inline std::string_view key_raw_json_token() const noexcept;
71 simdjson_inline std::string_view escaped_key() const noexcept;
@@ -132,8 +132,8 @@ $(document).ready(function(){initNavTree('field_8h_source.html',''); initResizab
80
81protected:
82 simdjson_inline field(raw_json_string key, ondemand::value &&value) noexcept;
-
83 static simdjson_inline simdjson_result<field> start(value_iterator &parent_iter) noexcept;
-
84 static simdjson_inline simdjson_result<field> start(const value_iterator &parent_iter, raw_json_string key) noexcept;
+
83 static simdjson_inline simdjson_result<field> start(value_iterator &parent_iter) noexcept;
+
84 static simdjson_inline simdjson_result<field> start(const value_iterator &parent_iter, raw_json_string key) noexcept;
85 friend struct simdjson_result<field>;
86 friend class object_iterator;
87};
@@ -166,7 +166,6 @@ $(document).ready(function(){initNavTree('field_8h_source.html',''); initResizab
111} // namespace simdjson
112
113#endif // SIMDJSON_GENERIC_ONDEMAND_FIELD_H
-
A JSON field (key/value pair) in an object.
Definition field.h:22
simdjson_inline std::string_view key_raw_json_token() const noexcept
Get the unprocessed key as a string_view.
Definition field-inl.h:55
simdjson_inline simdjson_warn_unused simdjson_result< std::string_view > unescaped_key(bool allow_replacement=false) noexcept
Get the key as a string_view (for higher speed, consider raw_key).
Definition field-inl.h:34
diff --git a/files.html b/files.html index 02057a471..c5c65d36f 100644 --- a/files.html +++ b/files.html @@ -29,7 +29,7 @@ @@ -150,40 +150,41 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); }); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/functions.html b/functions.html index 57fa92e6b..bc6278287 100644 --- a/functions.html +++ b/functions.html @@ -29,7 +29,7 @@ diff --git a/functions_b.html b/functions_b.html index 7d6a949f5..d4c993cc1 100644 --- a/functions_b.html +++ b/functions_b.html @@ -29,7 +29,7 @@ diff --git a/functions_c.html b/functions_c.html index dfe4d66b9..91a0c0380 100644 --- a/functions_c.html +++ b/functions_c.html @@ -29,7 +29,7 @@ diff --git a/functions_d.html b/functions_d.html index 35a86cc9a..3829dfa1c 100644 --- a/functions_d.html +++ b/functions_d.html @@ -29,7 +29,7 @@ diff --git a/functions_e.html b/functions_e.html index dab221008..903789604 100644 --- a/functions_e.html +++ b/functions_e.html @@ -29,7 +29,7 @@ diff --git a/functions_f.html b/functions_f.html index 4603db3e6..82e90858e 100644 --- a/functions_f.html +++ b/functions_f.html @@ -29,7 +29,7 @@ diff --git a/functions_func.html b/functions_func.html index 616baa07e..e0d7b0149 100644 --- a/functions_func.html +++ b/functions_func.html @@ -29,7 +29,7 @@ diff --git a/functions_func_b.html b/functions_func_b.html index 9cbbfb665..57078a76e 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -29,7 +29,7 @@ diff --git a/functions_func_c.html b/functions_func_c.html index 868616bf9..e86552caf 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -29,7 +29,7 @@ diff --git a/functions_func_d.html b/functions_func_d.html index 7d0499f78..5865768a4 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -29,7 +29,7 @@ diff --git a/functions_func_e.html b/functions_func_e.html index ebd76055c..5fcfe25f0 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -29,7 +29,7 @@ diff --git a/functions_func_f.html b/functions_func_f.html index 7e62c79b0..d9bc236ca 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -29,7 +29,7 @@ diff --git a/functions_func_g.html b/functions_func_g.html index 57575db1d..f3fc5d094 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -29,7 +29,7 @@ diff --git a/functions_func_h.html b/functions_func_h.html index ad402c894..6b52aea6f 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -29,7 +29,7 @@ diff --git a/functions_func_i.html b/functions_func_i.html index d0fb5474f..0a9650789 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -29,7 +29,7 @@ diff --git a/functions_func_k.html b/functions_func_k.html index 8acb6748c..11f0434b8 100644 --- a/functions_func_k.html +++ b/functions_func_k.html @@ -29,7 +29,7 @@ diff --git a/functions_func_l.html b/functions_func_l.html index f77f5b491..c973fa9d2 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -29,7 +29,7 @@ diff --git a/functions_func_m.html b/functions_func_m.html index a828543cc..e0f886172 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -29,7 +29,7 @@ diff --git a/functions_func_n.html b/functions_func_n.html index eb2b4cefd..57754bbd3 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -29,7 +29,7 @@ diff --git a/functions_func_o.html b/functions_func_o.html index 6d70e77dd..a31f072ff 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -29,7 +29,7 @@ diff --git a/functions_func_p.html b/functions_func_p.html index a6b433015..1d46608c3 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -29,7 +29,7 @@ diff --git a/functions_func_r.html b/functions_func_r.html index a407dd466..6d7915213 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -29,7 +29,7 @@ diff --git a/functions_func_s.html b/functions_func_s.html index e091884c0..604bd9069 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -29,7 +29,7 @@ diff --git a/functions_func_t.html b/functions_func_t.html index 07ed0a6bf..c7d83fe91 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -29,7 +29,7 @@ diff --git a/functions_func_u.html b/functions_func_u.html index 567fa4246..eed3c200d 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -29,7 +29,7 @@ diff --git a/functions_func_v.html b/functions_func_v.html index 05af2a0b0..041a249c2 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -29,7 +29,7 @@ diff --git a/functions_func_w.html b/functions_func_w.html index 7ee914f41..f59ed6344 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -29,7 +29,7 @@ diff --git a/functions_func_~.html b/functions_func_~.html index 0b06bb60e..1db0f69ca 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -29,7 +29,7 @@ diff --git a/functions_g.html b/functions_g.html index f1f13c338..abc76a146 100644 --- a/functions_g.html +++ b/functions_g.html @@ -29,7 +29,7 @@ diff --git a/functions_h.html b/functions_h.html index 2cc347281..40fd598b9 100644 --- a/functions_h.html +++ b/functions_h.html @@ -29,7 +29,7 @@ diff --git a/functions_i.html b/functions_i.html index 5b1bdfdca..7b53df919 100644 --- a/functions_i.html +++ b/functions_i.html @@ -29,7 +29,7 @@ diff --git a/functions_k.html b/functions_k.html index 404a7dc94..24c7c8673 100644 --- a/functions_k.html +++ b/functions_k.html @@ -29,7 +29,7 @@ diff --git a/functions_l.html b/functions_l.html index 29efaa711..ea4168075 100644 --- a/functions_l.html +++ b/functions_l.html @@ -29,7 +29,7 @@ diff --git a/functions_m.html b/functions_m.html index 42c6c01ae..a69503db7 100644 --- a/functions_m.html +++ b/functions_m.html @@ -29,7 +29,7 @@ diff --git a/functions_n.html b/functions_n.html index dec6a6563..53cfdfed6 100644 --- a/functions_n.html +++ b/functions_n.html @@ -29,7 +29,7 @@ diff --git a/functions_o.html b/functions_o.html index 6d95a2a50..73e51e62e 100644 --- a/functions_o.html +++ b/functions_o.html @@ -29,7 +29,7 @@ diff --git a/functions_p.html b/functions_p.html index 4f7e5f190..568a66403 100644 --- a/functions_p.html +++ b/functions_p.html @@ -29,7 +29,7 @@ diff --git a/functions_r.html b/functions_r.html index 837e41df7..5c3ae22ef 100644 --- a/functions_r.html +++ b/functions_r.html @@ -29,7 +29,7 @@ diff --git a/functions_s.html b/functions_s.html index 4b2684a75..c1a980704 100644 --- a/functions_s.html +++ b/functions_s.html @@ -29,7 +29,7 @@ diff --git a/functions_t.html b/functions_t.html index bed68979a..3efde9881 100644 --- a/functions_t.html +++ b/functions_t.html @@ -29,7 +29,7 @@ diff --git a/functions_u.html b/functions_u.html index c5790da5f..6e6116116 100644 --- a/functions_u.html +++ b/functions_u.html @@ -29,7 +29,7 @@ diff --git a/functions_v.html b/functions_v.html index 7505bd7f7..e4a0234d8 100644 --- a/functions_v.html +++ b/functions_v.html @@ -29,7 +29,7 @@ diff --git a/functions_vars.html b/functions_vars.html index 98db468dd..8ad56cb1f 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -29,7 +29,7 @@ diff --git a/functions_w.html b/functions_w.html index 3a09763b0..11e19fdce 100644 --- a/functions_w.html +++ b/functions_w.html @@ -29,7 +29,7 @@ diff --git a/functions_~.html b/functions_~.html index db6797c6a..a4aaf1a75 100644 --- a/functions_~.html +++ b/functions_~.html @@ -29,7 +29,7 @@ diff --git a/generic_2base_8h_source.html b/generic_2base_8h_source.html index 9178b82de..8be45cff7 100644 --- a/generic_2base_8h_source.html +++ b/generic_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/generic_2dom__parser__implementation_8h_source.html b/generic_2dom__parser__implementation_8h_source.html index 05c2a14da..da539b2c6 100644 --- a/generic_2dom__parser__implementation_8h_source.html +++ b/generic_2dom__parser__implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/generic_2ondemand_2array-inl_8h_source.html b/generic_2ondemand_2array-inl_8h_source.html index 861e1e0f5..dcab52464 100644 --- a/generic_2ondemand_2array-inl_8h_source.html +++ b/generic_2ondemand_2array-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -159,14 +159,14 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
54//
55
-
56simdjson_inline array::array(const value_iterator &_iter) noexcept
-
57 : iter{_iter}
+
56simdjson_inline array::array(const value_iterator &_iter) noexcept
+
57 : iter{_iter}
58{
59}
60
-
61simdjson_inline simdjson_result<array> array::start(value_iterator &iter) noexcept {
+
61simdjson_inline simdjson_result<array> array::start(value_iterator &iter) noexcept {
62 // We don't need to know if the array is empty to start iteration, but we do want to know if there
63 // is an error--thus `simdjson_unused`.
64 simdjson_unused bool has_value;
@@ -175,14 +175,14 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
67}
-
68simdjson_inline simdjson_result<array> array::start_root(value_iterator &iter) noexcept {
+
68simdjson_inline simdjson_result<array> array::start_root(value_iterator &iter) noexcept {
69 simdjson_unused bool has_value;
70 SIMDJSON_TRY( iter.start_root_array().get(has_value) );
71 return array(iter);
72}
-
73simdjson_inline simdjson_result<array> array::started(value_iterator &iter) noexcept {
+
73simdjson_inline simdjson_result<array> array::started(value_iterator &iter) noexcept {
74 bool has_value;
75 SIMDJSON_TRY(iter.started_array().get(has_value));
76 return array(iter);
@@ -190,7 +190,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
78
- +
80#if SIMDJSON_DEVELOPMENT_CHECKS
81 if (!iter.is_at_iterator_start()) { return OUT_OF_ORDER_ITERATION; }
82#endif
@@ -198,12 +198,12 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
84}
-
88simdjson_warn_unused simdjson_warn_unused simdjson_inline error_code array::consume() noexcept {
+
88simdjson_warn_unused simdjson_warn_unused simdjson_inline error_code array::consume() noexcept {
89 auto error = iter.json_iter().skip_child(iter.depth()-1);
90 if(error) { iter.abandon(); }
91 return error;
@@ -211,27 +211,27 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
93
- -
95 const uint8_t * starting_point{iter.peek_start()};
+ +
95 const uint8_t * starting_point{iter.peek_start()};
96 auto error = consume();
97 if(error) { return error; }
98 // After 'consume()', we could be left pointing just beyond the document, but that
99 // is ok because we are not going to dereference the final pointer position, we just
100 // use it to compute the length in bytes.
-
101 const uint8_t * final_point{iter._json_iter->unsafe_pointer()};
-
102 return std::string_view(reinterpret_cast<const char*>(starting_point), size_t(final_point - starting_point));
+
101 const uint8_t * final_point{iter._json_iter->unsafe_pointer()};
+
102 return std::string_view(reinterpret_cast<const char*>(starting_point), size_t(final_point - starting_point));
103}
104
105SIMDJSON_PUSH_DISABLE_WARNINGS
106SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
-
107simdjson_inline simdjson_result<size_t> array::count_elements() & noexcept {
+
107simdjson_inline simdjson_result<size_t> array::count_elements() & noexcept {
108 size_t count{0};
109 // Important: we do not consume any of the values.
-
110 for(simdjson_unused auto v : *this) { count++; }
+
110 for(simdjson_unused auto v : *this) { count++; }
111 // The above loop will always succeed, but we want to report errors.
-
112 if(iter.error()) { return iter.error(); }
+
112 if(iter.error()) { return iter.error(); }
113 // We need to move back at the start because we expect users to iterate through
114 // the array after counting the number of elements.
115 iter.reset_array();
@@ -241,72 +241,72 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
118SIMDJSON_POP_DISABLE_WARNINGS
119
-
120simdjson_inline simdjson_result<bool> array::is_empty() & noexcept {
-
121 bool is_not_empty;
-
122 auto error = iter.reset_array().get(is_not_empty);
+
120simdjson_inline simdjson_result<bool> array::is_empty() & noexcept {
+
121 bool is_not_empty;
+
122 auto error = iter.reset_array().get(is_not_empty);
123 if(error) { return error; }
-
124 return !is_not_empty;
+
124 return !is_not_empty;
125}
126
- +
128 return iter.reset_array();
129}
130
-
131inline simdjson_result<value> array::at_pointer(std::string_view json_pointer) noexcept {
-
132 if (json_pointer[0] != '/') { return INVALID_JSON_POINTER; }
-
133 json_pointer = json_pointer.substr(1);
+
131inline simdjson_result<value> array::at_pointer(std::string_view json_pointer) noexcept {
+
132 if (json_pointer[0] != '/') { return INVALID_JSON_POINTER; }
+
133 json_pointer = json_pointer.substr(1);
134 // - means "the append position" or "the element after the end of the array"
135 // We don't support this, because we're returning a real element, not a position.
-
136 if (json_pointer == "-") { return INDEX_OUT_OF_BOUNDS; }
+
136 if (json_pointer == "-") { return INDEX_OUT_OF_BOUNDS; }
137
138 // Read the array index
-
139 size_t array_index = 0;
-
140 size_t i;
-
141 for (i = 0; i < json_pointer.length() && json_pointer[i] != '/'; i++) {
- +
139 size_t array_index = 0;
+
140 size_t i;
+
141 for (i = 0; i < json_pointer.length() && json_pointer[i] != '/'; i++) {
+
142 uint8_t digit = uint8_t(json_pointer[i] - '0');
143 // Check for non-digit in array index. If it's there, we're trying to get a field in an object
-
144 if (digit > 9) { return INCORRECT_TYPE; }
- +
144 if (digit > 9) { return INCORRECT_TYPE; }
+
145 array_index = array_index*10 + digit;
146 }
147
148 // 0 followed by other digits is invalid
-
149 if (i > 1 && json_pointer[0] == '0') { return INVALID_JSON_POINTER; } // "JSON pointer array index has other characters after 0"
+
149 if (i > 1 && json_pointer[0] == '0') { return INVALID_JSON_POINTER; } // "JSON pointer array index has other characters after 0"
150
151 // Empty string is invalid; so is a "/" with no digits before it
-
152 if (i == 0) { return INVALID_JSON_POINTER; } // "Empty string in JSON pointer array index"
+
152 if (i == 0) { return INVALID_JSON_POINTER; } // "Empty string in JSON pointer array index"
153 // Get the child
-
154 auto child = at(array_index);
+
154 auto child = at(array_index);
155 // If there is an error, it ends here
156 if(child.error()) {
157 return child;
158 }
159
160 // If there is a /, we're not done yet, call recursively.
-
161 if (i < json_pointer.length()) {
-
162 child = child.at_pointer(json_pointer.substr(i));
+
161 if (i < json_pointer.length()) {
+
162 child = child.at_pointer(json_pointer.substr(i));
163 }
164 return child;
165}
166
-
167inline simdjson_result<value> array::at_path(std::string_view json_path) noexcept {
- -
169 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
-
170 return at_pointer(json_pointer);
+
167inline simdjson_result<value> array::at_path(std::string_view json_path) noexcept {
+
168 auto json_pointer = json_path_to_pointer_conversion(json_path);
+
169 if (json_pointer == "-1") { return INVALID_JSON_POINTER; }
+
170 return at_pointer(json_pointer);
171}
172
-
173simdjson_inline simdjson_result<value> array::at(size_t index) noexcept {
-
174 size_t i = 0;
+
173simdjson_inline simdjson_result<value> array::at(size_t index) noexcept {
+
174 size_t i = 0;
175 for (auto value : *this) {
-
176 if (i == index) { return value; }
-
177 i++;
+
176 if (i == index) { return value; }
+
177 i++;
178 }
179 return INDEX_OUT_OF_BOUNDS;
180}
@@ -394,6 +394,8 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array-inl_8h_source
@ INDEX_OUT_OF_BOUNDS
JSON array index too large.
Definition error.h:39
@ INVALID_JSON_POINTER
Invalid JSON pointer syntax.
Definition error.h:42
std::string json_path_to_pointer_conversion(std::string_view json_path)
Converts JSONPath to JSON Pointer.
+
The result of a simdjson operation that could fail.
Definition error.h:278
+
simdjson_inline error_code error() const noexcept
The error.
Definition error-inl.h:168
diff --git a/generic_2ondemand_2array_8h_source.html b/generic_2ondemand_2array_8h_source.html index 12093afdb..2bb3f069d 100644 --- a/generic_2ondemand_2array_8h_source.html +++ b/generic_2ondemand_2array_8h_source.html @@ -29,7 +29,7 @@ @@ -118,46 +118,46 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2array_8h_source.htm
17class array {
18public:
-
24 simdjson_inline array() noexcept = default;
+
24 simdjson_inline array() noexcept = default;
25
- -
37 simdjson_inline simdjson_result<array_iterator> end() noexcept;
-
53 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
-
63 simdjson_inline simdjson_result<bool> is_empty() & noexcept;
- - +
31 simdjson_inline simdjson_result<array_iterator> begin() noexcept;
+
37 simdjson_inline simdjson_result<array_iterator> end() noexcept;
+
53 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
+
63 simdjson_inline simdjson_result<bool> is_empty() & noexcept;
+
74 inline simdjson_result<bool> reset() & noexcept;
+
103 inline simdjson_result<value> at_pointer(std::string_view json_pointer) noexcept;
104
- +
118 inline simdjson_result<value> at_path(std::string_view json_path) noexcept;
119
-
124 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
+
124 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
125
-
133 simdjson_inline simdjson_result<value> at(size_t index) noexcept;
+
133 simdjson_inline simdjson_result<value> at(size_t index) noexcept;
134
135#if SIMDJSON_SUPPORTS_CONCEPTS
143 template <typename T>
-
144 simdjson_warn_unused simdjson_inline error_code get(T &out)
- -
146 static_assert(custom_deserializable<T, array>);
-
147 return deserialize(*this, out);
+
144 simdjson_warn_unused simdjson_inline error_code get(T &out)
+
145 noexcept(custom_deserializable<T, array> ? nothrow_custom_deserializable<T, array> : true) {
+
146 static_assert(custom_deserializable<T, array>);
+
147 return deserialize(*this, out);
148 }
155 template <typename T>
-
156 simdjson_inline simdjson_result<T> get()
- +
156 simdjson_inline simdjson_result<T> get()
+
157 noexcept(custom_deserializable<T, value> ? nothrow_custom_deserializable<T, value> : true)
158 {
159 static_assert(std::is_default_constructible<T>::value, "The specified type is not default constructible.");
-
160 T out{};
-
161 SIMDJSON_TRY(get<T>(out));
-
162 return out;
+
160 T out{};
+
161 SIMDJSON_TRY(get<T>(out));
+
162 return out;
163 }
164#endif // SIMDJSON_SUPPORTS_CONCEPTS
165protected:
-
169 simdjson_warn_unused simdjson_inline error_code consume() noexcept;
+
169 simdjson_warn_unused simdjson_inline error_code consume() noexcept;
170
-
178 static simdjson_inline simdjson_result<array> start(value_iterator &iter) noexcept;
-
187 static simdjson_inline simdjson_result<array> start_root(value_iterator &iter) noexcept;
-
196 static simdjson_inline simdjson_result<array> started(value_iterator &iter) noexcept;
+
178 static simdjson_inline simdjson_result<array> start(value_iterator &iter) noexcept;
+
187 static simdjson_inline simdjson_result<array> start_root(value_iterator &iter) noexcept;
+
196 static simdjson_inline simdjson_result<array> started(value_iterator &iter) noexcept;
197
-
205 simdjson_inline array(const value_iterator &iter) noexcept;
+
205 simdjson_inline array(const value_iterator &iter) noexcept;
206
212 value_iterator iter{};
213
diff --git a/generic_2ondemand_2base_8h_source.html b/generic_2ondemand_2base_8h_source.html index 815b2b6f2..94e0ec4d4 100644 --- a/generic_2ondemand_2base_8h_source.html +++ b/generic_2ondemand_2base_8h_source.html @@ -29,7 +29,7 @@
diff --git a/generic_2ondemand_2document-inl_8h_source.html b/generic_2ondemand_2document-inl_8h_source.html index a0eae4dc6..94a4b04ed 100644 --- a/generic_2ondemand_2document-inl_8h_source.html +++ b/generic_2ondemand_2document-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -135,42 +135,42 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
31}
32
- +
33inline void document::rewind() noexcept {
34 iter.rewind();
35}
36
-
37inline std::string document::to_debug_string() noexcept {
+
37inline std::string document::to_debug_string() noexcept {
38 return iter.to_string();
39}
40
44
- +
45inline int32_t document::current_depth() const noexcept {
46 return iter.depth();
47}
48
- +
49inline bool document::at_end() const noexcept {
50 return iter.at_end();
51}
52
53
- +
54inline bool document::is_alive() noexcept {
55 return iter.is_alive();
56}
-
57simdjson_inline value_iterator document::resume_value_iterator() noexcept {
+
57simdjson_inline value_iterator document::resume_value_iterator() noexcept {
58 return value_iterator(&iter, 1, iter.root_position());
59}
60simdjson_inline value_iterator document::get_root_value_iterator() noexcept {
@@ -184,7 +184,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
68 }
69}
- +
70simdjson_inline simdjson_result<value> document::get_value() noexcept {
71 // Make sure we start any arrays or objects before returning, so that start_root_<object/array>()
72 // gets called.
73
@@ -221,81 +221,81 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
104}
-
105simdjson_inline simdjson_result<array> document::get_array() & noexcept {
+
105simdjson_inline simdjson_result<array> document::get_array() & noexcept {
106 auto value = get_root_value_iterator();
107 return array::start_root(value);
108}
-
109simdjson_inline simdjson_result<object> document::get_object() & noexcept {
+
109simdjson_inline simdjson_result<object> document::get_object() & noexcept {
110 auto value = get_root_value_iterator();
111 return object::start_root(value);
112}
113
- +
123 return get_root_value_iterator().get_root_uint64(true);
124}
- +
126 return get_root_value_iterator().get_root_uint64_in_string(true);
127}
- +
129 return get_root_value_iterator().get_root_int64(true);
130}
- +
132 return get_root_value_iterator().get_root_int64_in_string(true);
133}
- +
135 return get_root_value_iterator().get_root_double(true);
136}
- +
138 return get_root_value_iterator().get_root_double_in_string(true);
139}
- -
141 return get_root_value_iterator().get_root_string(true, allow_replacement);
+
140simdjson_inline simdjson_result<std::string_view> document::get_string(bool allow_replacement) noexcept {
+
141 return get_root_value_iterator().get_root_string(true, allow_replacement);
142}
143template <typename string_type>
-
144simdjson_warn_unused simdjson_inline error_code document::get_string(string_type& receiver, bool allow_replacement) noexcept {
-
145 return get_root_value_iterator().get_root_string(receiver, true, allow_replacement);
+
144simdjson_warn_unused simdjson_inline error_code document::get_string(string_type& receiver, bool allow_replacement) noexcept {
+
145 return get_root_value_iterator().get_root_string(receiver, true, allow_replacement);
146}
- +
148 return get_root_value_iterator().get_root_wobbly_string(true);
149}
- +
151 return get_root_value_iterator().get_root_raw_json_string(true);
152}
- +
153simdjson_inline simdjson_result<bool> document::get_bool() noexcept {
154 return get_root_value_iterator().get_root_bool(true);
155}
- +
156simdjson_inline simdjson_result<bool> document::is_null() noexcept {
157 return get_root_value_iterator().is_root_null(true);
158}
159
-
160template<> simdjson_inline simdjson_result<array> document::get() & noexcept { return get_array(); }
+
160template<> simdjson_inline simdjson_result<array> document::get() & noexcept { return get_array(); }
161template<> simdjson_inline simdjson_result<object> document::get() & noexcept { return get_object(); }
162template<> simdjson_inline simdjson_result<raw_json_string> document::get() & noexcept { return get_raw_json_string(); }
163template<> simdjson_inline simdjson_result<std::string_view> document::get() & noexcept { return get_string(false); }
@@ -327,67 +327,67 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
189template <class T>
190simdjson_deprecated simdjson_inline document::operator T() && noexcept(false) { return get<T>(); }
191template <class T>
-
192simdjson_inline document::operator T() & noexcept(false) { return get<T>(); }
+
192simdjson_inline document::operator T() & noexcept(false) { return get<T>(); }
193simdjson_inline document::operator array() & noexcept(false) { return get_array(); }
194simdjson_inline document::operator object() & noexcept(false) { return get_object(); }
-
195simdjson_inline document::operator uint64_t() noexcept(false) { return get_uint64(); }
-
196simdjson_inline document::operator int64_t() noexcept(false) { return get_int64(); }
-
197simdjson_inline document::operator double() noexcept(false) { return get_double(); }
-
198simdjson_inline document::operator std::string_view() noexcept(false) simdjson_lifetime_bound { return get_string(false); }
-
199simdjson_inline document::operator raw_json_string() noexcept(false) simdjson_lifetime_bound { return get_raw_json_string(); }
-
200simdjson_inline document::operator bool() noexcept(false) { return get_bool(); }
-
201simdjson_inline document::operator value() noexcept(false) { return get_value(); }
+
195simdjson_inline document::operator uint64_t() noexcept(false) { return get_uint64(); }
+
196simdjson_inline document::operator int64_t() noexcept(false) { return get_int64(); }
+
197simdjson_inline document::operator double() noexcept(false) { return get_double(); }
+
198simdjson_inline document::operator std::string_view() noexcept(false) simdjson_lifetime_bound { return get_string(false); }
+
199simdjson_inline document::operator raw_json_string() noexcept(false) simdjson_lifetime_bound { return get_raw_json_string(); }
+
200simdjson_inline document::operator bool() noexcept(false) { return get_bool(); }
+
201simdjson_inline document::operator value() noexcept(false) { return get_value(); }
202
203#endif
- -
205 auto a = get_array();
- + +
205 auto a = get_array();
+
206 simdjson_result<size_t> answer = a.count_elements();
207 /* If there was an array, we are now left pointing at its first element. */
-
208 if(answer.error() == SUCCESS) { rewind(); }
-
209 return answer;
+
208 if(answer.error() == SUCCESS) { rewind(); }
+
209 return answer;
210}
- -
212 auto a = get_object();
-
213 simdjson_result<size_t> answer = a.count_fields();
+ +
212 auto a = get_object();
+
213 simdjson_result<size_t> answer = a.count_fields();
214 /* If there was an object, we are now left pointing at its first element. */
-
215 if(answer.error() == SUCCESS) { rewind(); }
-
216 return answer;
+
215 if(answer.error() == SUCCESS) { rewind(); }
+
216 return answer;
217}
-
218simdjson_inline simdjson_result<value> document::at(size_t index) & noexcept {
-
219 auto a = get_array();
-
220 return a.at(index);
+
218simdjson_inline simdjson_result<value> document::at(size_t index) & noexcept {
+
219 auto a = get_array();
+
220 return a.at(index);
221}
- -
223 return get_array().begin();
+ +
223 return get_array().begin();
224}
-
225simdjson_inline simdjson_result<array_iterator> document::end() & noexcept {
+
225simdjson_inline simdjson_result<array_iterator> document::end() & noexcept {
226 return {};
227}
228
-
229simdjson_inline simdjson_result<value> document::find_field(std::string_view key) & noexcept {
+
229simdjson_inline simdjson_result<value> document::find_field(std::string_view key) & noexcept {
230 return start_or_resume_object().find_field(key);
231}
-
232simdjson_inline simdjson_result<value> document::find_field(const char *key) & noexcept {
+
232simdjson_inline simdjson_result<value> document::find_field(const char *key) & noexcept {
233 return start_or_resume_object().find_field(key);
234}
-
235simdjson_inline simdjson_result<value> document::find_field_unordered(std::string_view key) & noexcept {
+
235simdjson_inline simdjson_result<value> document::find_field_unordered(std::string_view key) & noexcept {
236 return start_or_resume_object().find_field_unordered(key);
237}
-
238simdjson_inline simdjson_result<value> document::find_field_unordered(const char *key) & noexcept {
+
238simdjson_inline simdjson_result<value> document::find_field_unordered(const char *key) & noexcept {
239 return start_or_resume_object().find_field_unordered(key);
240}
241simdjson_inline simdjson_result<value> document::operator[](std::string_view key) & noexcept {
@@ -398,7 +398,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
246}
247
-
248simdjson_warn_unused simdjson_inline error_code document::consume() noexcept {
+
248simdjson_warn_unused simdjson_inline error_code document::consume() noexcept {
249 bool scalar = false;
250 auto error = is_scalar().get(scalar);
251 if(error) { return error; }
@@ -413,91 +413,91 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
260
- -
262 auto _iter = get_root_value_iterator();
-
263 const uint8_t * starting_point{_iter.peek_start()};
+ +
262 auto _iter = get_root_value_iterator();
+
263 const uint8_t * starting_point{_iter.peek_start()};
264 auto error = consume();
265 if(error) { return error; }
266 // After 'consume()', we could be left pointing just beyond the document, but that
267 // is ok because we are not going to dereference the final pointer position, we just
268 // use it to compute the length in bytes.
-
269 const uint8_t * final_point{iter.unsafe_pointer()};
-
270 return std::string_view(reinterpret_cast<const char*>(starting_point), size_t(final_point - starting_point));
+
269 const uint8_t * final_point{iter.unsafe_pointer()};
+
270 return std::string_view(reinterpret_cast<const char*>(starting_point), size_t(final_point - starting_point));
271}
272
- +
273simdjson_inline simdjson_result<json_type> document::type() noexcept {
274 return get_root_value_iterator().type();
275}
276
- +
277simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
278 // For more speed, we could do:
279 // return iter.is_single_token();
- -
281 auto error = type().get(this_type);
+
280 json_type this_type;
+
281 auto error = type().get(this_type);
282 if(error) { return error; }
- +
283 return ! ((this_type == json_type::array) || (this_type == json_type::object));
284}
285
- - -
288 auto error = type().get(this_type);
+
286simdjson_inline simdjson_result<bool> document::is_string() noexcept {
+
287 json_type this_type;
+
288 auto error = type().get(this_type);
289 if(error) { return error; }
-
290 return (this_type == json_type::string);
+
290 return (this_type == json_type::string);
291}
292
-
293simdjson_inline bool document::is_negative() noexcept {
+
293simdjson_inline bool document::is_negative() noexcept {
294 return get_root_value_iterator().is_root_negative();
295}
296
- +
297simdjson_inline simdjson_result<bool> document::is_integer() noexcept {
298 return get_root_value_iterator().is_root_integer(true);
299}
300
- +
302 return get_root_value_iterator().get_root_number_type(true);
303}
304
- +
306 return get_root_value_iterator().get_root_number(true);
307}
308
309
- -
311 auto _iter = get_root_value_iterator();
-
312 return std::string_view(reinterpret_cast<const char*>(_iter.peek_start()), _iter.peek_root_length());
+ +
311 auto _iter = get_root_value_iterator();
+
312 return std::string_view(reinterpret_cast<const char*>(_iter.peek_start()), _iter.peek_root_length());
313}
314
-
315simdjson_inline simdjson_result<value> document::at_pointer(std::string_view json_pointer) noexcept {
+
315simdjson_inline simdjson_result<value> document::at_pointer(std::string_view json_pointer) noexcept {
316 rewind(); // Rewind the document each time at_pointer is called
-
317 if (json_pointer.empty()) {
+
317 if (json_pointer.empty()) {
318 return this->get_value();
319 }
-
320 json_type t;
-
321 SIMDJSON_TRY(type().get(t));
-
322 switch (t)
+
320 json_type t;
+
321 SIMDJSON_TRY(type().get(t));
+
322 switch (t)
323 {
324 case json_type::array:
-
325 return (*this).get_array().at_pointer(json_pointer);
+
325 return (*this).get_array().at_pointer(json_pointer);
-
327 return (*this).get_object().at_pointer(json_pointer);
+
327 return (*this).get_object().at_pointer(json_pointer);
328 default:
330 }
@@ -505,18 +505,18 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
332
-
333simdjson_inline simdjson_result<value> document::at_path(std::string_view json_path) noexcept {
+
333simdjson_inline simdjson_result<value> document::at_path(std::string_view json_path) noexcept {
334 rewind(); // Rewind the document each time at_pointer is called
-
335 if (json_path.empty()) {
+
335 if (json_path.empty()) {
336 return this->get_value();
337 }
-
338 json_type t;
-
339 SIMDJSON_TRY(type().get(t));
-
340 switch (t) {
+
338 json_type t;
+
339 SIMDJSON_TRY(type().get(t));
+
340 switch (t) {
341 case json_type::array:
-
342 return (*this).get_array().at_path(json_path);
+
342 return (*this).get_array().at_path(json_path);
-
344 return (*this).get_object().at_path(json_path);
+
344 return (*this).get_object().at_path(json_path);
345 default:
347 }
@@ -527,12 +527,12 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
351
352#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
353
-
354template<constevalutil::fixed_string... FieldNames, typename T>
+
354template<constevalutil::fixed_string... FieldNames, typename T>
355 requires(std::is_class_v<T> && (sizeof...(FieldNames) > 0))
-
356simdjson_warn_unused simdjson_inline error_code document::extract_into(T& out) & noexcept {
+
356simdjson_warn_unused simdjson_inline error_code document::extract_into(T& out) & noexcept {
357 // Helper to check if a field name matches any of the requested fields
-
358 auto should_extract = [](std::string_view field_name) constexpr -> bool {
-
359 return ((FieldNames.view() == field_name) || ...);
+
358 auto should_extract = [](std::string_view field_name) constexpr -> bool {
+
359 return ((FieldNames.view() == field_name) || ...);
360 };
361
362 // Iterate through all members of T using reflection
@@ -869,8 +869,8 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
693simdjson_inline void document_reference::rewind() noexcept { doc->rewind(); }
694simdjson_inline simdjson_result<array> document_reference::get_array() & noexcept { return doc->get_array(); }
695simdjson_inline simdjson_result<object> document_reference::get_object() & noexcept { return doc->get_object(); }
-
710simdjson_inline simdjson_result<uint64_t> document_reference::get_uint64() noexcept { return doc->get_root_value_iterator().get_root_uint64(false); }
-
711simdjson_inline simdjson_result<uint64_t> document_reference::get_uint64_in_string() noexcept { return doc->get_root_value_iterator().get_root_uint64_in_string(false); }
+
710simdjson_inline simdjson_result<uint64_t> document_reference::get_uint64() noexcept { return doc->get_root_value_iterator().get_root_uint64(false); }
+
711simdjson_inline simdjson_result<uint64_t> document_reference::get_uint64_in_string() noexcept { return doc->get_root_value_iterator().get_root_uint64_in_string(false); }
712simdjson_inline simdjson_result<int64_t> document_reference::get_int64() noexcept { return doc->get_root_value_iterator().get_root_int64(false); }
713simdjson_inline simdjson_result<int64_t> document_reference::get_int64_in_string() noexcept { return doc->get_root_value_iterator().get_root_int64_in_string(false); }
714simdjson_inline simdjson_result<double> document_reference::get_double() noexcept { return doc->get_root_value_iterator().get_root_double(false); }
@@ -905,11 +905,11 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
743simdjson_inline document_reference::operator bool() noexcept(false) { return get_bool(); }
744simdjson_inline document_reference::operator value() noexcept(false) { return value(*doc); }
745#endif
-
746simdjson_inline simdjson_result<size_t> document_reference::count_elements() & noexcept { return doc->count_elements(); }
+
746simdjson_inline simdjson_result<size_t> document_reference::count_elements() & noexcept { return doc->count_elements(); }
747simdjson_inline simdjson_result<size_t> document_reference::count_fields() & noexcept { return doc->count_fields(); }
-
748simdjson_inline simdjson_result<value> document_reference::at(size_t index) & noexcept { return doc->at(index); }
-
749simdjson_inline simdjson_result<array_iterator> document_reference::begin() & noexcept { return doc->begin(); }
-
750simdjson_inline simdjson_result<array_iterator> document_reference::end() & noexcept { return doc->end(); }
+
748simdjson_inline simdjson_result<value> document_reference::at(size_t index) & noexcept { return doc->at(index); }
+
749simdjson_inline simdjson_result<array_iterator> document_reference::begin() & noexcept { return doc->begin(); }
+
750simdjson_inline simdjson_result<array_iterator> document_reference::end() & noexcept { return doc->end(); }
751simdjson_inline simdjson_result<value> document_reference::find_field(std::string_view key) & noexcept { return doc->find_field(key); }
752simdjson_inline simdjson_result<value> document_reference::find_field(const char *key) & noexcept { return doc->find_field(key); }
753simdjson_inline simdjson_result<value> document_reference::operator[](std::string_view key) & noexcept { return (*doc)[key]; }
@@ -926,8 +926,8 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
764simdjson_inline simdjson_result<number_type> document_reference::get_number_type() noexcept { return doc->get_root_value_iterator().get_root_number_type(false); }
765simdjson_inline simdjson_result<number> document_reference::get_number() noexcept { return doc->get_root_value_iterator().get_root_number(false); }
766simdjson_inline simdjson_result<std::string_view> document_reference::raw_json_token() noexcept { return doc->raw_json_token(); }
-
767simdjson_inline simdjson_result<value> document_reference::at_pointer(std::string_view json_pointer) noexcept { return doc->at_pointer(json_pointer); }
-
768simdjson_inline simdjson_result<value> document_reference::at_path(std::string_view json_path) noexcept { return doc->at_path(json_path); }
+
767simdjson_inline simdjson_result<value> document_reference::at_pointer(std::string_view json_pointer) noexcept { return doc->at_pointer(json_pointer); }
+
768simdjson_inline simdjson_result<value> document_reference::at_path(std::string_view json_path) noexcept { return doc->at_path(json_path); }
769simdjson_inline simdjson_result<std::string_view> document_reference::raw_json() noexcept { return doc->raw_json();}
770simdjson_inline document_reference::operator document&() const noexcept { return *doc; }
771#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
@@ -1198,13 +1198,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
1034
1035#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_INL_H
-
simdjson_inline simdjson_result< value > at(size_t index) noexcept
Get the value at the given index.
Definition array-inl.h:173
-
simdjson_result< value > at_pointer(std::string_view json_pointer) noexcept
Get the value associated with the given JSON pointer.
Definition array-inl.h:131
-
simdjson_inline simdjson_result< array_iterator > begin() noexcept
Begin array iteration.
Definition array-inl.h:79
-
simdjson_inline simdjson_result< size_t > count_elements() &noexcept
This method scans the array and counts the number of elements.
Definition array-inl.h:107
-
simdjson_result< value > at_path(std::string_view json_path) noexcept
Get the value associated with the given JSONPath expression.
Definition array-inl.h:167
static simdjson_inline simdjson_result< array > start_root(value_iterator &iter) noexcept
Begin array iteration from the root.
Definition array-inl.h:68
-
simdjson_inline simdjson_result< array_iterator > end() noexcept
Sentinel representing the end of the array.
Definition array-inl.h:85
simdjson_inline simdjson_result< uint64_t > get_uint64() noexcept
The document_reference instances are used primarily/solely for streams of JSON documents.
simdjson_inline simdjson_result< value > at(size_t index) &noexcept
Get the value at the given index in the array.
simdjson_warn_unused simdjson_inline error_code consume() noexcept
Consumes the document.
@@ -1263,6 +1257,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document-inl_8h_sou
@ SUCCESS
No error.
Definition error.h:20
@ INVALID_JSON_POINTER
Invalid JSON pointer syntax.
Definition error.h:42
The result of a simdjson operation that could fail.
Definition error.h:278
+
simdjson_inline error_code error() const noexcept
The error.
Definition error-inl.h:168
simdjson_warn_unused simdjson_inline error_code get(T &value) &&noexcept
Move the value to the provided variable.
Definition error-inl.h:163
diff --git a/generic_2ondemand_2document_8h_source.html b/generic_2ondemand_2document_8h_source.html index 405b6445b..8619f76c3 100644 --- a/generic_2ondemand_2document_8h_source.html +++ b/generic_2ondemand_2document_8h_source.html @@ -29,7 +29,7 @@ @@ -120,171 +120,171 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document_8h_source.
23class document {
24public:
-
30 simdjson_inline document() noexcept = default;
-
31 simdjson_inline document(const document &other) noexcept = delete; // pass your documents by reference, not by copy
-
32 simdjson_inline document(document &&other) noexcept = default;
-
33 simdjson_inline document &operator=(const document &other) noexcept = delete;
-
34 simdjson_inline document &operator=(document &&other) noexcept = default;
+
30 simdjson_inline document() noexcept = default;
+
31 simdjson_inline document(const document &other) noexcept = delete; // pass your documents by reference, not by copy
+
32 simdjson_inline document(document &&other) noexcept = default;
+
33 simdjson_inline document &operator=(const document &other) noexcept = delete;
+
34 simdjson_inline document &operator=(document &&other) noexcept = default;
35
-
42 simdjson_inline simdjson_result<array> get_array() & noexcept;
-
49 simdjson_inline simdjson_result<object> get_object() & noexcept;
- - -
70 simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
- -
84 simdjson_inline simdjson_result<double> get_double() noexcept;
+
42 simdjson_inline simdjson_result<array> get_array() & noexcept;
+
49 simdjson_inline simdjson_result<object> get_object() & noexcept;
+
56 simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
+
63 simdjson_inline simdjson_result<uint64_t> get_uint64_in_string() noexcept;
+
70 simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
+
77 simdjson_inline simdjson_result<int64_t> get_int64_in_string() noexcept;
+
84 simdjson_inline simdjson_result<double> get_double() noexcept;
85
-
92 simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
- - -
120 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
- - -
148 simdjson_inline simdjson_result<bool> get_bool() noexcept;
-
161 simdjson_inline simdjson_result<value> get_value() noexcept;
+
92 simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
+
105 simdjson_inline simdjson_result<std::string_view> get_string(bool allow_replacement = false) noexcept;
+
119 template <typename string_type>
+
120 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+
132 simdjson_inline simdjson_result<std::string_view> get_wobbly_string() noexcept;
+
141 simdjson_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
+
148 simdjson_inline simdjson_result<bool> get_bool() noexcept;
+
161 simdjson_inline simdjson_result<value> get_value() noexcept;
162
-
171 simdjson_inline simdjson_result<bool> is_null() noexcept;
+
171 simdjson_inline simdjson_result<bool> is_null() noexcept;
172
- +
184 template <typename T>
-
185 simdjson_inline simdjson_result<T> get() &
+
185 simdjson_inline simdjson_result<T> get() &
186#if SIMDJSON_SUPPORTS_CONCEPTS
- +
187 noexcept(custom_deserializable<T, document> ? nothrow_custom_deserializable<T, document> : true)
188#else
189 noexcept
-
190#endif
+
190#endif
191 {
192 static_assert(std::is_default_constructible<T>::value, "Cannot initialize the specified type.");
-
193 T out{};
-
194 SIMDJSON_TRY(get<T>(out));
-
195 return out;
+
193 T out{};
+
194 SIMDJSON_TRY(get<T>(out));
+
195 return out;
196 }
207 template<typename T>
-
208 simdjson_inline simdjson_result<T> get() &&
+
208 simdjson_inline simdjson_result<T> get() &&
209#if SIMDJSON_SUPPORTS_CONCEPTS
- +
210 noexcept(custom_deserializable<T, document> ? nothrow_custom_deserializable<T, document> : true)
211#else
212 noexcept
-
213#endif
+
213#endif
214 {
215 static_assert(!std::is_same<T, array>::value && !std::is_same<T, object>::value, "You should never hold either an ondemand::array or ondemand::object without a corresponding ondemand::document being alive; that would be Undefined Behaviour.");
-
216 return static_cast<document&>(*this).get<T>();
+
216 return static_cast<document&>(*this).get<T>();
217 }
218
230 template<typename T>
-
231 simdjson_warn_unused simdjson_inline error_code get(T &out) &
+
231 simdjson_warn_unused simdjson_inline error_code get(T &out) &
232#if SIMDJSON_SUPPORTS_CONCEPTS
- +
233 noexcept(custom_deserializable<T, document> ? nothrow_custom_deserializable<T, document> : true)
234#else
235 noexcept
-
236#endif
+
236#endif
237 {
238#if SIMDJSON_SUPPORTS_CONCEPTS
- -
240 return deserialize(*this, out);
+
239 if constexpr (custom_deserializable<T, document>) {
+
240 return deserialize(*this, out);
241 } else {
-
242 static_assert(!sizeof(T), "The get<T> method with type T is not implemented by the simdjson library. "
+
242 static_assert(!sizeof(T), "The get<T> method with type T is not implemented by the simdjson library. "
243 "And you do not seem to have added support for it. Indeed, we have that "
244 "simdjson::custom_deserializable<T> is false and the type T is not a default type "
245 "such as ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
246 "int64_t, double, or bool.");
-
247 static_cast<void>(out); // to get rid of unused errors
+
247 static_cast<void>(out); // to get rid of unused errors
248 return UNINITIALIZED;
249 }
250#else // SIMDJSON_SUPPORTS_CONCEPTS
251 // Unless the simdjson library or the user provides an inline implementation, calling this method should
252 // immediately fail.
-
253 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
+
253 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
254 "The supported types are ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
255 "int64_t, double, and bool. We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
256 " get_object(), get_array(), get_raw_json_string(), or get_string() instead of the get template."
257 " You may also add support for custom types, see our documentation.");
-
258 static_cast<void>(out); // to get rid of unused errors
+
258 static_cast<void>(out); // to get rid of unused errors
259 return UNINITIALIZED;
260#endif // SIMDJSON_SUPPORTS_CONCEPTS
261 }
262
-
264 template<typename T> simdjson_deprecated simdjson_inline error_code get(T &out) && noexcept;
+
264 template<typename T> simdjson_deprecated simdjson_inline error_code get(T &out) && noexcept;
265
266#if SIMDJSON_EXCEPTIONS
276 template <class T>
-
277 explicit simdjson_inline operator T() & noexcept(false);
+
277 explicit simdjson_inline operator T() & noexcept(false);
278 template <class T>
-
279 explicit simdjson_deprecated simdjson_inline operator T() && noexcept(false);
+
279 explicit simdjson_deprecated simdjson_inline operator T() && noexcept(false);
280
287 simdjson_inline operator array() & noexcept(false);
294 simdjson_inline operator object() & noexcept(false);
-
301 simdjson_inline operator uint64_t() noexcept(false);
-
308 simdjson_inline operator int64_t() noexcept(false);
-
315 simdjson_inline operator double() noexcept(false);
-
325 simdjson_inline operator std::string_view() noexcept(false) simdjson_lifetime_bound;
-
334 simdjson_inline operator raw_json_string() noexcept(false) simdjson_lifetime_bound;
-
341 simdjson_inline operator bool() noexcept(false);
-
353 simdjson_inline operator value() noexcept(false);
+
301 simdjson_inline operator uint64_t() noexcept(false);
+
308 simdjson_inline operator int64_t() noexcept(false);
+
315 simdjson_inline operator double() noexcept(false);
+
325 simdjson_inline operator std::string_view() noexcept(false) simdjson_lifetime_bound;
+
334 simdjson_inline operator raw_json_string() noexcept(false) simdjson_lifetime_bound;
+
341 simdjson_inline operator bool() noexcept(false);
+
353 simdjson_inline operator value() noexcept(false);
354#endif
-
367 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
-
382 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
-
390 simdjson_inline simdjson_result<value> at(size_t index) & noexcept;
-
396 simdjson_inline simdjson_result<array_iterator> begin() & noexcept;
-
402 simdjson_inline simdjson_result<array_iterator> end() & noexcept;
+
367 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
+
382 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
+
390 simdjson_inline simdjson_result<value> at(size_t index) & noexcept;
+
396 simdjson_inline simdjson_result<array_iterator> begin() & noexcept;
+
402 simdjson_inline simdjson_result<array_iterator> end() & noexcept;
403
-
436 simdjson_inline simdjson_result<value> find_field(std::string_view key) & noexcept;
-
438 simdjson_inline simdjson_result<value> find_field(const char *key) & noexcept;
+
436 simdjson_inline simdjson_result<value> find_field(std::string_view key) & noexcept;
+
438 simdjson_inline simdjson_result<value> find_field(const char *key) & noexcept;
439
-
470 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) & noexcept;
-
472 simdjson_inline simdjson_result<value> find_field_unordered(const char *key) & noexcept;
-
474 simdjson_inline simdjson_result<value> operator[](std::string_view key) & noexcept;
-
476 simdjson_inline simdjson_result<value> operator[](const char *key) & noexcept;
-
477 simdjson_result<value> operator[](int) & noexcept = delete;
+
470 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) & noexcept;
+
472 simdjson_inline simdjson_result<value> find_field_unordered(const char *key) & noexcept;
+
474 simdjson_inline simdjson_result<value> operator[](std::string_view key) & noexcept;
+
476 simdjson_inline simdjson_result<value> operator[](const char *key) & noexcept;
+
477 simdjson_result<value> operator[](int) & noexcept = delete;
478
-
506 simdjson_inline simdjson_result<json_type> type() noexcept;
+
506 simdjson_inline simdjson_result<json_type> type() noexcept;
507
-
515 simdjson_inline simdjson_result<bool> is_scalar() noexcept;
+
515 simdjson_inline simdjson_result<bool> is_scalar() noexcept;
516
-
523 simdjson_inline simdjson_result<bool> is_string() noexcept;
+
523 simdjson_inline simdjson_result<bool> is_string() noexcept;
524
-
530 simdjson_inline bool is_negative() noexcept;
-
540 simdjson_inline simdjson_result<bool> is_integer() noexcept;
-
565 simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
+
530 simdjson_inline bool is_negative() noexcept;
+
540 simdjson_inline simdjson_result<bool> is_integer() noexcept;
+
565 simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
566
-
593 simdjson_warn_unused simdjson_inline simdjson_result<number> get_number() noexcept;
+
593 simdjson_warn_unused simdjson_inline simdjson_result<number> get_number() noexcept;
594
-
617 simdjson_inline simdjson_result<std::string_view> raw_json_token() noexcept;
+
617 simdjson_inline simdjson_result<std::string_view> raw_json_token() noexcept;
618
-
624 inline void rewind() noexcept;
-
628 inline std::string to_debug_string() noexcept;
-
633 inline bool is_alive() noexcept;
+
624 inline void rewind() noexcept;
+
628 inline std::string to_debug_string() noexcept;
+
633 inline bool is_alive() noexcept;
634
- +
638 inline simdjson_result<const char *> current_location() const noexcept;
639
- +
645 inline bool at_end() const noexcept;
646
-
656 simdjson_inline int32_t current_depth() const noexcept;
+
656 simdjson_inline int32_t current_depth() const noexcept;
657
- +
697 simdjson_inline simdjson_result<value> at_pointer(std::string_view json_pointer) noexcept;
698
- +
720 simdjson_inline simdjson_result<value> at_path(std::string_view json_path) noexcept;
721
-
727 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
+
727 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
728
729#if SIMDJSON_STATIC_REFLECTION
-
754 template<constevalutil::fixed_string... FieldNames, typename T>
+
754 template<constevalutil::fixed_string... FieldNames, typename T>
755 requires(std::is_class_v<T> && (sizeof...(FieldNames) > 0))
-
756 simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+
756 simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
757#endif // SIMDJSON_STATIC_REFLECTION
758protected:
-
762 simdjson_warn_unused simdjson_inline error_code consume() noexcept;
+
762 simdjson_warn_unused simdjson_inline error_code consume() noexcept;
763
-
764 simdjson_inline document(ondemand::json_iterator &&iter) noexcept;
-
765 simdjson_inline const uint8_t *text(uint32_t idx) const noexcept;
+
764 simdjson_inline document(ondemand::json_iterator &&iter) noexcept;
+
765 simdjson_inline const uint8_t *text(uint32_t idx) const noexcept;
766
-
767 simdjson_inline value_iterator resume_value_iterator() noexcept;
-
768 simdjson_inline value_iterator get_root_value_iterator() noexcept;
-
769 simdjson_inline simdjson_result<object> start_or_resume_object() noexcept;
-
770 static simdjson_inline document start(ondemand::json_iterator &&iter) noexcept;
+
767 simdjson_inline value_iterator resume_value_iterator() noexcept;
+
768 simdjson_inline value_iterator get_root_value_iterator() noexcept;
+
769 simdjson_inline simdjson_result<object> start_or_resume_object() noexcept;
+
770 static simdjson_inline document start(ondemand::json_iterator &&iter) noexcept;
771
772 //
773 // Fields
@@ -309,136 +309,136 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document_8h_source.
799public:
800 simdjson_inline document_reference() noexcept;
-
801 simdjson_inline document_reference(document &d) noexcept;
-
802 simdjson_inline document_reference(const document_reference &other) noexcept = default;
-
803 simdjson_inline document_reference& operator=(const document_reference &other) noexcept = default;
+
801 simdjson_inline document_reference(document &d) noexcept;
+
802 simdjson_inline document_reference(const document_reference &other) noexcept = default;
+
803 simdjson_inline document_reference& operator=(const document_reference &other) noexcept = default;
804 simdjson_inline void rewind() noexcept;
-
805 simdjson_inline simdjson_result<array> get_array() & noexcept;
-
806 simdjson_inline simdjson_result<object> get_object() & noexcept;
-
807 simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
-
808 simdjson_inline simdjson_result<uint64_t> get_uint64_in_string() noexcept;
-
809 simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
-
810 simdjson_inline simdjson_result<int64_t> get_int64_in_string() noexcept;
-
811 simdjson_inline simdjson_result<double> get_double() noexcept;
-
812 simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
-
813 simdjson_inline simdjson_result<std::string_view> get_string(bool allow_replacement = false) noexcept;
+
805 simdjson_inline simdjson_result<array> get_array() & noexcept;
+
806 simdjson_inline simdjson_result<object> get_object() & noexcept;
+
807 simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
+
808 simdjson_inline simdjson_result<uint64_t> get_uint64_in_string() noexcept;
+
809 simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
+
810 simdjson_inline simdjson_result<int64_t> get_int64_in_string() noexcept;
+
811 simdjson_inline simdjson_result<double> get_double() noexcept;
+
812 simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
+
813 simdjson_inline simdjson_result<std::string_view> get_string(bool allow_replacement = false) noexcept;
814 template <typename string_type>
-
815 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
-
816 simdjson_inline simdjson_result<std::string_view> get_wobbly_string() noexcept;
-
817 simdjson_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
-
818 simdjson_inline simdjson_result<bool> get_bool() noexcept;
-
819 simdjson_inline simdjson_result<value> get_value() noexcept;
+
815 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
+
816 simdjson_inline simdjson_result<std::string_view> get_wobbly_string() noexcept;
+
817 simdjson_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
+
818 simdjson_inline simdjson_result<bool> get_bool() noexcept;
+
819 simdjson_inline simdjson_result<value> get_value() noexcept;
820
-
821 simdjson_inline simdjson_result<bool> is_null() noexcept;
+
821 simdjson_inline simdjson_result<bool> is_null() noexcept;
822 template <typename T>
-
823 simdjson_inline simdjson_result<T> get() &
+
823 simdjson_inline simdjson_result<T> get() &
824#if SIMDJSON_SUPPORTS_CONCEPTS
- +
825 noexcept(custom_deserializable<T, document> ? nothrow_custom_deserializable<T, document> : true)
826#else
827 noexcept
-
828#endif
+
828#endif
829 {
830 static_assert(std::is_default_constructible<T>::value, "Cannot initialize the specified type.");
-
831 T out{};
-
832 SIMDJSON_TRY(get<T>(out));
-
833 return out;
+
831 T out{};
+
832 SIMDJSON_TRY(get<T>(out));
+
833 return out;
834 }
835 template<typename T>
-
836 simdjson_inline simdjson_result<T> get() &&
+
836 simdjson_inline simdjson_result<T> get() &&
837#if SIMDJSON_SUPPORTS_CONCEPTS
- +
838 noexcept(custom_deserializable<T, document> ? nothrow_custom_deserializable<T, document> : true)
839#else
840 noexcept
-
841#endif
+
841#endif
842 {
843 static_assert(!std::is_same<T, array>::value && !std::is_same<T, object>::value, "You should never hold either an ondemand::array or ondemand::object without a corresponding ondemand::document_reference being alive; that would be Undefined Behaviour.");
-
844 return static_cast<document&>(*this).get<T>();
+
844 return static_cast<document&>(*this).get<T>();
845 }
846
858 template<typename T>
-
859 simdjson_warn_unused simdjson_inline error_code get(T &out) &
+
859 simdjson_warn_unused simdjson_inline error_code get(T &out) &
860#if SIMDJSON_SUPPORTS_CONCEPTS
- +
861 noexcept(custom_deserializable<T, document> ? nothrow_custom_deserializable<T, document_reference> : true)
862#else
863 noexcept
-
864#endif
+
864#endif
865 {
866#if SIMDJSON_SUPPORTS_CONCEPTS
- -
868 return deserialize(*this, out);
+
867 if constexpr (custom_deserializable<T, document_reference>) {
+
868 return deserialize(*this, out);
869 } else {
-
870 static_assert(!sizeof(T), "The get<T> method with type T is not implemented by the simdjson library. "
+
870 static_assert(!sizeof(T), "The get<T> method with type T is not implemented by the simdjson library. "
871 "And you do not seem to have added support for it. Indeed, we have that "
872 "simdjson::custom_deserializable<T> is false and the type T is not a default type "
873 "such as ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
874 "int64_t, double, or bool.");
-
875 static_cast<void>(out); // to get rid of unused errors
+
875 static_cast<void>(out); // to get rid of unused errors
876 return UNINITIALIZED;
877 }
878#else // SIMDJSON_SUPPORTS_CONCEPTS
879 // Unless the simdjson library or the user provides an inline implementation, calling this method should
880 // immediately fail.
-
881 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
+
881 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
882 "The supported types are ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
883 "int64_t, double, and bool. We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
884 " get_object(), get_array(), get_raw_json_string(), or get_string() instead of the get template."
885 " You may also add support for custom types, see our documentation.");
-
886 static_cast<void>(out); // to get rid of unused errors
+
886 static_cast<void>(out); // to get rid of unused errors
887 return UNINITIALIZED;
888#endif // SIMDJSON_SUPPORTS_CONCEPTS
889 }
890
-
892 template<typename T> simdjson_inline error_code get(T &out) && noexcept;
-
893 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
+
892 template<typename T> simdjson_inline error_code get(T &out) && noexcept;
+
893 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
894#if SIMDJSON_STATIC_REFLECTION
-
895 template<constevalutil::fixed_string... FieldNames, typename T>
+
895 template<constevalutil::fixed_string... FieldNames, typename T>
896 requires(std::is_class_v<T> && (sizeof...(FieldNames) > 0))
-
897 simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
+
897 simdjson_warn_unused simdjson_inline error_code extract_into(T& out) & noexcept;
898#endif // SIMDJSON_STATIC_REFLECTION
899 simdjson_inline operator document&() const noexcept;
900#if SIMDJSON_EXCEPTIONS
901 template <class T>
-
902 explicit simdjson_inline operator T() noexcept(false);
-
903 simdjson_inline operator array() & noexcept(false);
-
904 simdjson_inline operator object() & noexcept(false);
-
905 simdjson_inline operator uint64_t() noexcept(false);
-
906 simdjson_inline operator int64_t() noexcept(false);
-
907 simdjson_inline operator double() noexcept(false);
-
908 simdjson_inline operator std::string_view() noexcept(false);
-
909 simdjson_inline operator raw_json_string() noexcept(false);
-
910 simdjson_inline operator bool() noexcept(false);
-
911 simdjson_inline operator value() noexcept(false);
+
902 explicit simdjson_inline operator T() noexcept(false);
+
903 simdjson_inline operator array() & noexcept(false);
+
904 simdjson_inline operator object() & noexcept(false);
+
905 simdjson_inline operator uint64_t() noexcept(false);
+
906 simdjson_inline operator int64_t() noexcept(false);
+
907 simdjson_inline operator double() noexcept(false);
+
908 simdjson_inline operator std::string_view() noexcept(false);
+
909 simdjson_inline operator raw_json_string() noexcept(false);
+
910 simdjson_inline operator bool() noexcept(false);
+
911 simdjson_inline operator value() noexcept(false);
912#endif
-
913 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
-
914 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
-
915 simdjson_inline simdjson_result<value> at(size_t index) & noexcept;
-
916 simdjson_inline simdjson_result<array_iterator> begin() & noexcept;
-
917 simdjson_inline simdjson_result<array_iterator> end() & noexcept;
-
918 simdjson_inline simdjson_result<value> find_field(std::string_view key) & noexcept;
-
919 simdjson_inline simdjson_result<value> find_field(const char *key) & noexcept;
-
920 simdjson_inline simdjson_result<value> operator[](std::string_view key) & noexcept;
-
921 simdjson_inline simdjson_result<value> operator[](const char *key) & noexcept;
-
922 simdjson_result<value> operator[](int) & noexcept = delete;
-
923 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) & noexcept;
-
924 simdjson_inline simdjson_result<value> find_field_unordered(const char *key) & noexcept;
+
913 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
+
914 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
+
915 simdjson_inline simdjson_result<value> at(size_t index) & noexcept;
+
916 simdjson_inline simdjson_result<array_iterator> begin() & noexcept;
+
917 simdjson_inline simdjson_result<array_iterator> end() & noexcept;
+
918 simdjson_inline simdjson_result<value> find_field(std::string_view key) & noexcept;
+
919 simdjson_inline simdjson_result<value> find_field(const char *key) & noexcept;
+
920 simdjson_inline simdjson_result<value> operator[](std::string_view key) & noexcept;
+
921 simdjson_inline simdjson_result<value> operator[](const char *key) & noexcept;
+
922 simdjson_result<value> operator[](int) & noexcept = delete;
+
923 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) & noexcept;
+
924 simdjson_inline simdjson_result<value> find_field_unordered(const char *key) & noexcept;
925
-
926 simdjson_inline simdjson_result<json_type> type() noexcept;
-
927 simdjson_inline simdjson_result<bool> is_scalar() noexcept;
-
928 simdjson_inline simdjson_result<bool> is_string() noexcept;
+
926 simdjson_inline simdjson_result<json_type> type() noexcept;
+
927 simdjson_inline simdjson_result<bool> is_scalar() noexcept;
+
928 simdjson_inline simdjson_result<bool> is_string() noexcept;
929
-
930 simdjson_inline simdjson_result<const char *> current_location() noexcept;
-
931 simdjson_inline int32_t current_depth() const noexcept;
-
932 simdjson_inline bool is_negative() noexcept;
-
933 simdjson_inline simdjson_result<bool> is_integer() noexcept;
-
934 simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
-
935 simdjson_inline simdjson_result<number> get_number() noexcept;
-
936 simdjson_inline simdjson_result<std::string_view> raw_json_token() noexcept;
-
937 simdjson_inline simdjson_result<value> at_pointer(std::string_view json_pointer) noexcept;
-
938 simdjson_inline simdjson_result<value> at_path(std::string_view json_path) noexcept;
+
930 simdjson_inline simdjson_result<const char *> current_location() noexcept;
+
931 simdjson_inline int32_t current_depth() const noexcept;
+
932 simdjson_inline bool is_negative() noexcept;
+
933 simdjson_inline simdjson_result<bool> is_integer() noexcept;
+
934 simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
+
935 simdjson_inline simdjson_result<number> get_number() noexcept;
+
936 simdjson_inline simdjson_result<std::string_view> raw_json_token() noexcept;
+
937 simdjson_inline simdjson_result<value> at_pointer(std::string_view json_pointer) noexcept;
+
938 simdjson_inline simdjson_result<value> at_path(std::string_view json_path) noexcept;
939
-
940private:
+
940private:
941 document *doc{nullptr};
942};
diff --git a/generic_2ondemand_2document__stream-inl_8h_source.html b/generic_2ondemand_2document__stream-inl_8h_source.html index 8a82b3ae2..a063f67ad 100644 --- a/generic_2ondemand_2document__stream-inl_8h_source.html +++ b/generic_2ondemand_2document__stream-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -126,41 +126,41 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
22 // for the end of the processing.
23 // This function will wait until either the thread has done
24 // the processing or, else, the destructor has been called.
-
25 std::unique_lock<std::mutex> lock(locking_mutex);
-
26 cond_var.wait(lock, [this]{return has_work == false;});
+
25 std::unique_lock<std::mutex> lock(locking_mutex);
+
26 cond_var.wait(lock, [this]{return has_work == false;});
27}
28
29inline stage1_worker::~stage1_worker() {
30 // The thread may never outlive the stage1_worker instance
31 // and will always be stopped/joined before the stage1_worker
32 // instance is gone.
- +
33 stop_thread();
34}
35
36inline void stage1_worker::start_thread() {
-
37 std::unique_lock<std::mutex> lock(locking_mutex);
-
38 if(thread.joinable()) {
+
37 std::unique_lock<std::mutex> lock(locking_mutex);
+
38 if(thread.joinable()) {
39 return; // This should never happen but we never want to create more than one thread.
40 }
-
41 thread = std::thread([this]{
+
41 thread = std::thread([this]{
42 while(true) {
-
43 std::unique_lock<std::mutex> thread_lock(locking_mutex);
+
43 std::unique_lock<std::mutex> thread_lock(locking_mutex);
44 // We wait for either "run" or "stop_thread" to be called.
-
45 cond_var.wait(thread_lock, [this]{return has_work || !can_work;});
+
45 cond_var.wait(thread_lock, [this]{return has_work || !can_work;});
46 // If, for some reason, the stop_thread() method was called (i.e., the
47 // destructor of stage1_worker is called, then we want to immediately destroy
48 // the thread (and not do any more processing).
-
49 if(!can_work) {
+
49 if(!can_work) {
50 break;
51 }
-
52 this->owner->stage1_thread_error = this->owner->run_stage1(*this->stage1_thread_parser,
-
53 this->_next_batch_start);
-
54 this->has_work = false;
+
52 this->owner->stage1_thread_error = this->owner->run_stage1(*this->stage1_thread_parser,
+
53 this->_next_batch_start);
+
54 this->has_work = false;
55 // The condition variable call should be moved after thread_lock.unlock() for performance
56 // reasons but thread sanitizers may report it as a data race if we do.
57 // See https://stackoverflow.com/questions/35775501/c-should-condition-variable-be-notified-under-lock
-
58 cond_var.notify_one(); // will notify "finish"
-
59 thread_lock.unlock();
+
58 cond_var.notify_one(); // will notify "finish"
+
59 thread_lock.unlock();
60 }
61 }
62 );
@@ -168,28 +168,28 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
64
65
66inline void stage1_worker::stop_thread() {
-
67 std::unique_lock<std::mutex> lock(locking_mutex);
+
67 std::unique_lock<std::mutex> lock(locking_mutex);
68 // We have to make sure that all locks can be released.
-
69 can_work = false;
-
70 has_work = false;
-
71 cond_var.notify_all();
-
72 lock.unlock();
-
73 if(thread.joinable()) {
-
74 thread.join();
+
69 can_work = false;
+
70 has_work = false;
+
71 cond_var.notify_all();
+
72 lock.unlock();
+
73 if(thread.joinable()) {
+
74 thread.join();
75 }
76}
77
78inline void stage1_worker::run(document_stream * ds, parser * stage1, size_t next_batch_start) {
-
79 std::unique_lock<std::mutex> lock(locking_mutex);
-
80 owner = ds;
-
81 _next_batch_start = next_batch_start;
-
82 stage1_thread_parser = stage1;
-
83 has_work = true;
+
79 std::unique_lock<std::mutex> lock(locking_mutex);
+
80 owner = ds;
+
81 _next_batch_start = next_batch_start;
+
82 stage1_thread_parser = stage1;
+
83 has_work = true;
84 // The condition variable call should be moved after thread_lock.unlock() for performance
85 // reasons but thread sanitizers may report it as a data race if we do.
86 // See https://stackoverflow.com/questions/35775501/c-should-condition-variable-be-notified-under-lock
-
87 cond_var.notify_one(); // will notify the thread lock that we have work
-
88 lock.unlock();
+
87 cond_var.notify_one(); // will notify the thread lock that we have work
+
88 lock.unlock();
89}
90
91#endif // SIMDJSON_THREADS_ENABLED
@@ -219,7 +219,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
115}
116
- +
117simdjson_inline document_stream::document_stream() noexcept
118 : parser{nullptr},
119 buf{nullptr},
120 len{0},
@@ -236,25 +236,25 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
130simdjson_inline document_stream::~document_stream() noexcept
131{
132 #ifdef SIMDJSON_THREADS_ENABLED
-
133 worker.reset();
+
133 worker.reset();
134 #endif
135}
136
- +
137inline size_t document_stream::size_in_bytes() const noexcept {
138 return len;
139}
140
- +
141inline size_t document_stream::truncated_bytes() const noexcept {
142 if(error == CAPACITY) { return len - batch_start; }
143 return parser->implementation->structural_indexes[parser->implementation->n_structural_indexes] - parser->implementation->structural_indexes[parser->implementation->n_structural_indexes + 1];
144}
145
- +
146simdjson_inline document_stream::iterator::iterator() noexcept
147 : stream{nullptr}, finished{true} {
148}
@@ -264,13 +264,13 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
152}
153
157
- +
159 // If there is an error, then we want the iterator
160 // to be finished, no matter what. (E.g., we do not
161 // keep generating documents with errors, or go beyond
@@ -299,24 +299,24 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
184
- +
185simdjson_inline bool document_stream::iterator::at_end() const noexcept {
186 return finished;
187}
188
189
-
190simdjson_inline bool document_stream::iterator::operator!=(const document_stream::iterator &other) const noexcept {
-
191 return finished != other.finished;
+
190simdjson_inline bool document_stream::iterator::operator!=(const document_stream::iterator &other) const noexcept {
+
191 return finished != other.finished;
192}
193
-
194simdjson_inline bool document_stream::iterator::operator==(const document_stream::iterator &other) const noexcept {
-
195 return finished == other.finished;
+
194simdjson_inline bool document_stream::iterator::operator==(const document_stream::iterator &other) const noexcept {
+
195 return finished == other.finished;
196}
197
- +
199 start();
200 // If there are no documents, we're finished.
201 return iterator(this, error == EMPTY);
@@ -324,12 +324,12 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
203
- +
205 return iterator(this, true);
206}
207
-
208inline void document_stream::start() noexcept {
+
208inline void document_stream::start() noexcept {
209 if (error) { return; }
210 error = parser->allocate(batch_size);
211 if (error) { return; }
@@ -472,24 +472,24 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
386}
387
- +
389 return stream->error;
390}
391
392#ifdef SIMDJSON_THREADS_ENABLED
393
-
394inline void document_stream::load_from_stage1_thread() noexcept {
-
395 worker->finish();
+
394inline void document_stream::load_from_stage1_thread() noexcept {
+
395 worker->finish();
396 // Swap to the parser that was loaded up in the thread. Make sure the parser has
397 // enough memory to swap to, as well.
-
398 std::swap(stage1_thread_parser,*parser);
-
399 error = stage1_thread_error;
+
398 std::swap(stage1_thread_parser,*parser);
+
399 error = stage1_thread_error;
400 if (error) { return; }
401
402 // If there's anything left, start the stage 1 thread!
403 if (next_batch_start() < len) {
- +
404 start_stage1_thread();
405 }
406}
407
@@ -530,9 +530,6 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
442}
443
444#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_INL_H
- -
simdjson_inline array() noexcept=default
Create a new invalid array.
-
simdjson_result< bool > reset() &noexcept
Reset the iterator so that we are pointing back at the beginning of the array.
Definition array-inl.h:127
iterator & operator++() noexcept
Advance to the next document (prefix).
simdjson_inline bool operator!=(const iterator &other) const noexcept
Check if we're at the end yet.
@@ -554,6 +551,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream-in
@ MEMALLOC
Error allocating memory, most likely out of memory.
Definition error.h:22
@ SUCCESS
No error.
Definition error.h:20
@ UNINITIALIZED
unknown error, or uninitialized document
Definition error.h:32
+
The result of a simdjson operation that could fail.
Definition error.h:278
diff --git a/generic_2ondemand_2document__stream_8h_source.html b/generic_2ondemand_2document__stream_8h_source.html index 0e4a45271..1820a08ad 100644 --- a/generic_2ondemand_2document__stream_8h_source.html +++ b/generic_2ondemand_2document__stream_8h_source.html @@ -29,7 +29,7 @@ @@ -124,28 +124,28 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream_8h
20
21#ifdef SIMDJSON_THREADS_ENABLED
23struct stage1_worker {
- - - - - -
33 void start_thread();
-
38 void run(document_stream * ds, parser * stage1, size_t next_batch_start);
-
40 void finish();
+
24 stage1_worker() noexcept = default;
+
25 stage1_worker(const stage1_worker&) = delete;
+
26 stage1_worker(stage1_worker&&) = delete;
+
27 stage1_worker operator=(const stage1_worker&) = delete;
+
28 ~stage1_worker();
+
33 void start_thread();
+
38 void run(document_stream * ds, parser * stage1, size_t next_batch_start);
+
40 void finish();
41
- +
42private:
43
-
49 void stop_thread();
+
49 void stop_thread();
50
-
51 std::thread thread{};
-
53 ondemand::parser * stage1_thread_parser{};
-
54 size_t _next_batch_start{};
-
55 document_stream * owner{};
-
60 bool has_work{false};
-
61 bool can_work{true};
+
51 std::thread thread{};
+
53 ondemand::parser * stage1_thread_parser{};
+
54 size_t _next_batch_start{};
+
55 document_stream * owner{};
+
60 bool has_work{false};
+
61 bool can_work{true};
62
-
66 std::mutex locking_mutex{};
-
67 std::condition_variable cond_var{};
+
66 std::mutex locking_mutex{};
+
67 std::condition_variable cond_var{};
68
69 friend class document_stream;
70};
@@ -155,30 +155,30 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream_8h
80public:
89 simdjson_inline document_stream() noexcept;
-
91 simdjson_inline document_stream(document_stream &&other) noexcept = default;
-
93 simdjson_inline document_stream &operator=(document_stream &&other) noexcept = default;
+
91 simdjson_inline document_stream(document_stream &&other) noexcept = default;
+
93 simdjson_inline document_stream &operator=(document_stream &&other) noexcept = default;
94
-
95 simdjson_inline ~document_stream() noexcept;
+
95 simdjson_inline ~document_stream() noexcept;
96
- +
100 inline size_t size_in_bytes() const noexcept;
101
- +
120 inline size_t truncated_bytes() const noexcept;
121
- +
122 class iterator {
123 public:
- - -
126 using pointer = void;
+ + +
126 using pointer = void;
127 using difference_type = std::ptrdiff_t;
128 using iterator_category = std::input_iterator_tag;
129
133 simdjson_inline iterator() noexcept;
-
134 simdjson_inline iterator(const iterator &other) noexcept = default;
-
138 simdjson_inline reference operator*() noexcept;
+
134 simdjson_inline iterator(const iterator &other) noexcept = default;
+
138 simdjson_inline reference operator*() noexcept;
142 inline iterator& operator++() noexcept;
-
147 simdjson_inline bool operator!=(const iterator &other) const noexcept;
-
148 simdjson_inline bool operator==(const iterator &other) const noexcept;
+
147 simdjson_inline bool operator!=(const iterator &other) const noexcept;
+
148 simdjson_inline bool operator==(const iterator &other) const noexcept;
164 simdjson_inline size_t current_index() const noexcept;
165
185 simdjson_inline std::string_view source() const noexcept;
@@ -188,7 +188,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream_8h
195 inline bool at_end() const noexcept;
196
197 private:
-
198 simdjson_inline iterator(document_stream *s, bool finished) noexcept;
+
198 simdjson_inline iterator(document_stream *s, bool finished) noexcept;
200 document_stream* stream;
202 bool finished;
203
@@ -199,35 +199,35 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream_8h
209
-
213 simdjson_inline iterator begin() noexcept;
-
217 simdjson_inline iterator end() noexcept;
+
213 simdjson_inline iterator begin() noexcept;
+
217 simdjson_inline iterator end() noexcept;
218
-
219private:
+
219private:
220
-
221 document_stream &operator=(const document_stream &) = delete; // Disallow copying
-
222 document_stream(const document_stream &other) = delete; // Disallow copying
+
221 document_stream &operator=(const document_stream &) = delete; // Disallow copying
+
222 document_stream(const document_stream &other) = delete; // Disallow copying
223
233 simdjson_inline document_stream(
234 ondemand::parser &parser,
-
235 const uint8_t *buf,
+
235 const uint8_t *buf,
236 size_t len,
237 size_t batch_size,
238 bool allow_comma_separated
-
239 ) noexcept;
+
239 ) noexcept;
240
-
245 inline void start() noexcept;
+
245 inline void start() noexcept;
246
-
270 inline void next() noexcept;
+
270 inline void next() noexcept;
271
-
273 inline void next_document() noexcept;
+
273 inline void next_document() noexcept;
274
-
276 inline size_t next_batch_start() const noexcept;
+
276 inline size_t next_batch_start() const noexcept;
277
-
279 inline error_code run_stage1(ondemand::parser &p, size_t batch_start) noexcept;
+
279 inline error_code run_stage1(ondemand::parser &p, size_t batch_start) noexcept;
280
281 // Fields
282 ondemand::parser *parser;
-
283 const uint8_t *buf;
+
283 const uint8_t *buf;
284 size_t len;
285 size_t batch_size;
286 bool allow_comma_separated;
@@ -276,8 +276,6 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream_8h
343} // namespace simdjson
344
345#endif // SIMDJSON_GENERIC_ONDEMAND_DOCUMENT_STREAM_H
- -
simdjson_inline array() noexcept=default
Create a new invalid array.
simdjson_inline iterator end() noexcept
The end of the stream, for iterator comparison purposes.
@@ -293,6 +291,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2document__stream_8h
The top level simdjson namespace, containing everything the library provides.
Definition base.h:8
error_code
All possible errors returned by simdjson.
Definition error.h:19
@ UNINITIALIZED
unknown error, or uninitialized document
Definition error.h:32
+
The result of a simdjson operation that could fail.
Definition error.h:278
diff --git a/generic_2ondemand_2object-inl_8h_source.html b/generic_2ondemand_2object-inl_8h_source.html index e984fcee5..ba531d231 100644 --- a/generic_2ondemand_2object-inl_8h_source.html +++ b/generic_2ondemand_2object-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -124,7 +124,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
20namespace ondemand {
21
-
22simdjson_inline simdjson_result<value> object::find_field_unordered(const std::string_view key) & noexcept {
+
22simdjson_inline simdjson_result<value> object::find_field_unordered(const std::string_view key) & noexcept {
23 bool has_value;
24 SIMDJSON_TRY( iter.find_field_unordered_raw(key).get(has_value) );
25 if (!has_value) {
@@ -134,7 +134,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
29 return value(iter.child());
30}
-
31simdjson_inline simdjson_result<value> object::find_field_unordered(const std::string_view key) && noexcept {
+
31simdjson_inline simdjson_result<value> object::find_field_unordered(const std::string_view key) && noexcept {
32 bool has_value;
33 SIMDJSON_TRY( iter.find_field_unordered_raw(key).get(has_value) );
34 if (!has_value) {
@@ -150,7 +150,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
44 return std::forward<object>(*this).find_field_unordered(key);
45}
-
46simdjson_inline simdjson_result<value> object::find_field(const std::string_view key) & noexcept {
+
46simdjson_inline simdjson_result<value> object::find_field(const std::string_view key) & noexcept {
47 bool has_value;
48 SIMDJSON_TRY( iter.find_field_raw(key).get(has_value) );
49 if (!has_value) {
@@ -160,7 +160,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
53 return value(iter.child());
54}
-
55simdjson_inline simdjson_result<value> object::find_field(const std::string_view key) && noexcept {
+
55simdjson_inline simdjson_result<value> object::find_field(const std::string_view key) && noexcept {
56 bool has_value;
57 SIMDJSON_TRY( iter.find_field_raw(key).get(has_value) );
58 if (!has_value) {
@@ -179,31 +179,31 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
71 return object(iter);
72}
-
73simdjson_warn_unused simdjson_inline error_code object::consume() noexcept {
+
73simdjson_warn_unused simdjson_inline error_code object::consume() noexcept {
74 if(iter.is_at_key()) {
-
88 simdjson_unused raw_json_string actual_key;
-
89 auto error = iter.field_key().get(actual_key);
+
88 simdjson_unused raw_json_string actual_key;
+
89 auto error = iter.field_key().get(actual_key);
90 if (error) { iter.abandon(); return error; };
91 // Let us move to the value while we are at it.
92 if ((error = iter.field_value())) { iter.abandon(); return error; }
93 }
-
94 auto error_skip = iter.json_iter().skip_child(iter.depth()-1);
-
95 if(error_skip) { iter.abandon(); }
-
96 return error_skip;
+
94 auto error_skip = iter.json_iter().skip_child(iter.depth()-1);
+
95 if(error_skip) { iter.abandon(); }
+
96 return error_skip;
97}
98
- -
100 const uint8_t * starting_point{iter.peek_start()};
+ +
100 const uint8_t * starting_point{iter.peek_start()};
101 auto error = consume();
102 if(error) { return error; }
-
103 const uint8_t * final_point{iter._json_iter->peek()};
-
104 return std::string_view(reinterpret_cast<const char*>(starting_point), size_t(final_point - starting_point));
+
103 const uint8_t * final_point{iter._json_iter->peek()};
+
104 return std::string_view(reinterpret_cast<const char*>(starting_point), size_t(final_point - starting_point));
105}
106
-
107simdjson_inline simdjson_result<object> object::started(value_iterator &iter) noexcept {
+
107simdjson_inline simdjson_result<object> object::started(value_iterator &iter) noexcept {
108 SIMDJSON_TRY( iter.started_object().error() );
109 return object(iter);
110}
@@ -228,64 +228,64 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
129}
130
-
131inline simdjson_result<value> object::at_pointer(std::string_view json_pointer) noexcept {
-
132 if (json_pointer[0] != '/') { return INVALID_JSON_POINTER; }
-
133 json_pointer = json_pointer.substr(1);
-
134 size_t slash = json_pointer.find('/');
-
135 std::string_view key = json_pointer.substr(0, slash);
+
131inline simdjson_result<value> object::at_pointer(std::string_view json_pointer) noexcept {
+
132 if (json_pointer[0] != '/') { return INVALID_JSON_POINTER; }
+
133 json_pointer = json_pointer.substr(1);
+
134 size_t slash = json_pointer.find('/');
+
135 std::string_view key = json_pointer.substr(0, slash);
136 // Grab the child with the given key
- +
138
139 // If there is an escape character in the key, unescape it and then get the child.
-
140 size_t escape = key.find('~');
-
141 if (escape != std::string_view::npos) {
+
140 size_t escape = key.find('~');
+
141 if (escape != std::string_view::npos) {
142 // Unescape the key
-
143 std::string unescaped(key);
+
143 std::string unescaped(key);
144 do {
-
145 switch (unescaped[escape+1]) {
+
145 switch (unescaped[escape+1]) {
146 case '0':
-
147 unescaped.replace(escape, 2, "~");
+
147 unescaped.replace(escape, 2, "~");
148 break;
149 case '1':
-
150 unescaped.replace(escape, 2, "/");
+
150 unescaped.replace(escape, 2, "/");
151 break;
152 default:
153 return INVALID_JSON_POINTER; // "Unexpected ~ escape character in JSON pointer");
154 }
-
155 escape = unescaped.find('~', escape+1);
-
156 } while (escape != std::string::npos);
-
157 child = find_field(unescaped); // Take note find_field does not unescape keys when matching
+
155 escape = unescaped.find('~', escape+1);
+
156 } while (escape != std::string::npos);
+
157 child = find_field(unescaped); // Take note find_field does not unescape keys when matching
158 } else {
159 child = find_field(key);
160 }
-
161 if(child.error()) {
+
161 if(child.error()) {
162 return child; // we do not continue if there was an error
163 }
164 // If there is a /, we have to recurse and look up more of the path
-
165 if (slash != std::string_view::npos) {
-
166 child = child.at_pointer(json_pointer.substr(slash));
+
165 if (slash != std::string_view::npos) {
+
166 child = child.at_pointer(json_pointer.substr(slash));
167 }
168 return child;
169}
170
-
171inline simdjson_result<value> object::at_path(std::string_view json_path) noexcept {
- -
173 if (json_pointer == "-1") {
+
171inline simdjson_result<value> object::at_path(std::string_view json_path) noexcept {
+
172 auto json_pointer = json_path_to_pointer_conversion(json_path);
+
173 if (json_pointer == "-1") {
175 }
-
176 return at_pointer(json_pointer);
+
176 return at_pointer(json_pointer);
177}
178
-
179simdjson_inline simdjson_result<size_t> object::count_fields() & noexcept {
+
179simdjson_inline simdjson_result<size_t> object::count_fields() & noexcept {
180 size_t count{0};
181 // Important: we do not consume any of the values.
-
182 for(simdjson_unused auto v : *this) { count++; }
+
182 for(simdjson_unused auto v : *this) { count++; }
183 // The above loop will always succeed, but we want to report errors.
-
184 if(iter.error()) { return iter.error(); }
+
184 if(iter.error()) { return iter.error(); }
185 // We need to move back at the start because we expect users to iterate through
186 // the object after counting the number of elements.
187 iter.reset_object();
@@ -294,28 +294,28 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
190
-
191simdjson_inline simdjson_result<bool> object::is_empty() & noexcept {
-
192 bool is_not_empty;
-
193 auto error = iter.reset_object().get(is_not_empty);
+
191simdjson_inline simdjson_result<bool> object::is_empty() & noexcept {
+
192 bool is_not_empty;
+
193 auto error = iter.reset_object().get(is_not_empty);
194 if(error) { return error; }
-
195 return !is_not_empty;
+
195 return !is_not_empty;
196}
197
-
198simdjson_inline simdjson_result<bool> object::reset() & noexcept {
+
198simdjson_inline simdjson_result<bool> object::reset() & noexcept {
199 return iter.reset_object();
200}
201
202#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
203
-
204template<constevalutil::fixed_string... FieldNames, typename T>
+
204template<constevalutil::fixed_string... FieldNames, typename T>
205 requires(std::is_class_v<T> && (sizeof...(FieldNames) > 0))
-
206simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & noexcept {
+
206simdjson_warn_unused simdjson_inline error_code object::extract_into(T& out) & noexcept {
207 // Helper to check if a field name matches any of the requested fields
-
208 auto should_extract = [](std::string_view field_name) constexpr -> bool {
-
209 return ((FieldNames.view() == field_name) || ...);
+
208 auto should_extract = [](std::string_view field_name) constexpr -> bool {
+
209 return ((FieldNames.view() == field_name) || ...);
210 };
211
212 // Iterate through all members of T using reflection
@@ -434,8 +434,6 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
325} // namespace simdjson
326
327#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_INL_H
- -
simdjson_result< value > at_pointer(std::string_view json_pointer) noexcept
Get the value associated with the given JSON pointer.
Definition array-inl.h:131
A forward-only JSON object field iterator.
Definition object.h:20
simdjson_inline object() noexcept=default
Create a new invalid object.
simdjson_inline simdjson_result< value > find_field_unordered(std::string_view key) &noexcept
Look up a field by name on an object, without regard to key order.
Definition object-inl.h:22
@@ -457,6 +455,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object-inl_8h_sourc
@ INVALID_JSON_POINTER
Invalid JSON pointer syntax.
Definition error.h:42
std::string json_path_to_pointer_conversion(std::string_view json_path)
Converts JSONPath to JSON Pointer.
The result of a simdjson operation that could fail.
Definition error.h:278
+
simdjson_inline error_code error() const noexcept
The error.
Definition error-inl.h:168
diff --git a/generic_2ondemand_2object_8h_source.html b/generic_2ondemand_2object_8h_source.html index a52c9d8fb..95ca8a0b0 100644 --- a/generic_2ondemand_2object_8h_source.html +++ b/generic_2ondemand_2object_8h_source.html @@ -29,7 +29,7 @@ @@ -121,40 +121,40 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object_8h_source.ht
20class object {
21public:
-
27 simdjson_inline object() noexcept = default;
+
27 simdjson_inline object() noexcept = default;
28
-
29 simdjson_inline simdjson_result<object_iterator> begin() noexcept;
-
30 simdjson_inline simdjson_result<object_iterator> end() noexcept;
-
67 simdjson_inline simdjson_result<value> find_field(std::string_view key) & noexcept;
-
69 simdjson_inline simdjson_result<value> find_field(std::string_view key) && noexcept;
+
29 simdjson_inline simdjson_result<object_iterator> begin() noexcept;
+
30 simdjson_inline simdjson_result<object_iterator> end() noexcept;
+
67 simdjson_inline simdjson_result<value> find_field(std::string_view key) & noexcept;
+
69 simdjson_inline simdjson_result<value> find_field(std::string_view key) && noexcept;
70
-
106 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) & noexcept;
-
108 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) && noexcept;
-
110 simdjson_inline simdjson_result<value> operator[](std::string_view key) & noexcept;
-
112 simdjson_inline simdjson_result<value> operator[](std::string_view key) && noexcept;
+
106 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) & noexcept;
+
108 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) && noexcept;
+
110 simdjson_inline simdjson_result<value> operator[](std::string_view key) & noexcept;
+
112 simdjson_inline simdjson_result<value> operator[](std::string_view key) && noexcept;
113
- +
148 inline simdjson_result<value> at_pointer(std::string_view json_pointer) noexcept;
149
- +
161 inline simdjson_result<value> at_path(std::string_view json_path) noexcept;
162
- - -
200 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
-
206 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
+
172 inline simdjson_result<bool> reset() & noexcept;
+
182 inline simdjson_result<bool> is_empty() & noexcept;
+
200 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
+
206 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
207
208#if SIMDJSON_SUPPORTS_CONCEPTS
216 template <typename T>
-
217 simdjson_warn_unused simdjson_inline error_code get(T &out)
- - -
220 return deserialize(*this, out);
+
217 simdjson_warn_unused simdjson_inline error_code get(T &out)
+
218 noexcept(custom_deserializable<T, object> ? nothrow_custom_deserializable<T, object> : true) {
+
219 static_assert(custom_deserializable<T, object>);
+
220 return deserialize(*this, out);
221 }
228 template <typename T>
-
229 simdjson_inline simdjson_result<T> get()
- +
229 simdjson_inline simdjson_result<T> get()
+
230 noexcept(custom_deserializable<T, value> ? nothrow_custom_deserializable<T, value> : true)
231 {
232 static_assert(std::is_default_constructible<T>::value, "The specified type is not default constructible.");
-
233 T out{};
+
233 T out{};
234 SIMDJSON_TRY(get<T>(out));
235 return out;
236 }
@@ -249,7 +249,6 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2object_8h_source.ht
349} // namespace simdjson
350
351#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_H
-
A forward-only JSON object field iterator.
Definition object.h:20
simdjson_inline object() noexcept=default
Create a new invalid object.
diff --git a/generic_2ondemand_2parser-inl_8h_source.html b/generic_2ondemand_2parser-inl_8h_source.html index 85f9f1d3f..87085faf0 100644 --- a/generic_2ondemand_2parser-inl_8h_source.html +++ b/generic_2ondemand_2parser-inl_8h_source.html @@ -29,7 +29,7 @@
@@ -122,60 +122,60 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
18namespace ondemand {
19
-
20simdjson_inline parser::parser(size_t max_capacity) noexcept
+
20simdjson_inline parser::parser(size_t max_capacity) noexcept
21 : _max_capacity{max_capacity} {
22}
23
-
24simdjson_warn_unused simdjson_inline error_code parser::allocate(size_t new_capacity, size_t new_max_depth) noexcept {
-
25 if (new_capacity > max_capacity()) { return CAPACITY; }
-
26 if (string_buf && new_capacity == capacity() && new_max_depth == max_depth()) { return SUCCESS; }
+
24simdjson_warn_unused simdjson_inline error_code parser::allocate(size_t new_capacity, size_t new_max_depth) noexcept {
+
25 if (new_capacity > max_capacity()) { return CAPACITY; }
+
26 if (string_buf && new_capacity == capacity() && new_max_depth == max_depth()) { return SUCCESS; }
27
28 // string_capacity copied from document::allocate
29 _capacity = 0;
-
30 size_t string_capacity = SIMDJSON_ROUNDUP_N(5 * new_capacity / 3 + SIMDJSON_PADDING, 64);
-
31 string_buf.reset(new (std::nothrow) uint8_t[string_capacity]);
+
30 size_t string_capacity = SIMDJSON_ROUNDUP_N(5 * new_capacity / 3 + SIMDJSON_PADDING, 64);
+
31 string_buf.reset(new (std::nothrow) uint8_t[string_capacity]);
32#if SIMDJSON_DEVELOPMENT_CHECKS
- +
33 start_positions.reset(new (std::nothrow) token_position[new_max_depth]);
34#endif
35 if (implementation) {
-
36 SIMDJSON_TRY( implementation->set_capacity(new_capacity) );
-
37 SIMDJSON_TRY( implementation->set_max_depth(new_max_depth) );
+
36 SIMDJSON_TRY( implementation->set_capacity(new_capacity) );
+
37 SIMDJSON_TRY( implementation->set_max_depth(new_max_depth) );
38 } else {
-
39 SIMDJSON_TRY( simdjson::get_active_implementation()->create_dom_parser_implementation(new_capacity, new_max_depth, implementation) );
+
39 SIMDJSON_TRY( simdjson::get_active_implementation()->create_dom_parser_implementation(new_capacity, new_max_depth, implementation) );
40 }
-
41 _capacity = new_capacity;
-
42 _max_depth = new_max_depth;
+
41 _capacity = new_capacity;
+
42 _max_depth = new_max_depth;
43 return SUCCESS;
44}
45#if SIMDJSON_DEVELOPMENT_CHECKS
-
46simdjson_inline simdjson_warn_unused bool parser::string_buffer_overflow(const uint8_t *string_buf_loc) const noexcept {
+
46simdjson_inline simdjson_warn_unused bool parser::string_buffer_overflow(const uint8_t *string_buf_loc) const noexcept {
47 return (string_buf_loc < string_buf.get()) || (size_t(string_buf_loc - string_buf.get()) >= capacity());
48}
49#endif
50
-
51simdjson_warn_unused simdjson_inline simdjson_result<document> parser::iterate(padded_string_view json) & noexcept {
-
52 if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
+
51simdjson_warn_unused simdjson_inline simdjson_result<document> parser::iterate(padded_string_view json) & noexcept {
+
52 if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
53
-
54 json.remove_utf8_bom();
+
54 json.remove_utf8_bom();
55
56 // Allocate if needed
-
57 if (capacity() < json.length() || !string_buf) {
-
58 SIMDJSON_TRY( allocate(json.length(), max_depth()) );
+
57 if (capacity() < json.length() || !string_buf) {
+
58 SIMDJSON_TRY( allocate(json.length(), max_depth()) );
59 }
60
61 // Run stage 1.
-
62 SIMDJSON_TRY( implementation->stage1(reinterpret_cast<const uint8_t *>(json.data()), json.length(), stage1_mode::regular) );
-
63 return document::start({ reinterpret_cast<const uint8_t *>(json.data()), this });
+
62 SIMDJSON_TRY( implementation->stage1(reinterpret_cast<const uint8_t *>(json.data()), json.length(), stage1_mode::regular) );
+
63 return document::start({ reinterpret_cast<const uint8_t *>(json.data()), this });
64}
65
66#ifdef SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
-
67simdjson_warn_unused simdjson_inline simdjson_result<document> parser::iterate_allow_incomplete_json(padded_string_view json) & noexcept {
-
68 if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
+
67simdjson_warn_unused simdjson_inline simdjson_result<document> parser::iterate_allow_incomplete_json(padded_string_view json) & noexcept {
+
68 if (!json.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
69
70 json.remove_utf8_bom();
71
@@ -244,7 +244,7 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
134}
135
-
136inline simdjson_result<document_stream> parser::iterate_many(const uint8_t *buf, size_t len, size_t batch_size, bool allow_comma_separated) noexcept {
+
136inline simdjson_result<document_stream> parser::iterate_many(const uint8_t *buf, size_t len, size_t batch_size, bool allow_comma_separated) noexcept {
137 // Warning: no check is done on the buffer padding. We trust the user.
138 if(batch_size < MINIMAL_BATCH_SIZE) { batch_size = MINIMAL_BATCH_SIZE; }
139 if((len >= 3) && (std::memcmp(buf, "\xEF\xBB\xBF", 3) == 0)) {
@@ -256,9 +256,9 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
145}
146
-
147inline simdjson_result<document_stream> parser::iterate_many(const char *buf, size_t len, size_t batch_size, bool allow_comma_separated) noexcept {
+
147inline simdjson_result<document_stream> parser::iterate_many(const char *buf, size_t len, size_t batch_size, bool allow_comma_separated) noexcept {
148 // Warning: no check is done on the buffer padding. We trust the user.
-
149 return iterate_many(reinterpret_cast<const uint8_t *>(buf), len, batch_size, allow_comma_separated);
+
149 return iterate_many(reinterpret_cast<const uint8_t *>(buf), len, batch_size, allow_comma_separated);
150}
151inline simdjson_result<document_stream> parser::iterate_many(padded_string_view s, size_t batch_size, bool allow_comma_separated) noexcept {
152 if (!s.has_sufficient_padding()) { return INSUFFICIENT_PADDING; }
@@ -274,17 +274,17 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
162 return iterate_many(pad(s), batch_size, allow_comma_separated);
163}
-
164simdjson_pure simdjson_inline size_t parser::capacity() const noexcept {
+
164simdjson_pure simdjson_inline size_t parser::capacity() const noexcept {
165 return _capacity;
166}
-
167simdjson_pure simdjson_inline size_t parser::max_capacity() const noexcept {
+
167simdjson_pure simdjson_inline size_t parser::max_capacity() const noexcept {
168 return _max_capacity;
169}
-
170simdjson_pure simdjson_inline size_t parser::max_depth() const noexcept {
+
170simdjson_pure simdjson_inline size_t parser::max_depth() const noexcept {
171 return _max_depth;
172}
@@ -298,22 +298,22 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
180}
181
-
182simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> parser::unescape(raw_json_string in, uint8_t *&dst, bool allow_replacement) const noexcept {
-
183 uint8_t *end = implementation->parse_string(in.buf, dst, allow_replacement);
+
182simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> parser::unescape(raw_json_string in, uint8_t *&dst, bool allow_replacement) const noexcept {
+
183 uint8_t *end = implementation->parse_string(in.buf, dst, allow_replacement);
184 if (!end) { return STRING_ERROR; }
-
185 std::string_view result(reinterpret_cast<const char *>(dst), end-dst);
-
186 dst = end;
-
187 return result;
+
185 std::string_view result(reinterpret_cast<const char *>(dst), end-dst);
+
186 dst = end;
+
187 return result;
188}
189
-
190simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> parser::unescape_wobbly(raw_json_string in, uint8_t *&dst) const noexcept {
-
191 uint8_t *end = implementation->parse_wobbly_string(in.buf, dst);
+
190simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> parser::unescape_wobbly(raw_json_string in, uint8_t *&dst) const noexcept {
+
191 uint8_t *end = implementation->parse_wobbly_string(in.buf, dst);
192 if (!end) { return STRING_ERROR; }
-
193 std::string_view result(reinterpret_cast<const char *>(dst), end-dst);
-
194 dst = end;
-
195 return result;
+
193 std::string_view result(reinterpret_cast<const char *>(dst), end-dst);
+
194 dst = end;
+
195 return result;
196}
197
@@ -324,9 +324,9 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
201
202simdjson_inline bool release_parser() {
-
203 auto &parser_instance = parser::get_threadlocal_parser_if_exists();
-
204 if (parser_instance) {
- +
203 auto &parser_instance = parser::get_threadlocal_parser_if_exists();
+
204 if (parser_instance) {
+
205 parser_instance.reset();
206 return true;
207 }
208 return false;
@@ -361,8 +361,6 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser-inl_8h_sourc
237} // namespace simdjson
238
239#endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_INL_H
- -
simdjson_result< bool > reset() &noexcept
Reset the iterator so that we are pointing back at the beginning of the array.
Definition array-inl.h:127
simdjson_warn_unused simdjson_result< document > iterate(padded_string_view json) &noexcept
Start iterating an on-demand JSON document.
Definition parser-inl.h:51
simdjson_pure simdjson_inline size_t max_capacity() const noexcept
The maximum capacity of this parser (the largest document it is allowed to process).
Definition parser-inl.h:167
diff --git a/generic_2ondemand_2parser_8h_source.html b/generic_2ondemand_2parser_8h_source.html index 66cafe87b..15e118546 100644 --- a/generic_2ondemand_2parser_8h_source.html +++ b/generic_2ondemand_2parser_8h_source.html @@ -29,7 +29,7 @@ @@ -125,55 +125,55 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser_8h_source.ht
38public:
44 inline explicit parser(size_t max_capacity = SIMDJSON_MAXSIZE_BYTES) noexcept;
45
-
46 inline parser(parser &&other) noexcept = default;
-
47 simdjson_inline parser(const parser &other) = delete;
-
48 simdjson_inline parser &operator=(const parser &other) = delete;
-
49 simdjson_inline parser &operator=(parser &&other) noexcept = default;
+
46 inline parser(parser &&other) noexcept = default;
+
47 simdjson_inline parser(const parser &other) = delete;
+
48 simdjson_inline parser &operator=(const parser &other) = delete;
+
49 simdjson_inline parser &operator=(parser &&other) noexcept = default;
50
- +
52 inline ~parser() noexcept = default;
53
- +
117 simdjson_warn_unused simdjson_result<document> iterate(padded_string_view json) & noexcept;
118#ifdef SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
- +
119 simdjson_warn_unused simdjson_result<document> iterate_allow_incomplete_json(padded_string_view json) & noexcept;
120#endif // SIMDJSON_EXPERIMENTAL_ALLOW_INCOMPLETE_JSON
122 simdjson_warn_unused simdjson_result<document> iterate(const char *json, size_t len, size_t capacity) & noexcept;
-
124 simdjson_warn_unused simdjson_result<document> iterate(const uint8_t *json, size_t len, size_t capacity) & noexcept;
-
126 simdjson_warn_unused simdjson_result<document> iterate(std::string_view json, size_t capacity) & noexcept;
-
128 simdjson_warn_unused simdjson_result<document> iterate(const std::string &json) & noexcept;
-
132 simdjson_warn_unused simdjson_result<document> iterate(std::string &json) & noexcept;
-
134 simdjson_warn_unused simdjson_result<document> iterate(const simdjson_result<padded_string> &json) & noexcept;
-
136 simdjson_warn_unused simdjson_result<document> iterate(const simdjson_result<padded_string_view> &json) & noexcept;
-
138 simdjson_warn_unused simdjson_result<document> iterate(padded_string &&json) & noexcept = delete;
+
124 simdjson_warn_unused simdjson_result<document> iterate(const uint8_t *json, size_t len, size_t capacity) & noexcept;
+
126 simdjson_warn_unused simdjson_result<document> iterate(std::string_view json, size_t capacity) & noexcept;
+
128 simdjson_warn_unused simdjson_result<document> iterate(const std::string &json) & noexcept;
+
132 simdjson_warn_unused simdjson_result<document> iterate(std::string &json) & noexcept;
+
134 simdjson_warn_unused simdjson_result<document> iterate(const simdjson_result<padded_string> &json) & noexcept;
+
136 simdjson_warn_unused simdjson_result<document> iterate(const simdjson_result<padded_string_view> &json) & noexcept;
+
138 simdjson_warn_unused simdjson_result<document> iterate(padded_string &&json) & noexcept = delete;
139
-
180 simdjson_warn_unused simdjson_result<json_iterator> iterate_raw(padded_string_view json) & noexcept;
+
180 simdjson_warn_unused simdjson_result<json_iterator> iterate_raw(padded_string_view json) & noexcept;
181
182
-
258 inline simdjson_result<document_stream> iterate_many(const uint8_t *buf, size_t len, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
-
260 inline simdjson_result<document_stream> iterate_many(padded_string_view json, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
-
262 inline simdjson_result<document_stream> iterate_many(const char *buf, size_t len, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
-
264 inline simdjson_result<document_stream> iterate_many(const std::string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
-
267 inline simdjson_result<document_stream> iterate_many(std::string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
-
269 inline simdjson_result<document_stream> iterate_many(const padded_string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
-
271 simdjson_result<document_stream> iterate_many(const char *buf, size_t batch_size = DEFAULT_BATCH_SIZE) noexcept = delete;
+
258 inline simdjson_result<document_stream> iterate_many(const uint8_t *buf, size_t len, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+
260 inline simdjson_result<document_stream> iterate_many(padded_string_view json, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+
262 inline simdjson_result<document_stream> iterate_many(const char *buf, size_t len, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+
264 inline simdjson_result<document_stream> iterate_many(const std::string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+
267 inline simdjson_result<document_stream> iterate_many(std::string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+
269 inline simdjson_result<document_stream> iterate_many(const padded_string &s, size_t batch_size = DEFAULT_BATCH_SIZE, bool allow_comma_separated = false) noexcept;
+
271 simdjson_result<document_stream> iterate_many(const char *buf, size_t batch_size = DEFAULT_BATCH_SIZE) noexcept = delete;
272
-
274 simdjson_pure simdjson_inline size_t capacity() const noexcept;
-
276 simdjson_pure simdjson_inline size_t max_capacity() const noexcept;
-
277 simdjson_inline void set_max_capacity(size_t max_capacity) noexcept;
-
284 simdjson_pure simdjson_inline size_t max_depth() const noexcept;
+
274 simdjson_pure simdjson_inline size_t capacity() const noexcept;
+
276 simdjson_pure simdjson_inline size_t max_capacity() const noexcept;
+
277 simdjson_inline void set_max_capacity(size_t max_capacity) noexcept;
+
284 simdjson_pure simdjson_inline size_t max_depth() const noexcept;
285
-
298 simdjson_warn_unused error_code allocate(size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept;
+
298 simdjson_warn_unused error_code allocate(size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept;
299
300 #ifdef SIMDJSON_THREADS_ENABLED
306 bool threaded{true};
307 #else
311 bool threaded{false};
312 #endif
- +
335 simdjson_inline simdjson_result<std::string_view> unescape(raw_json_string in, uint8_t *&dst, bool allow_replacement = false) const noexcept;
336
-
358 simdjson_inline simdjson_result<std::string_view> unescape_wobbly(raw_json_string in, uint8_t *&dst) const noexcept;
+
358 simdjson_inline simdjson_result<std::string_view> unescape_wobbly(raw_json_string in, uint8_t *&dst) const noexcept;
359
360#if SIMDJSON_DEVELOPMENT_CHECKS
-
368 bool string_buffer_overflow(const uint8_t *string_buf_loc) const noexcept;
+
368 bool string_buffer_overflow(const uint8_t *string_buf_loc) const noexcept;
369#endif
370
382 static simdjson_inline simdjson_warn_unused ondemand::parser& get_parser();
@@ -216,7 +216,6 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2parser_8h_source.ht
426} // namespace simdjson
427
428#endif // SIMDJSON_GENERIC_ONDEMAND_PARSER_H
- diff --git a/generic_2ondemand_2serialization-inl_8h_source.html b/generic_2ondemand_2serialization-inl_8h_source.html index 5f04fb5bd..e120a06bb 100644 --- a/generic_2ondemand_2serialization-inl_8h_source.html +++ b/generic_2ondemand_2serialization-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -223,11 +223,11 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2serialization-inl_8
117
118#if SIMDJSON_EXCEPTIONS
- -
120 std::string_view v;
-
121 auto error = simdjson::to_json_string(x).get(v);
+
119inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value x) {
+
120 std::string_view v;
+
121 auto error = simdjson::to_json_string(x).get(v);
122 if(error == simdjson::SUCCESS) {
-
123 return (out << v);
+
123 return (out << v);
124 } else {
125 throw simdjson::simdjson_error(error);
126 }
@@ -251,11 +251,11 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2serialization-inl_8
143
144#if SIMDJSON_EXCEPTIONS
- -
146 std::string_view v;
-
147 auto error = simdjson::to_json_string(value).get(v);
+
145inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array value) {
+
146 std::string_view v;
+
147 auto error = simdjson::to_json_string(value).get(v);
148 if(error == simdjson::SUCCESS) {
-
149 return (out << v);
+
149 return (out << v);
150 } else {
151 throw simdjson::simdjson_error(error);
152 }
@@ -279,11 +279,11 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2serialization-inl_8
169
170#if SIMDJSON_EXCEPTIONS
- -
172 std::string_view v;
-
173 auto error = simdjson::to_json_string(value).get(v);
+
171inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document& value) {
+
172 std::string_view v;
+
173 auto error = simdjson::to_json_string(value).get(v);
174 if(error == simdjson::SUCCESS) {
-
175 return (out << v);
+
175 return (out << v);
176 } else {
177 throw simdjson::simdjson_error(error);
178 }
@@ -320,11 +320,11 @@ $(document).ready(function(){initNavTree('generic_2ondemand_2serialization-inl_8
208
209#if SIMDJSON_EXCEPTIONS
- -
211 std::string_view v;
-
212 auto error = simdjson::to_json_string(value).get(v);
+
210inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object value) {
+
211 std::string_view v;
+
212 auto error = simdjson::to_json_string(value).get(v);
213 if(error == simdjson::SUCCESS) {
-
214 return (out << v);
+
214 return (out << v);
215 } else {
216 throw simdjson::simdjson_error(error);
217 }
diff --git a/generic_2ondemand_2serialization_8h_source.html b/generic_2ondemand_2serialization_8h_source.html index 7c8eb44e3..70bf9b02c 100644 --- a/generic_2ondemand_2serialization_8h_source.html +++ b/generic_2ondemand_2serialization_8h_source.html @@ -29,7 +29,7 @@
diff --git a/group__array.html b/group__array.html index 484ee3425..e288d68d7 100644 --- a/group__array.html +++ b/group__array.html @@ -29,7 +29,7 @@ @@ -105,25 +105,25 @@ $(document).ready(function(){initNavTree('group__array.html',''); initResizable(
bool simdjson::dom::object::iterator::operator== bool simdjson::dom::object::iterator::operator== (const iteratorconst iterator other) const
- + - + @@ -643,9 +643,9 @@ Public Member Functions

Load a JSON document from a file and return a reference to it.

dom::parser parser; const element doc = parser.load("jsonexamples/twitter.json");

The function is eager: the file's content is loaded in memory inside the parser instance and immediately parsed. The file can be deleted after the parser.load call.

-

+

IMPORTANT: Document Lifetime

The JSON document still lives in the parser: this is the most efficient way to parse JSON documents because it reuses the same buffers, but you must use the document before you destroy the parser or call parse() again.

Moving the parser instance is safe, but it invalidates the element instances. You may store the parser instance without moving it by wrapping it inside an unique_ptr instance like so: std::unique_ptr<dom::parser> parser(new dom::parser{});.

-

+

Parser Capacity

If the parser's current capacity is less than the file length, it will allocate enough capacity to handle it (up to max_capacity).

-

+

Windows and Unicode

Windows users who need to read files with non-ANSI characters in the name should set their code page to UTF-8 (65001) before calling this function. This should be the default with Windows 11 and better. Further, they may use the AreFileApisANSI function to determine whether the filename is interpreted using the ANSI or the system default OEM codepage, and they may call SetFileApisToOEM accordingly.

Parameters
@@ -475,7 +475,7 @@ Windows and Unicode

It is similar to the function load except that instead of parsing into the internal document instance associated with the parser, it allows the user to provide a document instance.

dom::parser parser; dom::document doc; element doc_root = parser.load_into_document(doc, "jsonexamples/twitter.json");

The function is eager: the file's content is loaded in memory inside the parser instance and immediately parsed. The file can be deleted after the parser.load_into_document call.

-

+

IMPORTANT: Document Lifetime

After the call to load_into_document, the parser is no longer needed.

The JSON document lives in the document instance: you must keep the document instance alive while you navigate through it (i.e., used the returned value from load_into_document). You are encourage to reuse the document instance many times with new data to avoid reallocations:

@@ -539,20 +539,20 @@ IMPORTANT: Document Lifetime

The file is loaded in memory and can be safely deleted after the parser.load_many(path) function has returned. The memory is held by the parser instance.

The function is lazy: it may be that no more than one JSON document at a time is parsed. And, possibly, no document many have been parsed when the parser.load_many(path) function returned.

If there is a UTF-8 BOM, the parser skips it.

-

+

Format

The file must contain a series of one or more JSON documents, concatenated into a single buffer, separated by whitespace. It effectively parses until it has a fully valid document, then starts parsing the next document at that point. (It does this with more parallelism and lookahead than you might think, though.)

Documents that consist of an object or array may omit the whitespace between them, concatenating with no separator. documents that consist of a single primitive (i.e. documents that are not arrays or objects) MUST be separated with whitespace.

The documents must not exceed batch_size bytes (by default 1MB) or they will fail to parse. Setting batch_size to excessively large or excessively small values may impact negatively the performance.

-

+

Error Handling

All errors are returned during iteration: if there is a global error such as memory allocation, it will be yielded as the first result. Iteration always stops after the first error.

As with all other simdjson methods, non-exception error handling is readily available through the same interface, requiring you to check the error before using the document:

dom::parser parser; dom::document_stream docs; auto error = parser.load_many(path).get(docs); if (error) { cerr << error << endl; exit(1); } for (auto doc : docs) { std::string_view title; if ((error = doc["title"].get(title)) { cerr << error << endl; exit(1); } cout << title << endl; }

-

+

Threads

When compiled with SIMDJSON_THREADS_ENABLED, this method will use a single thread under the hood to do some lookahead.

-

+

Parser Capacity

If the parser's current capacity is less than batch_size, it will allocate enough capacity to handle it (up to max_capacity).

Parameters
@@ -681,7 +681,7 @@ Parser Capacity
- + @@ -693,8 +693,8 @@ Parser Capacity - - + + @@ -725,7 +725,7 @@ Parser Capacity - + @@ -753,7 +753,7 @@ Parser Capacity - + @@ -781,7 +781,7 @@ Parser Capacity - + @@ -809,7 +809,7 @@ Parser Capacity - + @@ -821,8 +821,8 @@ Parser Capacity - - + + @@ -840,11 +840,11 @@ Parser Capacity

Parse a JSON document and return a temporary reference to it.

dom::parser parser; element doc_root = parser.parse(buf, len);

The function eagerly parses the input: the input can be modified and discarded after the parser.parse(buf, len) call has completed.

-

+

IMPORTANT: Document Lifetime

The JSON document still lives in the parser: this is the most efficient way to parse JSON documents because it reuses the same buffers, but you must use the document before you destroy the parser or call parse() again.

Moving the parser instance is safe, but it invalidates the element instances. You may store the parser instance without moving it by wrapping it inside an unique_ptr instance like so: std::unique_ptr<dom::parser> parser(new dom::parser{});.

-

+

REQUIRED: Buffer Padding

The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what those bytes are initialized to, as long as they are allocated. These bytes will be read: if you using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the SIMDJSON_PADDING bytes to avoid runtime warnings.

If realloc_if_needed is true (the default), it is assumed that the buffer does not have enough padding, and it is copied into an enlarged temporary buffer before parsing. Thus the following is safe:

@@ -852,12 +852,12 @@ REQUIRED: Buffer Padding

If you set realloc_if_needed to false (e.g., parser.parse(json, json_len, false)), you must provide a buffer with at least SIMDJSON_PADDING extra bytes at the end. The benefit of setting realloc_if_needed to false is that you avoid a temporary memory allocation and a copy.

The padded bytes may be read. It is not important how you initialize these bytes though we recommend a sensible default like null character values or spaces. For example, the following low-level code is safe:

const char *json = R"({"key":"value"})"; const size_t json_len = std::strlen(json); std::unique_ptr<char[]> padded_json_copy{new char[json_len + SIMDJSON_PADDING]}; std::memcpy(padded_json_copy.get(), json, json_len); std::memset(padded_json_copy.get() + json_len, '\0', SIMDJSON_PADDING); simdjson::dom::parser parser; simdjson::dom::element element = parser.parse(padded_json_copy.get(), json_len, false);

-

+

std::string references

If you pass a mutable std::string reference (std::string&), the parser will seek to extend its capacity to SIMDJSON_PADDING bytes beyond the end of the string.

Whenever you pass an std::string reference, the parser will access the bytes beyond the end of the string but before the end of the allocated memory (std::string::capacity()). If you are using a sanitizer that checks for reading uninitialized bytes or std::string's container-overflow checks, you may encounter sanitizer warnings. You can safely ignore these warnings. Or you can call simdjson::pad(std::string&) to pad the string with SIMDJSON_PADDING spaces: this function returns a simdjson::padding_string_view which can be be passed to the parser's parse function:

std::string json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )"; element doc = parser.parse(simdjson::pad(json));

-

+

Parser Capacity

If the parser's current capacity is less than len, it will allocate enough capacity to handle it (up to max_capacity).

Parameters
@@ -897,7 +897,7 @@ Parser Capacity
- + @@ -909,8 +909,8 @@ Parser Capacity - - + + @@ -947,7 +947,7 @@ Parser Capacity - + @@ -985,7 +985,7 @@ Parser Capacity - + @@ -1023,7 +1023,7 @@ Parser Capacity - + @@ -1035,8 +1035,8 @@ Parser Capacity - - + + @@ -1055,7 +1055,7 @@ Parser Capacity

It is similar to the function parse except that instead of parsing into the internal document instance associated with the parser, it allows the user to provide a document instance.

dom::parser parser; dom::document doc; element doc_root = parser.parse_into_document(doc, buf, len);

The function eagerly parses the input: the input can be modified and discarded after the parser.parse(buf, len) call has completed.

-

+

IMPORTANT: Document Lifetime

After the call to parse_into_document, the parser is no longer needed.

The JSON document lives in the document instance: you must keep the document instance alive while you navigate through it (i.e., used the returned value from parse_into_document). You are encourage to reuse the document instance many times with new data to avoid reallocations:

@@ -1093,7 +1093,7 @@ IMPORTANT: Document Lifetime - + @@ -1137,7 +1137,7 @@ IMPORTANT: Document Lifetime - + @@ -1175,7 +1175,7 @@ IMPORTANT: Document Lifetime - + @@ -1213,7 +1213,7 @@ IMPORTANT: Document Lifetime - + @@ -1250,23 +1250,23 @@ IMPORTANT: Document Lifetime

The following is safe:

auto json = "[\"temporary data\"]"_padded; auto docs = parser.parse_many(json); for (element doc : docs) { cout << std::string(doc["title"]) << endl; }

If there is a UTF-8 BOM, the parser skips it.

-

+

Format

The buffer must contain a series of one or more JSON documents, concatenated into a single buffer, separated by whitespace. It effectively parses until it has a fully valid document, then starts parsing the next document at that point. (It does this with more parallelism and lookahead than you might think, though.)

documents that consist of an object or array may omit the whitespace between them, concatenating with no separator. documents that consist of a single primitive (i.e. documents that are not arrays or objects) MUST be separated with whitespace.

The documents must not exceed batch_size bytes (by default 1MB) or they will fail to parse. Setting batch_size to excessively large or excessively small values may impact negatively the performance.

-

+

Error Handling

All errors are returned during iteration: if there is a global error such as memory allocation, it will be yielded as the first result. Iteration always stops after the first error.

As with all other simdjson methods, non-exception error handling is readily available through the same interface, requiring you to check the error before using the document:

dom::parser parser; dom::document_stream docs; auto error = parser.load_many(path).get(docs); if (error) { cerr << error << endl; exit(1); } for (auto doc : docs) { std::string_view title; if ((error = doc["title"].get(title)) { cerr << error << endl; exit(1); } cout << title << endl; }

-

+

REQUIRED: Buffer Padding

The buffer must have at least SIMDJSON_PADDING extra allocated bytes. It does not matter what those bytes are initialized to, as long as they are allocated. These bytes will be read: if you using a sanitizer that verifies that no uninitialized byte is read, then you should initialize the SIMDJSON_PADDING bytes to avoid runtime warnings.

-

+

Threads

When compiled with SIMDJSON_THREADS_ENABLED, this method will use a single thread under the hood to do some lookahead.

-

+

Parser Capacity

If the parser's current capacity is less than batch_size, it will allocate enough capacity to handle it (up to max_capacity).

Parameters
@@ -1299,7 +1299,7 @@ Parser Capacity
diff --git a/classsimdjson_1_1implementation.html b/classsimdjson_1_1implementation.html index e84a260e0..b5d00d0f1 100644 --- a/classsimdjson_1_1implementation.html +++ b/classsimdjson_1_1implementation.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1padded__string__view-members.html b/classsimdjson_1_1padded__string__view-members.html index d0a747b28..63d2bc234 100644 --- a/classsimdjson_1_1padded__string__view-members.html +++ b/classsimdjson_1_1padded__string__view-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1padded__string__view.html b/classsimdjson_1_1padded__string__view.html index e16d3dec7..30170c54c 100644 --- a/classsimdjson_1_1padded__string__view.html +++ b/classsimdjson_1_1padded__string__view.html @@ -29,7 +29,7 @@ diff --git a/common__defs_8h_source.html b/common__defs_8h_source.html index 9f2dd8c65..c4a2360f4 100644 --- a/common__defs_8h_source.html +++ b/common__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/compile__time__accessors_8h_source.html b/compile__time__accessors_8h_source.html new file mode 100644 index 000000000..4e82faf41 --- /dev/null +++ b/compile__time__accessors_8h_source.html @@ -0,0 +1,1016 @@ + + + + + + + +simdjson: include/simdjson/generic/ondemand/compile_time_accessors.h Source File + + + + + + + + + + + + + + + + +
+
+
bool simdjson::dom::object::iterator::operator> bool simdjson::dom::object::iterator::operator> (const iteratorconst iterator other) const
- + - + diff --git a/classsimdjson_1_1dom_1_1parser-members.html b/classsimdjson_1_1dom_1_1parser-members.html index f9153acd0..7b8b07d8f 100644 --- a/classsimdjson_1_1dom_1_1parser-members.html +++ b/classsimdjson_1_1dom_1_1parser-members.html @@ -29,7 +29,7 @@ diff --git a/classsimdjson_1_1dom_1_1parser.html b/classsimdjson_1_1dom_1_1parser.html index aee1d10cb..4107cb2cd 100644 --- a/classsimdjson_1_1dom_1_1parser.html +++ b/classsimdjson_1_1dom_1_1parser.html @@ -29,7 +29,7 @@ @@ -109,115 +109,115 @@ $(document).ready(function(){initNavTree('classsimdjson_1_1dom_1_1parser.html','
bool simdjson::dom::object::iterator::operator>= bool simdjson::dom::object::iterator::operator>= (const iteratorconst iterator other) const
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + +  - + +simdjson_result< element >  - + +simdjson_result< element >  - + +simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + +simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + +simdjson_inline simdjson_result< element >  - + - + - + - + +simdjson_result< document_stream >  - + +simdjson_result< document_stream >  - + - + - + - + - +

Public Member Functions

simdjson_inline parser (size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept
simdjson_inline parser (size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept
 Create a JSON parser.
 
simdjson_inline parser (parser &&other) noexcept
simdjson_inline parser (parser &&other) noexcept
 Take another parser's buffers and state.
 
simdjson_inline parseroperator= (parser &&other) noexcept
simdjson_inline parseroperator= (parser &&other) noexcept
 Take another parser's buffers and state.
 
~parser ()=default
~parser ()=default
 Deallocate the JSON parser.
 
simdjson_result< elementload (std::string_view path) &noexcept
simdjson_result< elementload (std::string_view path) &noexcept
 Load a JSON document from a file and return a reference to it.
 
-simdjson_result< elementload (std::string_view path) &&=delete
load (std::string_view path) &&=delete
 
simdjson_result< elementload_into_document (document &doc, std::string_view path) &noexcept
simdjson_result< elementload_into_document (document &doc, std::string_view path) &noexcept
 Load a JSON document from a file into a provide document instance and return a temporary reference to it.
 
-simdjson_result< elementload_into_document (document &doc, std::string_view path) &&=delete
load_into_document (document &doc, std::string_view path) &&=delete
 
simdjson_result< elementparse (const uint8_t *buf, size_t len, bool realloc_if_needed=true) &noexcept
simdjson_result< elementparse (const uint8_t *buf, size_t len, bool realloc_if_needed=true) &noexcept
 Parse a JSON document and return a temporary reference to it.
 
-simdjson_result< elementparse (const uint8_t *buf, size_t len, bool realloc_if_needed=true) &&=delete
parse (const uint8_t *buf, size_t len, bool realloc_if_needed=true) &&=delete
 
simdjson_inline simdjson_result< elementparse (const char *buf, size_t len, bool realloc_if_needed=true) &noexcept
simdjson_inline simdjson_result< elementparse (const char *buf, size_t len, bool realloc_if_needed=true) &noexcept
 
-simdjson_inline simdjson_result< elementparse (const char *buf, size_t len, bool realloc_if_needed=true) &&=delete
parse (const char *buf, size_t len, bool realloc_if_needed=true) &&=delete
 
simdjson_inline simdjson_result< elementparse (const std::string &s) &noexcept
simdjson_inline simdjson_result< elementparse (const std::string &s) &noexcept
 
-simdjson_inline simdjson_result< elementparse (const std::string &s) &&=delete
parse (const std::string &s) &&=delete
 
simdjson_inline simdjson_result< elementparse (const padded_string &s) &noexcept
simdjson_inline simdjson_result< elementparse (const padded_string &s) &noexcept
 
-simdjson_inline simdjson_result< elementparse (const padded_string &s) &&=delete
parse (const padded_string &s) &&=delete
 
simdjson_inline simdjson_result< elementparse (const padded_string_view &v) &noexcept
simdjson_inline simdjson_result< elementparse (const padded_string_view &v) &noexcept
 
-simdjson_inline simdjson_result< elementparse (const padded_string_view &v) &&=delete
parse (const padded_string_view &v) &&=delete
 
simdjson_result< elementparse_into_document (document &doc, const uint8_t *buf, size_t len, bool realloc_if_needed=true) &noexcept
simdjson_result< elementparse_into_document (document &doc, const uint8_t *buf, size_t len, bool realloc_if_needed=true) &noexcept
 Parse a JSON document into a provide document instance and return a temporary reference to it.
 
-simdjson_result< elementparse_into_document (document &doc, const uint8_t *buf, size_t len, bool realloc_if_needed=true) &&=delete
parse_into_document (document &doc, const uint8_t *buf, size_t len, bool realloc_if_needed=true) &&=delete
 
simdjson_inline simdjson_result< elementparse_into_document (document &doc, const char *buf, size_t len, bool realloc_if_needed=true) &noexcept
simdjson_inline simdjson_result< elementparse_into_document (document &doc, const char *buf, size_t len, bool realloc_if_needed=true) &noexcept
 
-simdjson_inline simdjson_result< elementparse_into_document (document &doc, const char *buf, size_t len, bool realloc_if_needed=true) &&=delete
parse_into_document (document &doc, const char *buf, size_t len, bool realloc_if_needed=true) &&=delete
 
simdjson_inline simdjson_result< elementparse_into_document (document &doc, const std::string &s) &noexcept
simdjson_inline simdjson_result< elementparse_into_document (document &doc, const std::string &s) &noexcept
 
-simdjson_inline simdjson_result< elementparse_into_document (document &doc, const std::string &s) &&=delete
parse_into_document (document &doc, const std::string &s) &&=delete
 
simdjson_inline simdjson_result< elementparse_into_document (document &doc, const padded_string &s) &noexcept
simdjson_inline simdjson_result< elementparse_into_document (document &doc, const padded_string &s) &noexcept
 
-simdjson_inline simdjson_result< elementparse_into_document (document &doc, const padded_string &s) &&=delete
parse_into_document (document &doc, const padded_string &s) &&=delete
 
simdjson_result< document_streamload_many (std::string_view path, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
simdjson_result< document_streamload_many (std::string_view path, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
 Load a file containing many JSON documents.
 
simdjson_result< document_streamparse_many (const uint8_t *buf, size_t len, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
simdjson_result< document_streamparse_many (const uint8_t *buf, size_t len, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
 Parse a buffer containing many JSON documents.
 
simdjson_result< document_streamparse_many (const char *buf, size_t len, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
simdjson_result< document_streamparse_many (const char *buf, size_t len, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
 
simdjson_result< document_streamparse_many (const std::string &s, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
simdjson_result< document_streamparse_many (const std::string &s, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
 
-simdjson_result< document_streamparse_many (const std::string &&s, size_t batch_size)=delete
parse_many (const std::string &&s, size_t batch_size)=delete
 
simdjson_result< document_streamparse_many (const padded_string &s, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
simdjson_result< document_streamparse_many (const padded_string &s, size_t batch_size=dom::DEFAULT_BATCH_SIZE) noexcept
 
-simdjson_result< document_streamparse_many (const padded_string &&s, size_t batch_size)=delete
parse_many (const padded_string &&s, size_t batch_size)=delete
 
simdjson_warn_unused error_code allocate (size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept
simdjson_warn_unused error_code allocate (size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept
 Ensure this parser has enough memory to process JSON documents up to capacity bytes in length and max_depth depth.
 
simdjson_inline size_t capacity () const noexcept
simdjson_inline size_t capacity () const noexcept
 The largest document this parser can support without reallocating.
 
simdjson_inline size_t max_capacity () const noexcept
simdjson_inline size_t max_capacity () const noexcept
 The largest document this parser can automatically support.
 
simdjson_pure simdjson_inline size_t max_depth () const noexcept
simdjson_pure simdjson_inline size_t max_depth () const noexcept
 The maximum level of nested object and arrays supported by this parser.
 
simdjson_inline void set_max_capacity (size_t max_capacity) noexcept
simdjson_inline void set_max_capacity (size_t max_capacity) noexcept
 Set max_capacity.
 
- +

Public Attributes

bool threaded {false}
bool threaded {false}
 When SIMDJSON_THREADS_ENABLED is not defined, the parser instance cannot use threads.
 
@@ -409,14 +409,14 @@ Public Attributes
simdjson_inline simdjson_result< element > simdjson::dom::parser::parse (const charconst char *  buf,
bool realloc_if_needed = true bool realloc_if_needed = true 
simdjson_inline simdjson_result< element > simdjson::dom::parser::parse (const padded_stringconst padded_string s) &
simdjson_inline simdjson_result< element > simdjson::dom::parser::parse (const padded_string_viewconst padded_string_view v) &
simdjson_inline simdjson_result< element > simdjson::dom::parser::parse (const std::string & const std::string &  s) &
simdjson_result< element > simdjson::dom::parser::parse (const uint8_tconst uint8_t *  buf,
bool realloc_if_needed = true bool realloc_if_needed = true 
const charconst char *  buf,
bool realloc_if_needed = true bool realloc_if_needed = true 
const padded_stringconst padded_string s 
const std::string & const std::string &  s 
const uint8_tconst uint8_t *  buf,
bool realloc_if_needed = true bool realloc_if_needed = true 
simdjson_result< document_stream > simdjson::dom::parser::parse_many (const charconst char *  buf,
simdjson_result< document_stream > simdjson::dom::parser::parse_many (const padded_stringconst padded_string s,
simdjson_result< document_stream > simdjson::dom::parser::parse_many (const std::string & const std::string &  s,
simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::parse_many (const uint8_tconst uint8_t *  buf,
- + @@ -1337,7 +1337,7 @@ Parser Capacity
simdjson_inline void simdjson::dom::parser::set_max_capacity simdjson_inline void simdjson::dom::parser::set_max_capacity ( size_t  max_capacity)
- +
bool simdjson::dom::parser::threaded {false}bool simdjson::dom::parser::threaded {false}
diff --git a/classsimdjson_1_1implementation-members.html b/classsimdjson_1_1implementation-members.html index 1e4edf1ff..d9504e596 100644 --- a/classsimdjson_1_1implementation-members.html +++ b/classsimdjson_1_1implementation-members.html @@ -29,7 +29,7 @@
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
+ + + + + + +
+
simdjson 4.1.0 +
+
Ridiculously Fast JSON
+
+ + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
compile_time_accessors.h
+
+
+
1
+
42#ifndef SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
+
43
+
44#ifndef SIMDJSON_CONDITIONAL_INCLUDE
+
45#define SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
+
46
+
47#endif // SIMDJSON_CONDITIONAL_INCLUDE
+
48
+
49// Arguably, we should just check SIMDJSON_STATIC_REFLECTION since it
+
50// is unlikely that we will have reflection support without concepts support.
+
51#if SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
52
+
53#include <string_view>
+
54#include <cstddef>
+
55#include <array>
+
56
+
57namespace simdjson {
+
58namespace SIMDJSON_IMPLEMENTATION {
+
59namespace ondemand {
+
60/***
+
61 * JSONPath implementation for compile-time access
+
62 * RFC 9535 JSONPath: Query Expressions for JSON, https://www.rfc-editor.org/rfc/rfc9535
+
63 */
+
64namespace json_path {
+
65
+
66// Note: value type must be fully defined before this header is included
+
67// This is ensured by including this in amalgamated.h after value-inl.h
+
68
+
69using ::simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value;
+
70
+
71// Path step types
+
72enum class step_type {
+
73 field, // .field_name or ["field_name"]
+
74 array_index // [index]
+
75};
+
76
+
77// Represents a single step in a JSON path
+
78template<std::size_t N>
+
79struct path_step {
+
80 step_type type;
+
81 char key[N]; // Field name (empty for array indices)
+
82 std::size_t index; // Array index (0 for field access)
+
83
+
84 constexpr path_step(step_type t, const char (&k)[N], std::size_t idx = 0)
+
85 : type(t), index(idx) {
+
86 for (std::size_t i = 0; i < N; ++i) {
+
87 key[i] = k[i];
+
88 }
+
89 }
+
90
+
91 constexpr std::string_view key_view() const {
+
92 return {key, N - 1};
+
93 }
+
94};
+
95
+
96// Helper to create field step
+
97template<std::size_t N>
+
98consteval auto make_field_step(const char (&name)[N]) {
+
99 return path_step<N>(step_type::field, name, 0);
+
100}
+
101
+
102// Helper to create array index step
+
103consteval auto make_index_step(std::size_t idx) {
+
104 return path_step<1>(step_type::array_index, "", idx);
+
105}
+
106
+
107// Parse state for compile-time JSON path parsing
+
108struct parse_result {
+
109 bool success;
+
110 std::size_t pos;
+
111 std::string_view error_msg;
+
112};
+
113
+
114// Compile-time JSON path parser
+
115// Supports subset: .field, ["field"], [index], nested combinations
+
116template<constevalutil::fixed_string Path>
+
117struct json_path_parser {
+
118 static constexpr std::string_view path_str = Path.view();
+
119
+
120 // Skip leading $ if present
+
121 static consteval std::size_t skip_root() {
+
122 if (!path_str.empty() && path_str[0] == '$') {
+
123 return 1;
+
124 }
+
125 return 0;
+
126 }
+
127
+
128 // Count the number of steps in the path at compile time
+
129 static consteval std::size_t count_steps() {
+
130 std::size_t count = 0;
+
131 std::size_t i = skip_root();
+
132
+
133 while (i < path_str.size()) {
+
134 if (path_str[i] == '.') {
+
135 // Field access: .field
+
136 ++i;
+
137 if (i >= path_str.size()) break;
+
138
+
139 // Skip field name
+
140 while (i < path_str.size() && path_str[i] != '.' && path_str[i] != '[') {
+
141 ++i;
+
142 }
+
143 ++count;
+
144 } else if (path_str[i] == '[') {
+
145 // Array or bracket notation
+
146 ++i;
+
147 if (i >= path_str.size()) break;
+
148
+
149 if (path_str[i] == '"' || path_str[i] == '\'') {
+
150 // Field access: ["field"] or ['field']
+
151 char quote = path_str[i];
+
152 ++i;
+
153 while (i < path_str.size() && path_str[i] != quote) {
+
154 ++i;
+
155 }
+
156 if (i < path_str.size()) ++i; // skip closing quote
+
157 if (i < path_str.size() && path_str[i] == ']') ++i;
+
158 } else {
+
159 // Array index: [0], [123]
+
160 while (i < path_str.size() && path_str[i] != ']') {
+
161 ++i;
+
162 }
+
163 if (i < path_str.size()) ++i; // skip ]
+
164 }
+
165 ++count;
+
166 } else {
+
167 ++i;
+
168 }
+
169 }
+
170
+
171 return count;
+
172 }
+
173
+
174 // Parse a field name at compile time
+
175 static consteval std::size_t parse_field_name(std::size_t start, char* out, std::size_t max_len) {
+
176 std::size_t len = 0;
+
177 std::size_t i = start;
+
178
+
179 while (i < path_str.size() && path_str[i] != '.' && path_str[i] != '[' && len < max_len - 1) {
+
180 out[len++] = path_str[i++];
+
181 }
+
182 out[len] = '\0';
+
183 return i;
+
184 }
+
185
+
186 // Parse an array index at compile time
+
187 static consteval std::pair<std::size_t, std::size_t> parse_array_index(std::size_t start) {
+
188 std::size_t index = 0;
+
189 std::size_t i = start;
+
190
+
191 while (i < path_str.size() && path_str[i] >= '0' && path_str[i] <= '9') {
+
192 index = index * 10 + (path_str[i] - '0');
+
193 ++i;
+
194 }
+
195
+
196 return {i, index};
+
197 }
+
198};
+
199
+
200// Compile-time path accessor generator
+
201template<typename T, constevalutil::fixed_string Path>
+
202struct path_accessor {
+ +
204
+
205 static constexpr auto parser = json_path_parser<Path>();
+
206 static constexpr std::size_t num_steps = parser.count_steps();
+
207 static constexpr std::string_view path_view = Path.view();
+
208
+
209 // Compile-time accessor generation
+
210 // If T is a struct, validates the path at compile time
+
211 // If T is void, skips validation
+
212 template<typename DocOrValue>
+
213 static inline simdjson_result<value> access(DocOrValue& doc_or_val) noexcept {
+
214 // Validate path at compile time if T is a struct
+
215 if constexpr (std::is_class_v<T>) {
+
216 constexpr bool path_valid = validate_path();
+
217 static_assert(path_valid, "JSON path does not match struct definition");
+
218 }
+
219
+
220 // Parse the path at compile time to build access steps
+
221 return access_impl<parser.skip_root()>(doc_or_val.get_value());
+
222 }
+
223
+
224 // Extract value at path directly into target with compile-time type validation
+
225 // Example: std::string name; path_accessor<User, ".name">::extract_field(doc, name);
+
226 template<typename DocOrValue, typename FieldType>
+
227 static inline error_code extract_field(DocOrValue& doc_or_val, FieldType& target) noexcept {
+
228 static_assert(std::is_class_v<T>, "extract_field requires T to be a struct type for validation");
+
229
+
230 // Validate path exists in struct definition
+
231 constexpr bool path_valid = validate_path();
+
232 static_assert(path_valid, "JSON path does not match struct definition");
+
233
+
234 // Get the type at the end of the path
+
235 constexpr auto final_type = get_final_type();
+
236
+
237 // Verify target type matches the field type
+
238 static_assert(final_type == ^^FieldType, "Target type does not match the field type at the path");
+
239
+
240 // All validation done at compile time - just navigate and extract
+
241 auto json_value = access_impl<parser.skip_root()>(doc_or_val.get_value());
+
242 if (json_value.error()) return json_value.error();
+
243
+
244 return json_value.get(target);
+
245 }
+
246
+
247private:
+
248 // Get the final type by walking the path through the struct type
+
249 template<typename U = T>
+
250 static consteval std::enable_if_t<std::is_class_v<U>, std::meta::info> get_final_type() {
+
251 auto current_type = ^^T;
+
252 std::size_t i = parser.skip_root();
+
253
+
254 while (i < path_view.size()) {
+
255 if (path_view[i] == '.') {
+
256 // .field syntax
+
257 ++i;
+
258 std::size_t field_start = i;
+
259 while (i < path_view.size() && path_view[i] != '.' && path_view[i] != '[') {
+
260 ++i;
+
261 }
+
262
+
263 std::string_view field_name = path_view.substr(field_start, i - field_start);
+
264
+
265 auto members = std::meta::nonstatic_data_members_of(
+
266 current_type, std::meta::access_context::unchecked()
+
267 );
+
268
+
269 for (auto mem : members) {
+
270 if (std::meta::identifier_of(mem) == field_name) {
+
271 current_type = std::meta::type_of(mem);
+
272 break;
+
273 }
+
274 }
+
275
+
276 } else if (path_view[i] == '[') {
+
277 ++i;
+
278 if (i >= path_view.size()) break;
+
279
+
280 if (path_view[i] == '"' || path_view[i] == '\'') {
+
281 // ["field"] syntax
+
282 char quote = path_view[i];
+
283 ++i;
+
284 std::size_t field_start = i;
+
285 while (i < path_view.size() && path_view[i] != quote) {
+
286 ++i;
+
287 }
+
288
+
289 std::string_view field_name = path_view.substr(field_start, i - field_start);
+
290 if (i < path_view.size()) ++i; // skip quote
+
291 if (i < path_view.size() && path_view[i] == ']') ++i;
+
292
+
293 auto members = std::meta::nonstatic_data_members_of(
+
294 current_type, std::meta::access_context::unchecked()
+
295 );
+
296
+
297 for (auto mem : members) {
+
298 if (std::meta::identifier_of(mem) == field_name) {
+
299 current_type = std::meta::type_of(mem);
+
300 break;
+
301 }
+
302 }
+
303
+
304 } else {
+
305 // [index] syntax - extract element type
+
306 while (i < path_view.size() && path_view[i] >= '0' && path_view[i] <= '9') {
+
307 ++i;
+
308 }
+
309 if (i < path_view.size() && path_view[i] == ']') ++i;
+
310
+
311 current_type = get_element_type_reflected(current_type);
+
312 }
+
313 } else {
+
314 ++i;
+
315 }
+
316 }
+
317
+
318 return current_type;
+
319 }
+
320
+
321private:
+
322 // Walk path and extract directly into final field using compile-time reflection
+
323 template<std::meta::info CurrentType, std::size_t PathPos, typename TargetType>
+
324 static inline error_code extract_with_reflection(simdjson_result<value> current, TargetType& target_ref) noexcept {
+
325 if (current.error()) return current.error();
+
326
+
327 // Base case: end of path - extract into target
+
328 if constexpr (PathPos >= path_view.size()) {
+
329 return current.get(target_ref);
+
330 }
+
331 // Field access: .field_name
+
332 else if constexpr (path_view[PathPos] == '.') {
+
333 constexpr auto field_info = parse_next_field(PathPos);
+
334 constexpr std::string_view field_name = std::get<0>(field_info);
+
335 constexpr std::size_t next_pos = std::get<1>(field_info);
+
336
+
337 constexpr auto member_info = find_member_by_name(CurrentType, field_name);
+
338 static_assert(member_info != ^^void, "Field not found in struct");
+
339
+
340 constexpr auto member_type = std::meta::type_of(member_info);
+
341
+
342 auto obj_result = current.get_object();
+
343 if (obj_result.error()) return obj_result.error();
+
344 auto obj = obj_result.value_unsafe();
+
345 auto field_value = obj.find_field_unordered(field_name);
+
346
+
347 if constexpr (next_pos >= path_view.size()) {
+
348 return field_value.get(target_ref);
+
349 } else {
+
350 return extract_with_reflection<member_type, next_pos>(field_value, target_ref);
+
351 }
+
352 }
+
353 // Bracket notation: [index] or ["field"]
+
354 else if constexpr (path_view[PathPos] == '[') {
+
355 constexpr auto bracket_info = parse_bracket(PathPos);
+
356 constexpr bool is_field = std::get<0>(bracket_info);
+
357 constexpr std::size_t next_pos = std::get<2>(bracket_info);
+
358
+
359 if constexpr (is_field) {
+
360 constexpr std::string_view field_name = std::get<1>(bracket_info);
+
361 constexpr auto member_info = find_member_by_name(CurrentType, field_name);
+
362 static_assert(member_info != ^^void, "Field not found in struct");
+
363 constexpr auto member_type = std::meta::type_of(member_info);
+
364
+
365 auto obj_result = current.get_object();
+
366 if (obj_result.error()) return obj_result.error();
+
367 auto obj = obj_result.value_unsafe();
+
368 auto field_value = obj.find_field_unordered(field_name);
+
369
+
370 if constexpr (next_pos >= path_view.size()) {
+
371 return field_value.get(target_ref);
+
372 } else {
+
373 return extract_with_reflection<member_type, next_pos>(field_value, target_ref);
+
374 }
+
375 } else {
+
376 constexpr std::size_t index = std::get<3>(bracket_info);
+
377 constexpr auto elem_type = get_element_type_reflected(CurrentType);
+
378 static_assert(elem_type != ^^void, "Could not determine array element type");
+
379
+
380 auto arr_result = current.get_array();
+
381 if (arr_result.error()) return arr_result.error();
+
382 auto arr = arr_result.value_unsafe();
+
383 auto elem_value = arr.at(index);
+
384
+
385 if constexpr (next_pos >= path_view.size()) {
+
386 return elem_value.get(target_ref);
+
387 } else {
+
388 return extract_with_reflection<elem_type, next_pos>(elem_value, target_ref);
+
389 }
+
390 }
+
391 }
+
392 // Skip unexpected characters and continue
+
393 else {
+
394 return extract_with_reflection<CurrentType, PathPos + 1>(current, target_ref);
+
395 }
+
396 }
+
397
+
398 // Find member by name in reflected type
+
399 static consteval std::meta::info find_member_by_name(std::meta::info type_refl, std::string_view name) {
+
400 auto members = std::meta::nonstatic_data_members_of(type_refl, std::meta::access_context::unchecked());
+
401 for (auto mem : members) {
+
402 if (std::meta::identifier_of(mem) == name) {
+
403 return mem;
+
404 }
+
405 }
+
406 }
+
407
+
408 // Generate compile-time accessor code by walking the path
+
409 template<std::size_t PathPos>
+
410 static inline simdjson_result<value> access_impl(simdjson_result<value> current) noexcept {
+
411 if (current.error()) return current;
+
412
+
413 if constexpr (PathPos >= path_view.size()) {
+
414 return current;
+
415 } else if constexpr (path_view[PathPos] == '.') {
+
416 constexpr auto field_info = parse_next_field(PathPos);
+
417 constexpr std::string_view field_name = std::get<0>(field_info);
+
418 constexpr std::size_t next_pos = std::get<1>(field_info);
+
419
+
420 auto obj_result = current.get_object();
+
421 if (obj_result.error()) return obj_result.error();
+
422
+
423 auto obj = obj_result.value_unsafe();
+
424 auto next_value = obj.find_field_unordered(field_name);
+
425
+
426 return access_impl<next_pos>(next_value);
+
427
+
428 } else if constexpr (path_view[PathPos] == '[') {
+
429 constexpr auto bracket_info = parse_bracket(PathPos);
+
430 constexpr bool is_field = std::get<0>(bracket_info);
+
431 constexpr std::size_t next_pos = std::get<2>(bracket_info);
+
432
+
433 if constexpr (is_field) {
+
434 constexpr std::string_view field_name = std::get<1>(bracket_info);
+
435
+
436 auto obj_result = current.get_object();
+
437 if (obj_result.error()) return obj_result.error();
+
438
+
439 auto obj = obj_result.value_unsafe();
+
440 auto next_value = obj.find_field_unordered(field_name);
+
441
+
442 return access_impl<next_pos>(next_value);
+
443
+
444 } else {
+
445 constexpr std::size_t index = std::get<3>(bracket_info);
+
446
+
447 auto arr_result = current.get_array();
+
448 if (arr_result.error()) return arr_result.error();
+
449
+
450 auto arr = arr_result.value_unsafe();
+
451 auto next_value = arr.at(index);
+
452
+
453 return access_impl<next_pos>(next_value);
+
454 }
+
455 } else {
+
456 return access_impl<PathPos + 1>(current);
+
457 }
+
458 }
+
459
+
460 // Parse next field name
+
461 static consteval auto parse_next_field(std::size_t start) {
+
462 std::size_t i = start + 1;
+
463 std::size_t field_start = i;
+
464 while (i < path_view.size() && path_view[i] != '.' && path_view[i] != '[') {
+
465 ++i;
+
466 }
+
467 std::string_view field_name = path_view.substr(field_start, i - field_start);
+
468 return std::make_tuple(field_name, i);
+
469 }
+
470
+
471 // Parse bracket notation: returns (is_field, field_name, next_pos, index)
+
472 static consteval auto parse_bracket(std::size_t start) {
+
473 std::size_t i = start + 1; // skip '['
+
474
+
475 if (i < path_view.size() && (path_view[i] == '"' || path_view[i] == '\'')) {
+
476 // Field access
+
477 char quote = path_view[i];
+
478 ++i;
+
479 std::size_t field_start = i;
+
480 while (i < path_view.size() && path_view[i] != quote) {
+
481 ++i;
+
482 }
+
483 std::string_view field_name = path_view.substr(field_start, i - field_start);
+
484 if (i < path_view.size()) ++i; // skip closing quote
+
485 if (i < path_view.size() && path_view[i] == ']') ++i;
+
486
+
487 return std::make_tuple(true, field_name, i, std::size_t(0));
+
488 } else {
+
489 // Array index
+
490 std::size_t index = 0;
+
491 while (i < path_view.size() && path_view[i] >= '0' && path_view[i] <= '9') {
+
492 index = index * 10 + (path_view[i] - '0');
+
493 ++i;
+
494 }
+
495 if (i < path_view.size() && path_view[i] == ']') ++i;
+
496
+
497 return std::make_tuple(false, std::string_view{}, i, index);
+
498 }
+
499 }
+
500
+
501public:
+
502 // Check if reflected type is array-like (C-style array or indexable container)
+
503 // Uses reflection to test: 1) std::meta::is_array_type() for C arrays
+
504 // 2) std::meta::substitute() to test concepts::indexable_container concept
+
505 static consteval bool is_array_like_reflected(std::meta::info type_reflection) {
+
506 if (std::meta::is_array_type(type_reflection)) {
+
507 return true;
+
508 }
+
509
+
510 if (std::meta::can_substitute(^^concepts::indexable_container_v, {type_reflection})) {
+
511 return std::meta::extract<bool>(std::meta::substitute(^^concepts::indexable_container_v, {type_reflection}));
+
512 }
+
513 return false;
+
514 }
+
515
+
516 // Extract element type from reflected array or container
+
517 // For C arrays: uses std::meta::remove_extent()
+
518 // For containers: finds value_type member using std::meta::members_of()
+
519 static consteval std::meta::info get_element_type_reflected(std::meta::info type_reflection) {
+
520 if (std::meta::is_array_type(type_reflection)) {
+
521 return std::meta::remove_extent(type_reflection);
+
522 }
+
523
+
524 auto members = std::meta::members_of(type_reflection, std::meta::access_context::unchecked());
+
525 for (auto mem : members) {
+
526 if (std::meta::is_type(mem)) {
+
527 auto name = std::meta::identifier_of(mem);
+
528 if (name == "value_type") {
+
529 return mem;
+
530 }
+
531 }
+
532 }
+
533 return ^^void;
+
534 }
+
535
+
536private:
+
537 // Check if type has member with given name
+
538 template<typename Type>
+
539 static consteval bool has_member(std::string_view member_name) {
+
540 constexpr auto members = std::meta::nonstatic_data_members_of(^^Type, std::meta::access_context::unchecked());
+
541 for (auto mem : members) {
+
542 if (std::meta::identifier_of(mem) == member_name) {
+
543 return true;
+
544 }
+
545 }
+
546 return false;
+
547 }
+
548
+
549 // Get type of member by name
+
550 template<typename Type>
+
551 static consteval auto get_member_type(std::string_view member_name) {
+
552 constexpr auto members = std::meta::nonstatic_data_members_of(^^Type, std::meta::access_context::unchecked());
+
553 for (auto mem : members) {
+
554 if (std::meta::identifier_of(mem) == member_name) {
+
555 return std::meta::type_of(mem);
+
556 }
+
557 }
+
558 return ^^void;
+
559 }
+
560
+
561 // Check if non-reflected type is array-like
+
562 template<typename Type>
+
563 static consteval bool is_container_type() {
+
564 using BaseType = std::remove_cvref_t<Type>;
+
565 if constexpr (requires { typename BaseType::value_type; }) {
+
566 return true;
+
567 }
+
568 if constexpr (std::is_array_v<BaseType>) {
+
569 return true;
+
570 }
+
571 return false;
+
572 }
+
573
+
574 // Extract element type from non-reflected container
+
575 template<typename Type>
+
576 using extract_element_type = std::conditional_t<
+
577 requires { typename std::remove_cvref_t<Type>::value_type; },
+
578 typename std::remove_cvref_t<Type>::value_type,
+
579 std::conditional_t<
+
580 std::is_array_v<std::remove_cvref_t<Type>>,
+
581 std::remove_extent_t<std::remove_cvref_t<Type>>,
+
582 void
+
583 >
+
584 >;
+
585
+
586 // Validate path matches struct definition
+
587 static consteval bool validate_path() {
+
588 if constexpr (!std::is_class_v<T>) {
+
589 return true;
+
590 }
+
591
+
592 auto current_type = ^^T;
+
593 std::size_t i = parser.skip_root();
+
594
+
595 while (i < path_view.size()) {
+
596 if (path_view[i] == '.') {
+
597 ++i;
+
598 std::size_t field_start = i;
+
599 while (i < path_view.size() && path_view[i] != '.' && path_view[i] != '[') {
+
600 ++i;
+
601 }
+
602
+
603 std::string_view field_name = path_view.substr(field_start, i - field_start);
+
604
+
605 bool found = false;
+
606 auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
607
+
608 for (auto mem : members) {
+
609 if (std::meta::identifier_of(mem) == field_name) {
+
610 current_type = std::meta::type_of(mem);
+
611 found = true;
+
612 break;
+
613 }
+
614 }
+
615
+
616 if (!found) {
+
617 return false;
+
618 }
+
619
+
620 } else if (path_view[i] == '[') {
+
621 ++i;
+
622 if (i >= path_view.size()) return false;
+
623
+
624 if (path_view[i] == '"' || path_view[i] == '\'') {
+
625 char quote = path_view[i];
+
626 ++i;
+
627 std::size_t field_start = i;
+
628 while (i < path_view.size() && path_view[i] != quote) {
+
629 ++i;
+
630 }
+
631
+
632 std::string_view field_name = path_view.substr(field_start, i - field_start);
+
633 if (i < path_view.size()) ++i;
+
634 if (i < path_view.size() && path_view[i] == ']') ++i;
+
635
+
636 bool found = false;
+
637 auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
638
+
639 for (auto mem : members) {
+
640 if (std::meta::identifier_of(mem) == field_name) {
+
641 current_type = std::meta::type_of(mem);
+
642 found = true;
+
643 break;
+
644 }
+
645 }
+
646
+
647 if (!found) {
+
648 return false;
+
649 }
+
650
+
651 } else {
+
652 while (i < path_view.size() && path_view[i] >= '0' && path_view[i] <= '9') {
+
653 ++i;
+
654 }
+
655
+
656 if (i < path_view.size() && path_view[i] == ']') ++i;
+
657
+
658 if (!is_array_like_reflected(current_type)) {
+
659 return false;
+
660 }
+
661
+
662 auto new_type = get_element_type_reflected(current_type);
+
663
+
664 if (new_type == ^^void) {
+
665 return false;
+
666 }
+
667
+
668 current_type = new_type;
+
669 }
+
670 } else {
+
671 ++i;
+
672 }
+
673 }
+
674
+
675 return true;
+
676 }
+
677};
+
678
+
679// Compile-time path accessor with validation
+
680template<typename T, constevalutil::fixed_string Path, typename DocOrValue>
+
681inline simdjson_result<::simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+
682 using accessor = path_accessor<T, Path>;
+
683 return accessor::access(doc_or_val);
+
684}
+
685
+
686// Overload without type parameter (no validation)
+
687template<constevalutil::fixed_string Path, typename DocOrValue>
+
688inline simdjson_result<::simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value> at_path_compiled(DocOrValue& doc_or_val) noexcept {
+
689 using accessor = path_accessor<void, Path>;
+
690 return accessor::access(doc_or_val);
+
691}
+
692
+
693// ============================================================================
+
694// JSON Pointer Compile-Time Support (RFC 6901)
+
695// ============================================================================
+
696
+
697// JSON Pointer parser: /field/0/nested (slash-separated)
+
698template<constevalutil::fixed_string Pointer>
+
699struct json_pointer_parser {
+
700 static constexpr std::string_view pointer_str = Pointer.view();
+
701
+
702 // Unescape token: ~0 -> ~, ~1 -> /
+
703 static consteval void unescape_token(std::string_view src, char* dest, std::size_t& out_len) {
+
704 out_len = 0;
+
705 for (std::size_t i = 0; i < src.size(); ++i) {
+
706 if (src[i] == '~' && i + 1 < src.size()) {
+
707 if (src[i + 1] == '0') {
+
708 dest[out_len++] = '~';
+
709 ++i;
+
710 } else if (src[i + 1] == '1') {
+
711 dest[out_len++] = '/';
+
712 ++i;
+
713 } else {
+
714 dest[out_len++] = src[i];
+
715 }
+
716 } else {
+
717 dest[out_len++] = src[i];
+
718 }
+
719 }
+
720 }
+
721
+
722 // Check if token is numeric
+
723 static consteval bool is_numeric(std::string_view token) {
+
724 if (token.empty()) return false;
+
725 if (token[0] == '0' && token.size() > 1) return false;
+
726 for (char c : token) {
+
727 if (c < '0' || c > '9') return false;
+
728 }
+
729 return true;
+
730 }
+
731
+
732 // Parse numeric token to index
+
733 static consteval std::size_t parse_index(std::string_view token) {
+
734 std::size_t result = 0;
+
735 for (char c : token) {
+
736 result = result * 10 + (c - '0');
+
737 }
+
738 return result;
+
739 }
+
740
+
741 // Count tokens in pointer
+
742 static consteval std::size_t count_tokens() {
+
743 if (pointer_str.empty() || pointer_str == "/") return 0;
+
744
+
745 std::size_t count = 0;
+
746 std::size_t pos = pointer_str[0] == '/' ? 1 : 0;
+
747
+
748 while (pos < pointer_str.size()) {
+
749 ++count;
+
750 std::size_t next_slash = pointer_str.find('/', pos);
+
751 if (next_slash == std::string_view::npos) break;
+
752 pos = next_slash + 1;
+
753 }
+
754
+
755 return count;
+
756 }
+
757
+
758 // Get Nth token
+
759 static consteval std::string_view get_token(std::size_t token_index) {
+
760 std::size_t pos = pointer_str[0] == '/' ? 1 : 0;
+
761 std::size_t current_token = 0;
+
762
+
763 while (current_token < token_index) {
+
764 std::size_t next_slash = pointer_str.find('/', pos);
+
765 pos = next_slash + 1;
+
766 ++current_token;
+
767 }
+
768
+
769 std::size_t token_end = pointer_str.find('/', pos);
+
770 if (token_end == std::string_view::npos) token_end = pointer_str.size();
+
771
+
772 return pointer_str.substr(pos, token_end - pos);
+
773 }
+
774};
+
775
+
776// JSON Pointer accessor
+
777template<typename T, constevalutil::fixed_string Pointer>
+
778struct pointer_accessor {
+
779 using parser = json_pointer_parser<Pointer>;
+
780 static constexpr std::string_view pointer_view = Pointer.view();
+
781 static constexpr std::size_t token_count = parser::count_tokens();
+
782
+
783 // Validate pointer against struct definition
+
784 static consteval bool validate_pointer() {
+
785 if constexpr (!std::is_class_v<T>) {
+
786 return true;
+
787 }
+
788
+
789 auto current_type = ^^T;
+
790 std::size_t pos = pointer_view[0] == '/' ? 1 : 0;
+
791
+
792 while (pos < pointer_view.size()) {
+
793 // Extract token up to next /
+
794 std::size_t token_end = pointer_view.find('/', pos);
+
795 if (token_end == std::string_view::npos) token_end = pointer_view.size();
+
796
+
797 std::string_view token = pointer_view.substr(pos, token_end - pos);
+
798
+
799 if (parser::is_numeric(token)) {
+
800 if (!path_accessor<T, Pointer>::is_array_like_reflected(current_type)) {
+
801 return false;
+
802 }
+
803 current_type = path_accessor<T, Pointer>::get_element_type_reflected(current_type);
+
804 } else {
+
805 bool found = false;
+
806 auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
807
+
808 for (auto mem : members) {
+
809 if (std::meta::identifier_of(mem) == token) {
+
810 current_type = std::meta::type_of(mem);
+
811 found = true;
+
812 break;
+
813 }
+
814 }
+
815
+
816 if (!found) return false;
+
817 }
+
818
+
819 pos = token_end + 1;
+
820 }
+
821
+
822 return true;
+
823 }
+
824
+
825 // Recursive accessor
+
826 template<std::size_t TokenIndex>
+
827 static inline simdjson_result<value> access_impl(simdjson_result<value> current) noexcept {
+
828 if constexpr (TokenIndex >= token_count) {
+
829 return current;
+
830 } else {
+
831 constexpr std::string_view token = parser::get_token(TokenIndex);
+
832
+
833 if constexpr (parser::is_numeric(token)) {
+
834 constexpr std::size_t index = parser::parse_index(token);
+
835 auto arr = current.get_array().value_unsafe();
+
836 auto next_value = arr.at(index);
+
837 return access_impl<TokenIndex + 1>(next_value);
+
838 } else {
+
839 auto obj = current.get_object().value_unsafe();
+
840 auto next_value = obj.find_field_unordered(token);
+
841 return access_impl<TokenIndex + 1>(next_value);
+
842 }
+
843 }
+
844 }
+
845
+
846 // Access JSON value at pointer
+
847 template<typename DocOrValue>
+
848 static inline simdjson_result<value> access(DocOrValue& doc_or_val) noexcept {
+
849 if constexpr (std::is_class_v<T>) {
+
850 constexpr bool pointer_valid = validate_pointer();
+
851 static_assert(pointer_valid, "JSON Pointer does not match struct definition");
+
852 }
+
853
+
854 if (pointer_view.empty() || pointer_view == "/") {
+
855 if constexpr (requires { doc_or_val.get_value(); }) {
+
856 return doc_or_val.get_value();
+
857 } else {
+
858 return doc_or_val;
+
859 }
+
860 }
+
861
+
862 simdjson_result<value> current = doc_or_val.get_value();
+
863 return access_impl<0>(current);
+
864 }
+
865
+
866 // Extract value at pointer directly into target with type validation
+
867 template<typename DocOrValue, typename FieldType>
+
868 static inline error_code extract_field(DocOrValue& doc_or_val, FieldType& target) noexcept {
+
869 static_assert(std::is_class_v<T>, "extract_field requires T to be a struct type for validation");
+
870
+
871 constexpr bool pointer_valid = validate_pointer();
+
872 static_assert(pointer_valid, "JSON Pointer does not match struct definition");
+
873
+
874 constexpr auto final_type = get_final_type();
+
875 static_assert(final_type == ^^FieldType, "Target type does not match the field type at the pointer");
+
876
+
877 simdjson_result<value> current_value = doc_or_val.get_value();
+
878 auto json_value = access_impl<0>(current_value);
+
879 if (json_value.error()) return json_value.error();
+
880
+
881 return json_value.get(target);
+
882 }
+
883
+
884private:
+
885 // Get final type by walking pointer through struct
+
886 template<typename U = T>
+
887 static consteval std::enable_if_t<std::is_class_v<U>, std::meta::info> get_final_type() {
+
888 auto current_type = ^^T;
+
889 std::size_t pos = pointer_view[0] == '/' ? 1 : 0;
+
890
+
891 while (pos < pointer_view.size()) {
+
892 std::size_t token_end = pointer_view.find('/', pos);
+
893 if (token_end == std::string_view::npos) token_end = pointer_view.size();
+
894
+
895 std::string_view token = pointer_view.substr(pos, token_end - pos);
+
896
+
897 if (parser::is_numeric(token)) {
+
898 current_type = path_accessor<T, "">::get_element_type_reflected(current_type);
+
899 } else {
+
900 auto members = std::meta::nonstatic_data_members_of(current_type, std::meta::access_context::unchecked());
+
901
+
902 for (auto mem : members) {
+
903 if (std::meta::identifier_of(mem) == token) {
+
904 current_type = std::meta::type_of(mem);
+
905 break;
+
906 }
+
907 }
+
908 }
+
909
+
910 pos = token_end + 1;
+
911 }
+
912
+
913 return current_type;
+
914 }
+
915};
+
916
+
917// Compile-time JSON Pointer accessor with validation
+
918template<typename T, constevalutil::fixed_string Pointer, typename DocOrValue>
+
919inline simdjson_result<::simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+
920 using accessor = pointer_accessor<T, Pointer>;
+
921 return accessor::access(doc_or_val);
+
922}
+
923
+
924// Overload without type parameter (no validation)
+
925template<constevalutil::fixed_string Pointer, typename DocOrValue>
+
926inline simdjson_result<::simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value> at_pointer_compiled(DocOrValue& doc_or_val) noexcept {
+
927 using accessor = pointer_accessor<void, Pointer>;
+
928 return accessor::access(doc_or_val);
+
929}
+
930
+
931} // namespace json_path
+
932} // namespace ondemand
+
933} // namespace SIMDJSON_IMPLEMENTATION
+
934} // namespace simdjson
+
935
+
936#endif // SIMDJSON_SUPPORTS_CONCEPTS && SIMDJSON_STATIC_REFLECTION
+
937#endif // SIMDJSON_GENERIC_ONDEMAND_COMPILE_TIME_ACCESSORS_H
+
938
+
An ephemeral JSON value returned during iteration.
Definition value.h:21
+
The top level simdjson namespace, containing everything the library provides.
Definition base.h:8
+
error_code
All possible errors returned by simdjson.
Definition error.h:19
+
+
+ + + + diff --git a/compiler__check_8h_source.html b/compiler__check_8h_source.html index fa8b3a526..88cc6d4c3 100644 --- a/compiler__check_8h_source.html +++ b/compiler__check_8h_source.html @@ -29,7 +29,7 @@
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
 
 base.h
 
 compile_time_accessors.h
 
 dependencies.h
 
 deserialize.h
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + - +

Functions

simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_array () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_array () noexcept
 Check for an opening [ and start an array iteration.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_array () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_array () noexcept
 Check for an opening [ and start an array iteration while at the root.
 
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::check_root_array () noexcept
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::check_root_array () noexcept
 Checks whether an array could be started from the root.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_array () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_array () noexcept
 Start an array iteration, after the user has already checked and moved past the [.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_array () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_array () noexcept
 Start an array iteration from the root, after the user has already checked and moved past the [.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_element () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_element () noexcept
 Moves to the next element in an array.
 
simdjson_warn_unused simdjson_inline value_iterator simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::child () const noexcept
simdjson_warn_unused simdjson_inline value_iterator simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::child () const noexcept
 Get a child value iterator.
 
@@ -201,7 +201,7 @@ Functions
- + @@ -232,7 +232,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_element simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_element ( )
- + @@ -262,7 +262,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_array simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_array ( )
- + @@ -292,7 +292,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_array simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_array ( )
- + @@ -323,7 +323,7 @@ Functions - + @@ -276,9 +276,9 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_array simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_array ( )
- + diff --git a/group__object.html b/group__object.html index 0bd4f5d52..433733b51 100644 --- a/group__object.html +++ b/group__object.html @@ -29,7 +29,7 @@ @@ -105,37 +105,37 @@ $(document).ready(function(){initNavTree('group__object.html',''); initResizable
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_array simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_array ( )
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - + - + - + - + - + - + - + - + - + - +

Functions

simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_object () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_object () noexcept
 Start an object iteration.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_object () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_object () noexcept
 Start an object iteration from the root.
 
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::check_root_object () noexcept
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::check_root_object () noexcept
 Checks whether an object could be started from the root.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_object () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_object () noexcept
 Start an object iteration after the user has already checked and moved past the {.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_object () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_object () noexcept
 Start an object iteration from the root, after the user has already checked and moved past the {.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_field () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_field () noexcept
 Moves to the next field in an object.
 
simdjson_warn_unused simdjson_inline simdjson_result< raw_json_stringsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::field_key () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< raw_json_stringsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::field_key () noexcept
 Get the current field's key.
 
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::field_value () noexcept
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::field_value () noexcept
 Pass the : in the field and move to its value.
 
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field (const std::string_view key) noexcept
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field (const std::string_view key) noexcept
 Find the next field with the given key.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_raw (const std::string_view key) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_raw (const std::string_view key) noexcept
 Find the next field with the given key, without unescaping.
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_unordered_raw (const std::string_view key) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_unordered_raw (const std::string_view key) noexcept
 Find the field with the given key without regard to order, and without unescaping.
 
@@ -244,7 +244,7 @@ Functions
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field (const std::string_view const std::string_view  key)
- + - + @@ -313,9 +313,9 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_raw simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_raw (const std::string_view const std::string_view  key)
- + - + @@ -351,7 +351,7 @@ Functions
SIMDJSON_PUSH_DISABLE_WARNINGS SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_unordered_raw SIMDJSON_PUSH_DISABLE_WARNINGS SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field_unordered_raw (const std::string_view const std::string_view  key)
- + @@ -382,7 +382,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_field simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::has_next_field ( )
- + @@ -412,7 +412,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_object simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_object ( )
- + @@ -442,7 +442,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_object simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_root_object ( )
- + @@ -473,7 +473,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_object simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_object ( )
- + diff --git a/group__scalar.html b/group__scalar.html index e03e6c30d..4d8a32af9 100644 --- a/group__scalar.html +++ b/group__scalar.html @@ -29,7 +29,7 @@ @@ -102,83 +102,83 @@ $(document).ready(function(){initNavTree('group__scalar.html',''); initResizable
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_object simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::started_root_object ( )
-
simdjson 4.0.7 +
simdjson 4.1.0
Ridiculously Fast JSON
- + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Functions

simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_string (bool allow_replacement) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_string (bool allow_replacement) noexcept
 
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_string (string_type &receiver, bool allow_replacement) noexcept
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_string (string_type &receiver, bool allow_replacement) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_wobbly_string () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_wobbly_string () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< raw_json_stringsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_raw_json_string () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< raw_json_stringsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_raw_json_string () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< uint64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64 () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64 () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< uint64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64_in_string () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64_in_string () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< int64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64 () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64 () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< int64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64_in_string () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64_in_string () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< doublesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< doublesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double_in_string () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double_in_string () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_bool () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_bool () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_null () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_null () noexcept
 
simdjson_warn_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_negative () noexcept
simdjson_warn_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_negative () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_integer () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_integer () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< number_typesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_number_type () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< number_typesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_number_type () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< numbersimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_number () noexcept
simdjson_warn_unused simdjson_inline simdjson_result< numbersimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_number () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_string (bool check_trailing, bool allow_replacement) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_string (bool check_trailing, bool allow_replacement) noexcept
 
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_string (string_type &receiver, bool check_trailing, bool allow_replacement) noexcept
template<typename string_type >
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_string (string_type &receiver, bool check_trailing, bool allow_replacement) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_wobbly_string (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_wobbly_string (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< raw_json_stringsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_raw_json_string (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< raw_json_stringsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_raw_json_string (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< uint64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64 (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64 (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< uint64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64_in_string (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64_in_string (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< int64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64 (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64 (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< int64_tsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64_in_string (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64_in_string (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< doublesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< doublesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double_in_string (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double_in_string (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_bool (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_bool (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_negative () noexcept
simdjson_warn_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_negative () noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_integer (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_integer (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< number_typesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_number_type (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< number_typesimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_number_type (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< numbersimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_number (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< numbersimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_number (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline simdjson_result< boolsimdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_null (bool check_trailing) noexcept
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_null (bool check_trailing) noexcept
 
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::error () const noexcept
simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::error () const noexcept
 
simdjson_inline uint8_t *& simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::string_buf_loc () noexcept
simdjson_inline uint8_t *& simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::string_buf_loc () noexcept
 
simdjson_inline const json_iterator & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::json_iter () const noexcept
simdjson_inline const json_iterator & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::json_iter () const noexcept
 
simdjson_inline json_iterator & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::json_iter () noexcept
simdjson_inline json_iterator & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::json_iter () noexcept
 
simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::assert_is_valid () const noexcept
simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::assert_is_valid () const noexcept
 
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_valid () const noexcept
simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_valid () const noexcept
 

Detailed Description

@@ -193,7 +193,7 @@ Functions
- + @@ -247,7 +247,7 @@ Functions
void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::assert_is_valid void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::assert_is_valid ( ) const
- + @@ -274,7 +274,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_bool simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_bool ( )
- + @@ -301,7 +301,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double ( )
- + @@ -328,7 +328,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double_in_string simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_double_in_string ( )
- + @@ -355,7 +355,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64 simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64 ( )
- + @@ -463,9 +463,9 @@ Functions @@ -309,7 +309,7 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64_in_string simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_int64_in_string ( )
- + - + @@ -491,9 +491,9 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_bool simdjson_warn_unused simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_bool (bool bool  check_trailing)
- + - + @@ -519,9 +519,9 @@ Functions
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double (bool bool  check_trailing)
- + - + @@ -547,9 +547,9 @@ Functions diff --git a/namespacemembers.html b/namespacemembers.html index 5a1d8a8d6..e6abc352e 100644 --- a/namespacemembers.html +++ b/namespacemembers.html @@ -29,7 +29,7 @@ diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html index e33785333..0f54a6345 100644 --- a/namespacemembers_enum.html +++ b/namespacemembers_enum.html @@ -29,7 +29,7 @@ diff --git a/namespacemembers_eval.html b/namespacemembers_eval.html index e0de5d9dd..bb9e2be95 100644 --- a/namespacemembers_eval.html +++ b/namespacemembers_eval.html @@ -29,7 +29,7 @@ diff --git a/namespacemembers_func.html b/namespacemembers_func.html index 75ed78b1c..e264dc92e 100644 --- a/namespacemembers_func.html +++ b/namespacemembers_func.html @@ -29,7 +29,7 @@ diff --git a/namespacemembers_type.html b/namespacemembers_type.html index e5d598938..75c282215 100644 --- a/namespacemembers_type.html +++ b/namespacemembers_type.html @@ -29,7 +29,7 @@ diff --git a/namespacemembers_vars.html b/namespacemembers_vars.html index 90ace2195..1cfa3e979 100644 --- a/namespacemembers_vars.html +++ b/namespacemembers_vars.html @@ -29,7 +29,7 @@ diff --git a/namespaces.html b/namespaces.html index 4dc5ba93c..be7597f79 100644 --- a/namespaces.html +++ b/namespaces.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson.html b/namespacesimdjson.html index b68ff7b51..91ab003ee 100644 --- a/namespacesimdjson.html +++ b/namespacesimdjson.html @@ -29,7 +29,7 @@ @@ -248,8 +248,8 @@ Enumerations
simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double_in_string simdjson_warn_unused simdjson_inline simdjson_result< double > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_double_in_string (bool bool  check_trailing)
- + - + @@ -575,9 +575,9 @@ Functions @@ -118,28 +118,24 @@ $(document).ready(function(){initNavTree('md_doc_2dom.html',''); initResizable()
  • Padding and Temporary Copies
  • Performance Tips
  • -

    +

    DOM vs On-Demand

    The simdjson library offers two distinct approaches on how to access a JSON document. We support a conventional Document-Object-Model (DOM) front-end. In such a scenario, the JSON document is entirely parsed, validated and materialized in memory as the first step. The programmer may then access the parsed data using this in-memory model.

    On-Demand is a different model where you parse just what you need, directly into your own data structure. The On-Demand approach, when well tuned, can provide superior performance. We refer you to the On-Demand documentation for further details.

    -

    +

    The Basics: Loading and Parsing JSON Documents using the DOM front-end

    The simdjson library offers a simple DOM tree API, which you can access by creating a dom::parser and calling the load() method:

    -
    ++
    -
    dom::parser parser;
    +
    dom::parser parser;
    dom::element doc = parser.load(filename); // load and parse a file

    Or by creating a padded string (for efficiency reasons, simdjson requires a string with SIMDJSON_PADDING bytes at the end) and calling parse():

    -
    ++
    -
    dom::parser parser;
    +
    dom::parser parser;
    dom::element doc = parser.parse("[1,2,3]"_padded); // parse a string, the _padded suffix creates a simdjson::padded_string instance

    You can copy your data directly on a simdjson::padded_string as follows:

    -
    ++
    -
    const char * data = "my data"; // 7 bytes
    +
    const char * data = "my data"; // 7 bytes
    simdjson::padded_string my_padded_data(data, 7); // copies to a padded buffer
    String with extra allocation for ease of use with parser::parse()

    Or as follows...

    -
    ++
    -
    std::string data = "my data";
    +
    std::string data = "my data";
    simdjson::padded_string my_padded_data(data); // copies to a padded buffer

    You can then parse the JSON document from the simdjson::padded_string instance:

    @@ -148,9 +144,8 @@ The Basics: Loading and Parsing JSON Documents using the DOM front-end
    A persistent document parser.
    Definition parser.h:30
    simdjson_result< element > parse(const uint8_t *buf, size_t len, bool realloc_if_needed=true) &noexcept
    Parse a JSON document and return a temporary reference to it.
    Definition parser-inl.h:153

    Whenever you pass an std::string reference to parser::parse, the parser will access the bytes beyond the end of the string but before the end of the allocated memory (std::string::capacity()). If you are using a sanitizer that checks for reading uninitialized bytes or std::string's container-overflow checks, you may encounter sanitizer warnings. You can safely ignore these warnings. Or you can call simdjson::pad(std::string&) to pad the string with SIMDJSON_PADDING spaces: this function returns a simdjson::padding_string_view which can be be passed to the parser's iterator function:

    -
    ++
    -
    std::string json = "[1]";
    -
    dom::element doc = parser.parse(simdjson::pad(json));
    +
    std::string json = "[1]";
    +
    dom::element doc = parser.parse(simdjson::pad(json));
    padded_string_view pad(std::string &s) noexcept
    Create a padded_string_view from a string.

    The parsed document resulting from the parser.load and parser.parse calls depends on the parser instance. Thus the parser instance must remain in scope. Furthermore, you must have at most one parsed document in play per parser instance. You cannot copy a parser instance, you may only move it.

    If you need to keep a document around long term, you can keep or move the parser instance. Note that moving a parser instance, or keeping one in a movable data structure like vector or map, can cause any outstanding element, object or array instances to be invalidated. The element, object or array instances are mere thin wrappers akin to an std::vector<int>::iterator: they are invalid when default constructed, they must be tied to a valid document instance. If you need to store a parser in a movable data structure, you should use a std::unique_ptr to avoid this invalidation(e.g., std::unique_ptr<dom::parser> parser(new dom::parser{})).

    @@ -158,19 +153,18 @@ The Basics: Loading and Parsing JSON Documents using the DOM front-end

    For best performance, a parser instance should be reused over several files: otherwise you will needlessly reallocate memory, an expensive process. It is also possible to avoid entirely memory allocations during parsing when using simdjson. See our performance notes for details.

    If you need a lower-level interface, you may call the function parser.parse(const char * p, size_t l) on a pointer p while specifying the length of your input l in bytes.

    Windows-specific: Windows users who need to read files with non-ANSI characters in the name should set their code page to UTF-8 (65001). This should be the default with Windows 11 and better. Further, they may use the AreFileApisANSI function to determine whether the filename is interpreted using the ANSI or the system default OEM codepage, and they may call SetFileApisToOEM accordingly.

    -

    +

    Using the Parsed JSON

    Once you have an element, you can navigate it with idiomatic C++ iterators, operators and casts.

    • Extracting Values (with exceptions): You can cast a JSON element to a native type: double(element) or double x = json_element. This works for double, uint64_t, int64_t, bool, dom::object and dom::array. An exception (simdjson::simdjson_error) is thrown if the cast is not possible.
    • -
    • Extracting Values (without exceptions): You can use a variant usage of get() with error codes to avoid exceptions. You first declare the variable of the appropriate type (double, uint64_t, int64_t, bool, std::string_view, dom::object and dom::array) and pass it by reference to get() which gives you back an error code: e.g.,
      ++
      - -
      simdjson::padded_string numberstring = "1.2"_padded; // our JSON input ("1.2")
      - -
      double value; // variable where we store the value to be parsed
      -
      error = parser.parse(numberstring).get(value);
      -
      if (error) { std::cerr << error << std::endl; return EXIT_FAILURE; }
      -
      std::cout << "I parsed " << value << " from " << numberstring.data() << std::endl;
      +
    • Extracting Values (without exceptions): You can use a variant usage of get() with error codes to avoid exceptions. You first declare the variable of the appropriate type (double, uint64_t, int64_t, bool, std::string_view, dom::object and dom::array) and pass it by reference to get() which gives you back an error code: e.g.,
      +
      simdjson::padded_string numberstring = "1.2"_padded; // our JSON input ("1.2")
      + +
      double value; // variable where we store the value to be parsed
      +
      error = parser.parse(numberstring).get(value);
      +
      if (error) { std::cerr << error << std::endl; return EXIT_FAILURE; }
      +
      std::cout << "I parsed " << value << " from " << numberstring.data() << std::endl;
      error_code
      All possible errors returned by simdjson.
      Definition error.h:19
      const char * data() const noexcept
      The string data.
      The strings contain unescaped valid UTF-8 strings: no unmatched surrogate is allowed. Internally, numbers are stored as either 64-bit integers or 64-bit floating-point numbers. Thus it is possible to get the full 64-bit integer range (either signed or unsigned). By default, the string -0 is parsed as the integer 0 as in Python or C++. If you set the macro SIMDJSON_MINUS_ZERO_AS_FLOAT to 1 when building simdjson, you can get that -0 is mapped to -0.0 as in JavaScript. You can get the desired effect by building simdjson with cmake setting the SIMDJSON_MINUS_ZERO_AS_FLOAT to on: cmake -B build -D SIMDJSON_MINUS_ZERO_AS_FLOAT=ON.
    • @@ -184,11 +178,10 @@ Using the Parsed JSON
    • Checking an Element Type: You can check an element's type with element.type(). It returns an element_type with values such as simdjson::dom::element_type::ARRAY, simdjson::dom::element_type::OBJECT, simdjson::dom::element_type::INT64, simdjson::dom::element_type::UINT64,simdjson::dom::element_type::DOUBLE, simdjson::dom::element_type::STRING, simdjson::dom::element_type::BOOL or, simdjson::dom::element_type::NULL_VALUE.
    • Output to streams and strings: Given a document or an element (or node) out of a JSON document, you can output a minified string version using the C++ stream idiom (out << element). You can also request the construction of a minified string version (simdjson::minify(element)) or a prettified string version (simdjson::prettify(element)). Numbers are serialized as 64-bit floating-point numbers (double).
    -

    +

    Examples

    The following code illustrates all of the above:

    -
    ++
    -
    auto cars_json = R"( [
    +
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    @@ -217,8 +210,7 @@ Examples
    }
    }

    Here is a different example illustrating the same ideas:

    -
    ++
    -
    auto abstract_json = R"( [
    +
    auto abstract_json = R"( [
    { "12345" : {"a":12.34, "b":56.78, "c": 9998877} },
    { "12545" : {"a":11.44, "b":12.78, "c": 11111111} }
    ] )"_padded;
    @@ -235,17 +227,15 @@ Examples
    }
    }

    And another one:

    -
    ++
    -
    auto abstract_json = R"(
    -
    { "str" : { "123" : {"abc" : 3.14 } } } )"_padded;
    -
    dom::parser parser;
    -
    double v = parser.parse(abstract_json)["str"]["123"]["abc"];
    -
    cout << "number: " << v << endl;
    -

    +
    auto abstract_json = R"(
    +
    { "str" : { "123" : {"abc" : 3.14 } } } )"_padded;
    +
    dom::parser parser;
    +
    double v = parser.parse(abstract_json)["str"]["123"]["abc"];
    +
    cout << "number: " << v << endl;
    +

    C++17 Support

    While the simdjson library can be used in any project using C++ 11 and above, field iteration has special support C++ 17's destructuring syntax. For example:

    -
    ++
    -
    padded_string json = R"( { "foo": 1, "bar": 2 } )"_padded;
    +
    padded_string json = R"( { "foo": 1, "bar": 2 } )"_padded;
    dom::parser parser;
    dom::object object; // invalid until the get() succeeds
    auto error = parser.parse(json).get(object);
    @@ -254,8 +244,7 @@ C++17 Support
    cout << key << " = " << value << endl;
    }

    For comparison, here is the C++ 11 version of the same code:

    -
    ++
    -
    // C++ 11 version for comparison
    +
    // C++ 11 version for comparison
    padded_string json = R"( { "foo": 1, "bar": 2 } )"_padded;
    dom::parser parser;
    dom::object object; // invalid until the get() succeeds
    @@ -264,11 +253,10 @@ C++17 Support
    for (dom::key_value_pair field : object) {
    cout << field.key << " = " << field.value << endl;
    }
    -

    +

    C++20 Support

    simdjson library also supports some C++20 feature including std::ranges:

    -
    ++
    -
    auto cars_json = R"( [
    +
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    @@ -278,11 +266,10 @@ C++20 Support
    for (auto car : parser.parse(cars_json).get_array() | std::views::transform(justmodel)) {
    std::cout << car << std::endl;
    }
    -

    +

    JSON Pointer

    The simdjson library also supports JSON pointer through the at_pointer() method, letting you reach further down into the document in a single call:

    -
    ++
    -
    auto cars_json = R"( [
    +
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    @@ -293,8 +280,7 @@ JSON Pointer

    A JSON Pointer expression is a sequence of segments each starting with the '/' character. Within arrays, an integer index allows you to select the indexed node. Within objects, the string value of the key allows you to select the value. If your keys contain the characters '/' or '~', they must be escaped as '~1' and '~0' respectively. An empty JSON Pointer expression refers to the whole document.

    We also extend the JSON Pointer support to include relative paths. You can apply a JSON Pointer expression to any node and the path gets interpreted relatively, as if the current node were a whole JSON document.

    Consider the following example:

    -
    ++
    -
    auto cars_json = R"( [
    +
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    @@ -309,12 +295,11 @@ JSON Pointer
    double x = car.at_pointer("/tire_pressure/1");
    cout << x << endl; // Prints 39.9, 31 and 30
    }
    -

    +

    JSONPath

    The simdjson library supports a subset of JSONPath (RFC 9535) through the at_path() method, allowing you to reach further into the document in a single call. The subset of JSONPath that is implemented is the subset that is trivially convertible into the JSON Pointer format, using . to access a field and [] to access a specific index.

    Consider the following example:

    -
    ++
    -
    auto cars_json = R"( [
    +
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    @@ -328,8 +313,7 @@ JSONPath
    if(error) { /*won't happen*/ }
    cout << p << endl; // Prints 39.9

    We also support the $ prefix. When you start a JSONPath expression with $, you are indicating that the path starts from the root of the JSON document. E.g.,

    -
    ++
    -
    auto json = R"( { "c" :{ "foo": { "a": [ 10, 20, 30 ] }}, "d": { "foo2": { "a": [ 10, 20, 30 ] }} , "e": 120 })"_padded;
    +
    auto json = R"( { "c" :{ "foo": { "a": [ 10, 20, 30 ] }}, "d": { "foo2": { "a": [ 10, 20, 30 ] }} , "e": 120 })"_padded;
    dom::parser parser;
    dom::element doc;
    auto error = parser.parse(json).get(doc);
    @@ -343,11 +327,11 @@ JSONPath
    if(x != 20) { /*won't happen*/ }
    x = obj.at_path("$.d.foo2.a.2");
    if(error) { /*won't happen*/ }
    -

    +

    Using <tt>at_path_with_wildcard</tt> for JSONPath Queries

    The at_path_with_wildcard function in simdjson extends the JSONPath querying capabilities by supporting wildcard expressions (*) in JSON paths. This allows users to retrieve multiple elements from a JSON document in a single query. For example, you can use $.address.* to fetch all fields within the address object or $.phoneNumbers[*].numbers[*] to retrieve all phone numbers across multiple objects in an array.

    The * wildcard matches all elements at a specific level. For instance, $.address.* retrieves all key-value pairs in the address object, while $.*.streetAddress fetches all streetAddress fields across objects at the root level. You can combine wildcards with array indexing. For example, $.phoneNumbers[*].numbers[1] retrieves the second number from each numbers array in the phoneNumbers array. If no elements match the wildcard query, the function returns an empty result. For instance, querying $.empty_object.* or $.empty_array.* will yield an empty set.

    -

    +

    Example Usage

    Here is an example demonstrating the use of at_path_with_wildcard:

    simdjson::padded_string json_string = R"(
    @@ -373,7 +357,7 @@ Example Usage
    })"_padded;
    dom::parser parser;
    -
    dom::element parsed_json = parser.parse(json_string);
    +
    dom::element parsed_json = parser.parse(json_string);
    std::vector<dom::element> values;
    // Fetch all fields in the address object
    @@ -405,11 +389,10 @@ Example Usage
    }
    @ number
    A JSON number ( 1 or -2.3 or 4.5e6 ...)

    This function is particularly useful for extracting data from complex JSON structures with nested arrays and objects. By leveraging wildcards, you can simplify your queries and reduce the need for multiple iterations.

    -

    +

    Error Handling

    All simdjson APIs that can fail return simdjson_result<T>, which is a <value, error_code> pair. You can retrieve the value with .get(), like so:

    -
    ++
    -
    dom::element doc;
    +
    dom::element doc;
    auto error = parser.parse(json).get(doc);
    if (error) { cerr << error << endl; exit(1); }

    When there is no error, the error code simdjson::SUCCESS is returned: it evaluates as false as a Boolean. We have several error codes to indicate errors, they all evaluate to true as a Boolean: your software should not generally not depend on exact error codes. We may change the error codes in future releases and the exact error codes could vary depending on your system.

    @@ -428,8 +411,7 @@ Error Handling
    }
    }

    Our program loads the file, selects value corresponding to key "search_metadata" which expected to be an object, and then it selects the key "count" within that object.

    -
    ++
    -
    #include <iostream>
    +
    #include <iostream>
    #include "simdjson.h"
    int main(void) {
    @@ -454,8 +436,7 @@ Error Handling
  • Get the id of the tweet using ["id"]. We expect the value to be a non-negative integer.
  • Observe how we use the at method when querying an index into an array, and not the bracket operator.

    -
    ++
    -
    #include <iostream>
    +
    #include <iostream>
    #include "simdjson.h"
    int main(void) {
    @@ -471,11 +452,10 @@ Error Handling
    }
    simdjson_result< element > at(const std::string_view json_pointer) const noexcept
    Version 0.4 of simdjson used an incorrect interpretation of the JSON Pointer standard and allowed the...

    The at() method has linear-time complexity: it should not be used to iterate over the content of an array.

    -

    +

    Error Handling Example

    This is how the example in "Using the Parsed JSON" could be written using only error code checking:

    -
    ++
    -
    auto cars_json = R"( [
    +
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    @@ -518,8 +498,7 @@ Error Handling Example
    }
    }

    Here is another example:

    -
    ++
    -
    auto abstract_json = R"( [
    +
    auto abstract_json = R"( [
    { "12345" : {"a":12.34, "b":56.78, "c": 9998877} },
    { "12545" : {"a":11.44, "b":12.78, "c": 11111111} }
    ] )"_padded;
    @@ -548,18 +527,16 @@ Error Handling Example
    }
    }

    And another one:

    -
    ++
    -
    auto abstract_json = R"(
    -
    { "str" : { "123" : {"abc" : 3.14 } } } )"_padded;
    -
    dom::parser parser;
    -
    double v;
    -
    auto error = parser.parse(abstract_json)["str"]["123"]["abc"].get(v);
    -
    if (error) { cerr << error << endl; exit(1); }
    -
    cout << "number: " << v << endl;
    +
    auto abstract_json = R"(
    +
    { "str" : { "123" : {"abc" : 3.14 } } } )"_padded;
    +
    dom::parser parser;
    +
    double v;
    +
    auto error = parser.parse(abstract_json)["str"]["123"]["abc"].get(v);
    +
    if (error) { cerr << error << endl; exit(1); }
    +
    cout << "number: " << v << endl;

    Notice how we can string several operations (parser.parse(abstract_json)["str"]["123"]["abc"].get(v)) and only check for the error once, a strategy we call error chaining.

    The next two functions will take as input a JSON document containing an array with a single element, either a string or a number. They return true upon success.

    -
    ++
    - +
    bool parse_double(const char *j, double &d) {
    auto error = parser.parse(j, std::strlen(j))
    @@ -580,15 +557,13 @@ Error Handling Example
    }

    To ensure you don't write any code that uses exceptions, compile with SIMDJSON_EXCEPTIONS=OFF. For example, if including the project via cmake:

    target_compile_definitions(simdjson PUBLIC SIMDJSON_EXCEPTIONS=OFF)
    -

    +

    Exceptions

    Users more comfortable with an exception flow may choose to directly cast the simdjson_result<T> to the desired type:

    -
    ++
    -
    dom::element doc = parser.parse(json); // Throws an exception if there was an error!
    +
    dom::element doc = parser.parse(json); // Throws an exception if there was an error!

    When used this way, a simdjson_error exception will be thrown if an error occurs, preventing the program from continuing if there was an error.

    If one is willing to trigger exceptions, it is possible to write simpler code:

    -
    ++
    -
    #include <iostream>
    +
    #include <iostream>
    #include "simdjson.h"
    int main(void) {
    @@ -597,11 +572,10 @@ Exceptions
    std::cout << "ID: " << tweets["statuses"].at(0)["id"] << std::endl;
    return EXIT_SUCCESS;
    }
    -

    +

    Tree Walking and JSON Element Types

    Sometimes you don't necessarily have a document with a known type, and are trying to generically inspect or walk over JSON elements. To do that, you can use iterators and the type() method. For example, here's a quick and dirty recursive function that verbosely prints the JSON document as JSON (* ignoring nuances like trailing commas and escaping strings, for brevity's sake):

    -
    ++
    -
    void print_json(dom::element element) {
    +
    void print_json(dom::element element) {
    switch (element.type()) {
    case dom::element_type::ARRAY:
    cout << "[";
    @@ -644,14 +618,13 @@ Tree Walking and JSON Element Types
    dom::parser parser;
    print_json(parser.load("twitter.json"));
    }
    -

    +

    Reusing the parser for maximum efficiency

    If you're using simdjson to parse multiple documents, or in a loop, you should make a parser once and reuse it. The simdjson library will allocate and retain internal buffers between parses, keeping buffers hot in cache and keeping memory allocation and initialization to a minimum. In this manner, you can parse terabytes of JSON data without doing any new allocation.

    -
    ++
    -
    dom::parser parser;
    +
    dom::parser parser;
    // This initializes buffers and a document big enough to handle this JSON.
    -
    dom::element doc = parser.parse("[ true, false ]"_padded);
    +
    dom::element doc = parser.parse("[ true, false ]"_padded);
    cout << doc << endl;
    // This reuses the existing buffers, and reuses and *overwrites* the old document
    @@ -668,48 +641,46 @@ Reusing the parser for maximum efficiency

    You are only borrowing the document from the simdjson parser. Don't keep it long term!

    This is key: don't keep the document&, dom::element, dom::array, dom::object or string_view objects you get back from the API. Convert them to C++ native values, structs and arrays that you own.

    -

    +

    Server Loops: Long-Running Processes and Memory Capacity

    The simdjson library automatically expands its memory capacity when larger documents are parsed, so that you don't unexpectedly fail. In a short process that reads a bunch of files and then exits, this works pretty flawlessly.

    Server loops, though, are long-running processes that will keep the parser around forever. This means that if you encounter a really, really large document, simdjson will not resize back down. The simdjson library lets you adjust your allocation strategy to prevent your server from growing without bound:

    • You can set a max capacity when constructing a parser:

      -
      ++
      -
      dom::parser parser(1000*1000); // Never grow past documents > 1MB
      -
      for (web_request request : listen()) {
      -
      dom::element doc;
      -
      auto error = parser.parse(request.body).get(doc);
      -
      // If the document was above our limit, emit 413 = payload too large
      -
      if (error == CAPACITY) { request.respond(413); continue; }
      -
      // ...
      -
      }
      +
      dom::parser parser(1000*1000); // Never grow past documents > 1MB
      +
      for (web_request request : listen()) {
      +
      dom::element doc;
      +
      auto error = parser.parse(request.body).get(doc);
      +
      // If the document was above our limit, emit 413 = payload too large
      +
      if (error == CAPACITY) { request.respond(413); continue; }
      +
      // ...
      +
      }

      This parser will grow normally as it encounters larger documents, but will never pass 1MB.

    • You can set a fixed capacity that never grows, as well, which can be excellent for predictability and reliability, since simdjson will never call malloc after startup!

      -
      ++
      -
      dom::parser parser(0); // This parser will refuse to automatically grow capacity
      -
      auto error = parser.allocate(1000*1000); // This allocates enough capacity to handle documents <= 1MB
      -
      if (error) { cerr << error << endl; exit(1); }
      +
      dom::parser parser(0); // This parser will refuse to automatically grow capacity
      +
      auto error = parser.allocate(1000*1000); // This allocates enough capacity to handle documents <= 1MB
      +
      if (error) { cerr << error << endl; exit(1); }
      -
      for (web_request request : listen()) {
      -
      dom::element doc;
      -
      error = parser.parse(request.body).get(doc);
      -
      // If the document was above our limit, emit 413 = payload too large
      -
      if (error == CAPACITY) { request.respond(413); continue; }
      -
      // ...
      -
      }
      +
      for (web_request request : listen()) {
      +
      dom::element doc;
      +
      error = parser.parse(request.body).get(doc);
      +
      // If the document was above our limit, emit 413 = payload too large
      +
      if (error == CAPACITY) { request.respond(413); continue; }
      +
      // ...
      +
      }
    -

    +

    Best Use of the DOM API

    The simdjson API provides access to the JSON DOM (document-object-model) content as a tree of dom::element instances, each representing an object, an array or an atomic type (null, true, false, number). These dom::element instances are lightweight objects (e.g., spanning 16 bytes) and it might be advantageous to pass them by value, as opposed to passing them by reference or by pointer.

    -

    +

    Padding and Temporary Copies

    The simdjson function parser.parse reads data from a padded buffer, containing SIMDJSON_PADDING extra bytes added at the end. If you are passing a padded_string to parser.parse or loading the JSON directly from disk (parser.load), padding is automatically handled. When calling parser.parse on a pointer (e.g., parser.parse(my_char_pointer, my_length_in_bytes)) a temporary copy is made by default with adequate padding and you, again, do not need to be concerned with padding.

    Some users may not be able use our padded_string class or to load the data directly from disk (parser.load). They may need to pass data pointers to the library. If these users wish to avoid temporary copies and corresponding temporary memory allocations, they may want to call parser.parse with the realloc_if_needed parameter set to false (e.g., parser.parse(my_char_pointer, my_length_in_bytes, false)). In such cases, they need to ensure that there are at least SIMDJSON_PADDING extra bytes at the end that can be safely accessed and read. They do not need to initialize the padded bytes to any value in particular. The following example is safe:

    -

    C++ const char *json = R"({"key":"value"})"; const size_t json_len = std::strlen(json); std::unique_ptr<char[]> padded_json_copy{new char[json_len + SIMDJSON_PADDING]}; memcpy(padded_json_copy.get(), json, json_len); memset(padded_json_copy.get() + json_len, 0, SIMDJSON_PADDING); simdjson::dom::parser parser; simdjson::dom::element element = parser.parse(padded_json_copy.get(), json_len, false); `

    +

    cpp const char *json = R"({"key":"value"})"; const size_t json_len = std::strlen(json); std::unique_ptr<char[]> padded_json_copy{new char[json_len + SIMDJSON_PADDING]}; memcpy(padded_json_copy.get(), json, json_len); memset(padded_json_copy.get() + json_len, 0, SIMDJSON_PADDING); simdjson::dom::parser parser; simdjson::dom::element element = parser.parse(padded_json_copy.get(), json_len, false); `

    Setting the realloc_if_needed parameter false in this manner may lead to better performance since copies are avoided, but it requires that the user takes more responsibilities: the simdjson library cannot verify that the input buffer was padded with SIMDJSON_PADDING extra bytes.

    -

    +

    Performance Tips

    • For release builds, we recommend setting NDEBUG pre-processor directive when compiling the simdjson library. Importantly, using the optimization flags -O2 or -O3 under GCC and LLVM clang does not set the NDEBUG directive, you must set it manually (e.g., -DNDEBUG).
    • diff --git a/md_doc_2implementation-selection.html b/md_doc_2implementation-selection.html index 816749a1f..6ad541404 100644 --- a/md_doc_2implementation-selection.html +++ b/md_doc_2implementation-selection.html @@ -29,7 +29,7 @@
    @@ -105,7 +105,7 @@ $(document).ready(function(){initNavTree('md_doc_2implementation-selection.html'
  • Manually Selecting the Implementation
  • Checking that an Implementation can Run on your System
  • -

    +

    Overview

    The simdjson library takes advantage of SIMD instruction sets such as NEON, SSE and AVX to achieve much of its speed. Because these instruction sets work differently, simdjson has to compile a different version of the JSON parser for different CPU architectures, often with different algorithms to take better advantage of a given CPU!

    The current implementations are:

      @@ -121,49 +121,43 @@ Overview

      In many cases, you don't know where your compiled binary is going to run, so simdjson automatically compiles all the implementations into the executable. On Intel, it will include 4 implementations (icelake, haswell, westmere and fallback), on 64-bit ARM it will include just one since running dispatching is unnecessary, and on PPC it will include 2 (ppc64 and fallback).

      If you know more about where you're going to run and want to save the space, you can disable any of these implementations at compile time with -DSIMDJSON_IMPLEMENTATION_X=0 (where X is ICELAKE, HASWELL, WESTMERE, ARM64, PPC64, LSX, LASX and FALLBACK).

      The simdjson library automatically sets header flags for each implementation as it compiles; there is no need to set architecture-specific flags yourself (e.g., -mavx2, /AVX2 or -march=haswell), and it may even break runtime dispatch and your binaries will fail to run on older processors. Note: for POWER9 processors make sure you compile it with -mcpu=power9 and -mtune=power9 to get maximum performance.

      -

      +

      Runtime CPU Detection

      When you first use simdjson, it will detect the CPU you're running on, and swap over to the fastest implementation for it. This is a small, one-time cost and for many people will be paid the first time they call parse() or load().

      -

      +

      Inspecting the Detected Implementation

      You can check what implementation is running with active_implementation:

      -
      ++
      -
      cout << "simdjson v" << SIMDJSON_VERSION << endl;
      +
      cout << "simdjson v" << SIMDJSON_VERSION << endl;
      cout << "Detected the best implementation for your machine: " << simdjson::get_active_implementation()->name();
      cout << "(" << simdjson::get_active_implementation()->description() << ")" << endl;
      SIMDJSON_DLLIMPORTEXPORT internal::atomic_ptr< const implementation > & get_active_implementation()
      The active implementation.

      Implementation detection will happen in this case when you first call name().

      -

      +

      Querying Available Implementations

      You can list all available implementations, regardless of which one was selected:

      -
      ++
      -
      for (auto implementation : simdjson::get_available_implementations()) {
      +
      for (auto implementation : simdjson::get_available_implementations()) {
      cout << implementation->name() << ": " << implementation->description() << endl;
      }
      The top level simdjson namespace, containing everything the library provides.
      Definition base.h:8

      And look them up by name:

      -
      ++
      -
      cout << simdjson::get_available_implementations()["fallback"]->description() << endl;
      +
      cout << simdjson::get_available_implementations()["fallback"]->description() << endl;
      SIMDJSON_DLLIMPORTEXPORT const internal::available_implementation_list & get_available_implementations()
      The list of available implementations compiled into simdjson.

      When an implementation is not available, the bracket call simdjson::get_available_implementations()[name] will return the null pointer.

      The available implementations have been compiled but may not necessarily be run safely on your system see Checking that an Implementation can Run on your System.

      -

      +

      Manually Selecting the Implementation

      If you're trying to do performance tests or see how different implementations of simdjson run, you can select the CPU architecture yourself:

      -
      ++
      -
      // Use the fallback implementation, even though my machine is fast enough for anything
      +
      // Use the fallback implementation, even though my machine is fast enough for anything

      You are responsible for ensuring that the requirements of the selected implementation match your current system. Furthermore, you should check that the implementation is available before setting it to simdjson::get_active_implementation() by comparing it with the null pointer.

      -
      ++
      -
      auto my_implementation = simdjson::get_available_implementations()["haswell"];
      +
      auto my_implementation = simdjson::get_available_implementations()["haswell"];
      if (! my_implementation) { exit(1); }
      if (! my_implementation->supported_by_runtime_system()) { exit(1); }
      -

      +

      Checking that an Implementation can Run on your System

      You should call supported_by_runtime_system() to compare the processor's features with the need of the implementation.

      -
      ++
      -
      for (auto implementation : simdjson::get_available_implementations()) {
      +
      for (auto implementation : simdjson::get_available_implementations()) {
      if (implementation->supported_by_runtime_system()) {
      cout << implementation->name() << ": " << implementation->description() << endl;
      }
      diff --git a/md_doc_2iterate__many.html b/md_doc_2iterate__many.html index 4f796f76d..0d4a3e947 100644 --- a/md_doc_2iterate__many.html +++ b/md_doc_2iterate__many.html @@ -29,7 +29,7 @@
    @@ -102,7 +102,7 @@ $(document).ready(function(){initNavTree('md_doc_2iterate__many.html',''); initR
    {"text":"c"}
    ...

    ... you want to read the entries (individual JSON documents) as quickly and as conveniently as possible. Importantly, the input might span several gigabytes, but you want to use a small (fixed) amount of memory. Ideally, you'd also like the parallelize the processing (using more than one core) to speed up the process.

    -

    +

    Contents

    • Motivations
    • @@ -119,19 +119,19 @@ Contents
    • Incomplete streams
    • C++20 features
    -

    +

    Motivation

    The main motivation for this piece of software is to achieve maximum speed and offer a better quality of life in parsing files containing multiple small JSON documents.

    The JavaScript Object Notation (JSON) RFC7159 is a handy serialization format. However, when serializing a large sequence of values as an array, or a possibly indeterminate-length or never- ending sequence of values, JSON may be inconvenient.

    Consider a sequence of one million values, each possibly one kilobyte when encoded – roughly one gigabyte. It is often desirable to process such a dataset incrementally without having to first read all of it before beginning to produce results.

    -

    +

    How it works

    -

    +

    Context

    Before parsing anything, simdjson first preprocesses the JSON text by identifying all structural indexes (i.e. the starting position of any JSON value, as well as any important operators like ,, :, ] or }) and validating UTF8. This stage is referred to stage 1. However, during this process, simdjson has no knowledge of whether parsed a valid document, multiple documents, or even if the document is complete. Then, to iterate through the JSON text during parsing, we use what we call a JSON iterator that will navigate through the text using these structural indexes. This JSON iterator is not visible though, but it is the key component to make parsing work.

    Prior to iterate_many, most people who had to parse a multiline JSON file would proceed by reading the file line by line, using a utility function like std::getline or equivalent, and would then use the parse on each of those lines. From a performance point of view, this process is highly inefficient, in that it requires a lot of unnecessary memory allocation and makes use of the getline function, which is fundamentally slow, slower than the act of parsing with simdjson (more on this here).

    Unlike the popular parser RapidJson, our DOM does not require the buffer once the parsing job is completed, the DOM and the buffer are completely independent. The drawback of this architecture is that we need to allocate some additional memory to store our ParsedJson data, for every document inside a given file. Memory allocation can be slow and become a bottleneck, therefore, we want to minimize it as much as possible.

    -

    +

    Design

    To achieve a minimum amount of allocations, we opted for a design where we create only one parser object and therefore allocate its memory once, and then recycle it for every document in a given file. But, knowing that they often have largely varying size, we need to make sure that we allocate enough memory so that all the documents can fit. This value is what we call the batch size. As of right now, we need to manually specify a value for this batch size, it has to be at least as big as the biggest document in your file, but not too big so that it submerges the cached memory. The bigger the batch size, the fewer we need to make allocations. We found that 1MB is somewhat a sweet spot.

      @@ -141,13 +141,13 @@ Design
    1. Each time the user calls ++ to read the next document, the JSON iterator moves to the start the next document.
    2. When we reach the end of the batch, we call stage 1 on the next batch, starting from the end of the last document, and go to step 3.
    -

    +

    Threads

    But how can we make use of threads if they are available? We found a pretty cool algorithm that allows us to quickly identify the position of the last JSON document in a given batch. Knowing exactly where the end of the last document in the batch is, we can safely parse through the last document without any worries that it might be incomplete. Therefore, we can run stage 1 on the next batch concurrently while parsing the documents in the current batch. Running stage 1 in a different thread can, in best cases, remove almost entirely its cost and replaces it by the overhead of a thread, which is orders of magnitude cheaper. Ain't that awesome!

    Thread support is only active if thread supported is detected in which case the macro SIMDJSON_THREADS_ENABLED is set. You can also manually pass SIMDJSON_THREADS_ENABLED=1 flag to the library. Otherwise the library runs in single-thread mode.

    You should be consistent. If you link against the simdjson library built for multithreading (i.e., with SIMDJSON_THREADS_ENABLED), then you should build your application with multithreading system (setting SIMDJSON_THREADS_ENABLED=1 and linking against a thread library).

    A document_stream instance uses at most two threads: there is a main thread and a worker thread.

    -

    +

    Support

    Since we want to offer flexibility and not restrict ourselves to a specific file format, we support any file that contains any amount of valid JSON document, separated by one or more character that is considered whitespace by the JSON spec. Anything that is not whitespace will be parsed as a JSON document and could lead to failure.

    Whitespace Characters:

      @@ -160,14 +160,13 @@ Support

      Some official formats **(non-exhaustive list)**:

      -

      +

      API

      Example:

      -
      ++
      -
      auto json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )"_padded;
      +
      auto json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )"_padded;
      ondemand::parser parser;
      ondemand::document_stream docs = parser.iterate_many(json);
      for (auto doc : docs) {
      @@ -175,7 +174,7 @@ API
      }
      // Prints 1 2 3

      See basics.md for an overview of the API.

      -

      +

      Use cases

      From jsonlines.org:

        @@ -194,41 +193,40 @@ Use cases
        {"name": "Deloise", "wins": [["three of a kind", "5♣"]]}
      JSON Lines' biggest strength is in handling lots of similar nested data structures. One .jsonl file is easier to work with than a directory full of XML files.
    -

    +

    Tracking your position

    Some users would like to know where the document they parsed is in the input array of bytes. It is possible to do so by accessing directly the iterator and calling its current_index() method which reports the location (in bytes) of the current document in the input stream. You may also call the source() method to get a std::string_view instance on the document and error() to check if there were any error.

    Let us illustrate the idea with code:

    -
    ++
    -
    auto json = R"([1,2,3] {"1":1,"2":3,"4":4} [1,2,3] )"_padded;
    -
    simdjson::ondemand::parser parser;
    -
    simdjson::ondemand::document_stream stream;
    -
    auto error = parser.iterate_many(json).get(stream);
    -
    if (error) { /* do something */ }
    -
    auto i = stream.begin();
    -
    size_t count{0};
    -
    for(; i != stream.end(); ++i) {
    -
    auto doc = *i;
    -
    if (!i.error()) {
    -
    std::cout << "got full document at " << i.current_index() << std::endl;
    -
    std::cout << i.source() << std::endl;
    -
    count++;
    -
    } else {
    -
    std::cout << "got broken document at " << i.current_index() << std::endl;
    -
    return false;
    -
    }
    -
    }
    +
    auto json = R"([1,2,3] {"1":1,"2":3,"4":4} [1,2,3] )"_padded;
    +
    simdjson::ondemand::parser parser;
    +
    simdjson::ondemand::document_stream stream;
    +
    auto error = parser.iterate_many(json).get(stream);
    +
    if (error) { /* do something */ }
    +
    auto i = stream.begin();
    +
    size_t count{0};
    +
    for(; i != stream.end(); ++i) {
    +
    auto doc = *i;
    +
    if (!i.error()) {
    +
    std::cout << "got full document at " << i.current_index() << std::endl;
    +
    std::cout << i.source() << std::endl;
    +
    count++;
    +
    } else {
    +
    std::cout << "got broken document at " << i.current_index() << std::endl;
    +
    return false;
    +
    }
    +
    }

    This code will print:

    got full document at 0
    [1,2,3]
    got full document at 9
    {"1":1,"2":3,"4":4}
    got full document at 29
    [1,2,3]
    -

    +

    Incomplete streams

    Some users may need to work with truncated streams. The simdjson may truncate documents at the very end of the stream that cannot possibly be valid JSON (e.g., they contain unclosed strings, unmatched brackets, unmatched braces). After iterating through the stream, you may query the truncated_bytes() method which tells you how many bytes were truncated. If the stream is made of full (whole) documents, then you should expect truncated_bytes() to return zero.

    Consider the following example where a truncated document ({"key":"intentionally unclosed string</tt>) containing 39 bytes has been left within the stream. In such cases, the first two whole documents are parsed and returned, and the <tt>truncated_bytes()</tt> method returns 39. -@icode{C} ++ +@icode{cpp} auto json = R"([1,2,3] {"1":1,"2":3,"4":4} {"key":"intentionally unclosed string )"_padded; simdjson::ondemand::parser parser; simdjson::ondemand::document_stream stream; auto error = parser.iterate_many(json,json.size()).get(stream); if (error) { std::cerr << error << std::endl; return; } for(auto i = stream.begin(); i != stream.end(); ++i) { std::cout << i.source() << std::endl; } std::cout << stream.truncated_bytes() << " bytes "<< std::endl; // returns 39 bytes

    This will print:

    [1,2,3]
    {"1":1,"2":3,"4":4}
    @@ -236,23 +234,22 @@ Incomplete streams

    Importantly, you should only call truncated_bytes() after iterating through all of the documents since the stream cannot tell whether there are truncated documents at the very end when it may not have accessed that part of the data yet.

    -

    +

    Comma-separated documents

    We also support comma-separated documents, but with some performance limitations. The iterate_many function takes in an option to allow parsing of comma separated documents (which defaults on false). In this mode, the entire buffer is processed in one batch. Therefore, the total size of the document should not exceed the maximal capacity of the parser (4 GB). This mode also effectively disallow multithreading. It is therefore mostly suitable for not "very large" inputs. In this mode, the batch_size parameter is effectively ignored, as it is set to at least the document size.

    Example:

    -

    ++
    -
    auto json = R"( 1, 2, 3, 4, "a", "b", "c", {"hello": "world"} , [1, 2, 3])"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document_stream doc_stream;
    -
    // We pass '32' as the batch size, but it is a bogus parameter because, since
    -
    // we pass 'true' to the allow_comma parameter, the batch size will be set to at least
    -
    // the document size.
    -
    auto error = parser.iterate_many(json, 32, true).get(doc_stream);
    -
    if (error) { std::cerr << error << std::endl; return; }
    -
    for (auto doc : doc_stream) {
    -
    std::cout << doc.type() << std::endl;
    -
    }
    +

    auto json = R"( 1, 2, 3, 4, "a", "b", "c", {"hello": "world"} , [1, 2, 3])"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document_stream doc_stream;
    +
    // We pass '32' as the batch size, but it is a bogus parameter because, since
    +
    // we pass 'true' to the allow_comma parameter, the batch size will be set to at least
    +
    // the document size.
    +
    auto error = parser.iterate_many(json, 32, true).get(doc_stream);
    +
    if (error) { std::cerr << error << std::endl; return; }
    +
    for (auto doc : doc_stream) {
    +
    std::cout << doc.type() << std::endl;
    +
    }

    This will print:

    number
    @@ -266,15 +263,14 @@ Comma-separated documents
    array

    -

    +

    C++20 features

    In C++20, the standard introduced the notion of customization point. A customization point is a function or function object that can be customized for different types. It allows library authors to provide default behavior while giving users the ability to override this behavior for specific types.

    A tag_invoke function serves as a mechanism for customization points. It is not directly part of the C++ standard library but is often used in libraries that implement customization points. The tag_invoke function is typically a generic function that takes a tag type and additional arguments. The first argument is usually a tag type (often an empty struct) that uniquely identifies the customization point (e.g., deserialization of custom types in simdjson). Users or library providers can specialize tag_invoke for their types by defining it in the appropriate namespace, often inline namespace.

    You can deserialize you own data structures conveniently if your system supports C++20. When it is the case, the macro SIMDJSON_SUPPORTS_CONCEPTS will be set to 1 by the simdjson library.

    Consider a custom class Car:

    -

    ++
    -
    struct Car {
    +

    struct Car {
    std::string make;
    std::string model;
    int year;
    @@ -282,8 +278,7 @@ C++20 features
    };

    You may support deserializing directly from a JSON value or document to your own Car instance by defining a single tag_invoke function:

    -

    ++
    -
    namespace simdjson {
    +

    namespace simdjson {
    // This tag_invoke MUST be inside simdjson namespace
    template <typename simdjson_value>
    auto tag_invoke(deserialize_tag, simdjson_value &val, Car& car) {
    @@ -320,8 +315,7 @@ C++20 features

    Please see our main documentation (basics.md) under "Use `tag_invoke` for custom types (C++20)" for details about tag_invoke functions.

    Given a stream of JSON documents, you can add them to a data structure such as a std::vector<Car> like so if you support exceptions:

    -

    ++
    -
    padded_string json =
    +

    padded_string json =
    R"( { "make": "Toyota", "model": "Camry", "year": 2018,
    "tire_pressure": [ 40.1, 39.9 ] }
    { "make": "Kia", "model": "Soul", "year": 2012,
    @@ -338,16 +332,15 @@ C++20 features
    }

    Otherwise you may use this longer version for explicit handling of errors:

    -

    ++
    -
    std::vector<Car> cars;
    -
    for(auto doc : stream) {
    -
    Car c;
    -
    if ((error = doc.get<Car>().get(c))) {
    -
    std::cerr << simdjson::error_message(error); << std::endl;
    -
    return EXIT_FAILURE;
    -
    }
    -
    cars.push_back(c);
    -
    }
    +

    std::vector<Car> cars;
    +
    for(auto doc : stream) {
    +
    Car c;
    +
    if ((error = doc.get<Car>().get(c))) {
    +
    std::cerr << simdjson::error_message(error); << std::endl;
    +
    return EXIT_FAILURE;
    +
    }
    +
    cars.push_back(c);
    +
    }
    const char * error_message(error_code error) noexcept
    It is the convention throughout the code that the macro SIMDJSON_DEVELOPMENT_CHECKS determines whethe...
    Definition error-inl.h:25

    diff --git a/md_doc_2ondemand__design.html b/md_doc_2ondemand__design.html index f6d01f79f..cf885a9b9 100644 --- a/md_doc_2ondemand__design.html +++ b/md_doc_2ondemand__design.html @@ -29,7 +29,7 @@
    @@ -107,8 +107,7 @@ $(document).ready(function(){initNavTree('md_doc_2ondemand__design.html',''); in

    To achieve ease of use, we mimicked the form of a traditional DOM API: you can iterate over arrays, look up fields in objects, and extract native values like double, uint64_t, string and bool.

    To achieve performance, we introduced some key limitations that make the DOM API streaming: array/object iteration cannot be restarted, and string/number values can only be parsed once. If these limitations are acceptable to you, the On-Demand API could help you write maintainable applications with a computation efficiency that is difficult to surpass.

    A code example illustrates our API from a programmer's point of view:

    -
    ++
    -
    ondemand::parser parser;
    +
    ondemand::parser parser;
    auto doc = parser.iterate(json);
    for (auto tweet : doc["statuses"]) {
    std::string_view text = tweet["text"];
    @@ -157,13 +156,12 @@ $(document).ready(function(){initNavTree('md_doc_2ondemand__design.html',''); in
  • Validate What You Use: On-Demand deliberately validates the values you use and the structure leading to it, but nothing else. The goal is a guarantee that the value you asked for is the correct one and is not malformed: there must be no confusion over whether you got the right value.
  • To understand why On-Demand is different, it is helpful to review the major approaches to parsing and parser APIs in use today.

    -

    +

    DOM Parsers

    Many of the most usable, popular JSON APIs (including simdjson) deserialize into a DOM: an intermediate tree of objects, arrays and values. In this model, we convert the input data all at once into a tree-like structure (the DOM). The DOM is then accessed by the programmer like any other in-memory data structure. The resulting API let you refer to each array or object separately, using familiar techniques like iteration (for (auto value : array)) or indexing (object["key"]). In some cases, the values are even deserialized directly into familiar C++ constructs like vectors and maps.

    The DOM approach is conceptually simple and "programmer friendly". Using the DOM tree is often easy enough that many users process the DOM as-is instead of creating their own custom data structures.

    The DOM approach was the only way to parse JSON documents up to version 0.6 of the simdjson library. Our DOM API looks similar to our On-Demand example, except it calls parse instead of iterate:

    -
    ++
    -
    dom::parser parser;
    +
    dom::parser parser;
    auto doc = parser.parse(json);
    for (auto tweet : doc["statuses"]) {
    std::string_view text = tweet["text"];
    @@ -182,13 +180,12 @@ DOM Parsers
  • Performance drain from type blindness.
  • What the simdjson library demonstrates is that a DOM API may be quite fast indeed: we can parse files at speeds of several gigabytes per second. However, in some instances, it may be possible to achieve even higher speeds.

    -

    +

    Event-Based Parsers (SAX, SAJ, etc.)

    The event-based model (originally from the "Streaming API for XML") uses streaming to eliminate the cost of parsing and storing the entire JSON. In the event-based model, a core JSON engine parses the JSON document piece by piece, but instead of stuffing values in a DOM tree, it passes each value to a callback function, letting the user decide for themselves how to handle it. In such a model, the programmer may need to provide functions for all possible events (a number, a string, a new object, a new array, the array ends, the object ends, and so on). This allows programmers to work with much larger files without running out of memory.

    The drawback is complexity: event-based APIs generally have you define a single callback for each type (e.g. string_field(std::string_view key, std::string_view value)). Because of this, the programmer suffers from context blindness: when they find a string they have to check where it is before they know what to do with it. Is this string the text of the tweet, the screen name, or something else? Are we even in a tweet right now, or is this from some other place in the document entirely? Though an event-based approach may allow superior performance, it is demanding of the programmer who must efficiently keep track of its current state within the JSON input.

    The following is event-based example of the Twitter problem we have reviewed in the DOM and On-Demand examples. To make it short enough to use as an example at all, it has heavily redacted: it only solves a part of the problem (does not get user.screen_name), it has bugs (it does not handle sub-objects in a tweet at all), and it uses a theoretical, simple event-based API that minimizes ceremony.

    -
    ++
    -
    struct twitter_callbacks {
    +
    struct twitter_callbacks {
    bool in_statuses;
    bool in_tweet;
    std::string_view text;
    @@ -232,7 +229,7 @@ Event-Based Parsers (SAX, SAJ, etc.)
  • Lacks the safety of DOM: malformed documents could be ingested.
  • Though an event-based approach might have its niche uses, we believe that it is rarely ideally suited. We suspect that it is mostly used when performance and memory is a concern, and no other option (except DOM) is readily available.

    -

    +

    Schema-Based Parser Generators

    In a schema-based model, the programmer provides a description of a data structure, and the parser constructs the data structure in question during parsing. These parsers take a schema–a description of your JSON, with field names, types, everything–and generate classes/structs in your language of choice, as well as a parser to deserialize the JSON into those structs. Some such parsers let you define your own data structures (struct) and they let a preprocessor inspects it and generates a custom JSON parser for it. Though not all of these schema-based parser generators generate a parser or even optimize for streaming, but they are able to in principle. Unlike the DOM and the event-based models, a schema-based approach assumes that the structure of the document is known at compile-time.

    Pros of the schema-based approach:

      @@ -246,14 +243,14 @@ Schema-Based Parser Generators
    • It is less flexible than the DOM or event-based approaches, sometimes limited to a deserialization-to-objects scenario.
    • The structure of the data must be fully known at compile-time.
    -

    +

    Type Blindness and Branch Misprediction

    The DOM and event-based parsing model suffer from type blindness: even when the programmer knows exactly what fields and what types are in the JSON document, the parser does not. This means it has to look at each value blind with a big "switch" statement, asking "is this a number? A string? A boolean? An array? An object?"

    In modern processors, this kind of switch statement can make your program run slower than it needs to because of the high cost of branch misprediction. Indeed, modern processor cores rely on speculative execution for speed. They "read ahead" in your program, predicting which instructions to run as soon as the data is available. A single-threaded program can execute 2, 3 or even more instructions per cycle–largely because of speculative execution.

    Unfortunately, when the processor mispredicts the instructions, typically due to a mispredicted branch, all of the work done from the misprediction has be discarded and started anew. The processor may have been executing 3 or 4 instructions per cycle, and consuming the corresponding power, but all of the work may have been wasteful.

    Type blindness means that the processor has to guess, for every JSON value, whether it will be an array, an object, number, string or boolean since these correspond to distinct code paths. Though some JSON files have predictable content, we find in practice that many JSON files stress the branch prediction. Though branch predictors improve with each new generation of processors, the cost of branch mispredictions also tends to increase as pipelines expand, and the processors become able to schedule longer streams of instructions.

    On-Demand parsing is tailor-made to solve this problem at the source, parsing values only after the user declares their type by asking for a double, an int, a string, etc. It attempts to do so while preserving most of the flexibility of DOM parsing.

    -

    +

    Algorithm

    To help visualize the algorithm, we'll walk through the example C++ given at the top, for this JSON:

    {
    @@ -263,17 +260,15 @@ Algorithm
    ],
    "search_metadata": { "count": 2 }
    }
    -

    +

    Starting the iteration

    1. First, we declare a parser object that keeps internal buffers necessary for parsing. This can be reused to parse multiple JSON files, so you do not pay the high cost of allocating memory every time (and so it can stay in cache!).

      This declaration does not allocate any memory; that will happen in the next step.

      -
      ++
      -
      ondemand::parser parser;
      +
      ondemand::parser parser;
    2. We then start iterating the JSON document by allocating internal parser buffers, preprocessing the JSON, and initializing the iterator.

      -
      ++
      -
      auto doc = parser.iterate(json);
      +
      auto doc = parser.iterate(json);

      Since this is the first time this parser has been used, iterate() first allocates internal parser buffers if this is the first time through. When reusing an existing parser, allocation only happens if the new document is bigger than internal buffers can handle. The On-Demand API only ever allocates memory in the iterate() function call.

      The simdjson library then preprocesses the JSON text at high speed, finding all tokens (i.e. the starting position of any JSON value, as well as any important operators like ,, :, ] or }).

      Finally, a document iterator is created, initialized at the position of the first value in the json text input. The document iterator is bumped forward by array / object iterators and object[] lookup, and must be kept around until iteration is complete.

      @@ -295,36 +290,34 @@ Starting the iteration
      }
      1. We iterate over the "statuses" field using a typical C++ iterator, reading past the initial { "statuses": [ {.

        -
        ++
        -
        for (ondemand::object tweet : doc["statuses"]) {
        +
        for (ondemand::object tweet : doc["statuses"]) {

        This shorthand does a lot, and it is helpful to see what it expands to. Comments in front of each one explain what's going on:

        -
        ++
        -
        // Validate that the top-level value is an object: check for {. Increase depth to 2 (root > field).
        -
        ondemand::object top = doc.get_object();
        +
        // Validate that the top-level value is an object: check for {. Increase depth to 2 (root > field).
        +
        ondemand::object top = doc.get_object();
        -
        // Find the field statuses by:
        -
        // 1. Check whether the object is empty (check for }). (We do not really need to do this unless
        -
        // the key lookup fails!)
        -
        // 2. Check if we're at the field by looking for the string "statuses" using byte-by-byte comparison.
        -
        // 3. Validate that there is a `:` after it.
        -
        auto tweets_field = top["statuses"];
        +
        // Find the field statuses by:
        +
        // 1. Check whether the object is empty (check for }). (We do not really need to do this unless
        +
        // the key lookup fails!)
        +
        // 2. Check if we're at the field by looking for the string "statuses" using byte-by-byte comparison.
        +
        // 3. Validate that there is a `:` after it.
        +
        auto tweets_field = top["statuses"];
        -
        // - Validate that the field value is an array: check for [
        -
        // - If the array is empty (if there is a ] next), decrease depth back to 0.
        -
        // - If not, increase depth to 3 (root > statuses > tweet).
        -
        ondemand::array tweets = tweets_field.get_array();
        -
        // These three method calls do nothing substantial (the real checking happens in get_array() and ++)
        -
        // != checks whether the array is finished (if we found a ] and decreased depth back to 0).
        -
        ondemand::array_iterator tweets_iter = tweets.begin();
        -
        while (tweets_iter != tweets.end()) {
        -
        auto tweet_value = *tweets_iter;
        +
        // - Validate that the field value is an array: check for [
        +
        // - If the array is empty (if there is a ] next), decrease depth back to 0.
        +
        // - If not, increase depth to 3 (root > statuses > tweet).
        +
        ondemand::array tweets = tweets_field.get_array();
        +
        // These three method calls do nothing substantial (the real checking happens in get_array() and ++)
        +
        // != checks whether the array is finished (if we found a ] and decreased depth back to 0).
        +
        ondemand::array_iterator tweets_iter = tweets.begin();
        +
        while (tweets_iter != tweets.end()) {
        +
        auto tweet_value = *tweets_iter;
        -
        // - Validate that the array element is an object: check for {
        -
        // - If the object is empty (if there is a } next), decrease depth back to 1.
        -
        // - If not, increase depth to 4 (root > statuses > tweet > field).
        -
        ondemand::object tweet = tweet_value.get_object();
        -
        ...
        -
        }
        +
        // - Validate that the array element is an object: check for {
        +
        // - If the object is empty (if there is a } next), decrease depth back to 1.
        +
        // - If not, increase depth to 4 (root > statuses > tweet > field).
        +
        ondemand::object tweet = tweet_value.get_object();
        +
        ...
        +
        }
      @@ -341,8 +334,7 @@ Starting the iteration
      }
    1. We get the "text" field as a string.

      -
      ++
      -
      std::string_view text = tweet["text"];
      +
      std::string_view text = tweet["text"];

      First, ["text"] skips the "id" field because it does not match: skips the key, : and value (1). We then check whether there are more fields by looking for either , or }.

      The second field is matched ("text"), so we validate the : and move to the actual value.

    2. @@ -374,7 +366,7 @@ Starting the iteration 4. We get the <tt>"screen_name"</tt> from the <tt>"user"</tt> object. - @icode{c} ++ + @icode{cpp} ondemand::object user = tweet["user"]; screen_name = user["screen_name"]; @endicode @@ -408,7 +400,7 @@ Starting the iteration 5. We get <tt>"retweet_count"</tt> as an unsigned integer. - @icode{c} ++ + @icode{cpp} uint64_t retweets = tweet["retweet_count"]; @endicode @@ -452,7 +444,7 @@ Starting the iteration 6. We loop to the next tweet. - @icode{c} ++ + @icode{cpp} for (ondemand::object tweet : doc["statuses"]) { ... } @@ -460,7 +452,7 @@ Starting the iteration The relevant parts of the loop are: - @icode{c} ++ + @icode{cpp} while (iter != statuses.end()) { ondemand::object tweet = *iter; ... @@ -505,7 +497,7 @@ Starting the iteration 8. The loop ends. Recall the relevant parts of the statuses loop: - @icode{c} ++ + @icode{cpp} while (iter != statuses.end()) { ondemand::object tweet = *iter; ... @@ -540,16 +532,16 @@ Starting the iteration values you do use, however, as well as the objects and arrays that lead to them, so that you can be sure you get the information you need. -@section autotoc_md94 Design Features +@section autotoc_md123 Design Features -@subsection autotoc_md95 String Parsing +@subsection autotoc_md124 String Parsing When the user requests strings, we unescape them to a single string buffer much like the DOM parser so that users enjoy the same string performance as the core simdjson. We do not write the length to the string buffer, however; that is stored in the <tt>string_view</tt> instance we return to the user. -@icode{C} ++ +@icode{cpp} ondemand::parser parser; auto doc = parser.iterate(json); std::set<std::string_view> default_users; @@ -575,12 +567,11 @@ direct raw ASCII comparisons: <tt>key().raw()</tt> provides direct a You can compare <tt>key()</tt> with unescaped C strings (e.g., <tt>key()=="test"</tt>). It is expected that the provided string is a valid JSON string. Importantly, the C string must not contain an unescaped quote character (<tt>"
      ). For speed, the comparison is done byte-by-byte without handling the escaped characters. If you occasionally need to access and store the unescaped key values, you may use the unescaped_key() method. Once you have called unescaped_key() method, neither the key() nor the unescaped_key() methods should be called: the current field instance has no longer a key (that is by design). Like other strings, the resulting std::string_view generated from the unescaped_key() method has a lifecycle tied to the parser instance: once the parser is destroyed or reused with another document, the std::string_view instance becomes invalid.

      -
      ++
      -
      auto doc = parser.iterate(json);
      +
      auto doc = parser.iterate(json);
      for(auto field : doc.get_object()) {
      std::string_view keyv = field.unescaped_key();
      }
      -

      +

      Iteration Safety

      The On-Demand API is powerful. To compensate, we add some safeguards to ensure that it can be used without fear in production systems:

        @@ -589,41 +580,39 @@ Iteration Safety
      • Guaranteed Iteration: If you discard a value without using it–perhaps you just wanted to know if it was nullptr but did not care what the actual value was–it will iterate. The destructor automates the iteration.

      Some care is needed when using the On-Demand API in scenarios where you need to access several sibling arrays or objects because only one object or array can be active at any one time. Let us consider the following example:

      -
      ++
      -
      ondemand::parser parser;
      -
      const padded_string json = R"({ "parent": {"child1": {"name": "John"} , "child2": {"name": "Daniel"}} })"_padded;
      -
      auto doc = parser.iterate(json);
      -
      ondemand::object parent = doc["parent"];
      -
      // parent owns the focus
      -
      ondemand::object c1 = parent["child1"];
      -
      // c1 owns the focus
      -
      //
      -
      if (std::string_view(c1["name"]) != "John") { ... }
      -
      // c2 attempts to grab the focus from parent but fails
      -
      ondemand::object c2 = parent["child2"];
      -
      // c2 is now in an unsafe state and the following line would be unsafe
      -
      // if (std::string_view(c2["name"]) != "Daniel") { return false; }
      +
      ondemand::parser parser;
      +
      const padded_string json = R"({ "parent": {"child1": {"name": "John"} , "child2": {"name": "Daniel"}} })"_padded;
      +
      auto doc = parser.iterate(json);
      +
      ondemand::object parent = doc["parent"];
      +
      // parent owns the focus
      +
      ondemand::object c1 = parent["child1"];
      +
      // c1 owns the focus
      +
      //
      +
      if (std::string_view(c1["name"]) != "John") { ... }
      +
      // c2 attempts to grab the focus from parent but fails
      +
      ondemand::object c2 = parent["child2"];
      +
      // c2 is now in an unsafe state and the following line would be unsafe
      +
      // if (std::string_view(c2["name"]) != "Daniel") { return false; }

      A correct usage is given by the following example:

      -
      ++
      -
      ondemand::parser parser;
      -
      const padded_string json = R"({ "parent": {"child1": {"name": "John"} , "child2": {"name": "Daniel"}} })"_padded;
      -
      auto doc = parser.iterate(json);
      -
      ondemand::object parent = doc["parent"];
      -
      // At this point, parent owns the focus
      -
      {
      -
      ondemand::object c1 = parent["child1"];
      -
      // c1 grabbed the focus from parent
      -
      if (std::string_view(c1["name"]) != "John") { return false; }
      -
      }
      -
      // c1 went out of scope, so its destructor was called and the focus
      -
      // was handed back to parent.
      -
      {
      -
      ondemand::object c2 = parent["child2"];
      -
      // c2 grabbed the focus from parent
      -
      // the following is safe:
      -
      if (std::string_view(c2["name"]) != "Daniel") { return false; }
      -
      }
      -

      +
      ondemand::parser parser;
      +
      const padded_string json = R"({ "parent": {"child1": {"name": "John"} , "child2": {"name": "Daniel"}} })"_padded;
      +
      auto doc = parser.iterate(json);
      +
      ondemand::object parent = doc["parent"];
      +
      // At this point, parent owns the focus
      +
      {
      +
      ondemand::object c1 = parent["child1"];
      +
      // c1 grabbed the focus from parent
      +
      if (std::string_view(c1["name"]) != "John") { return false; }
      +
      }
      +
      // c1 went out of scope, so its destructor was called and the focus
      +
      // was handed back to parent.
      +
      {
      +
      ondemand::object c2 = parent["child2"];
      +
      // c2 grabbed the focus from parent
      +
      // the following is safe:
      +
      if (std::string_view(c2["name"]) != "Daniel") { return false; }
      +
      }
      +

      Benefits of the On-Demand Approach

      We expect that the On-Demand approach has many of the performance benefits of the schema-based approach, while providing a flexibility that is similar to that of the DOM-based approach.

        @@ -631,7 +620,7 @@ Benefits of the On-Demand Approach
      • Straightforward, programmer-friendly interface (arrays and objects).
      • Highly expressive, beyond deserialization and pointer queries: many tasks can be accomplished with little code.
      -

      +

      Limitations of the On-Demand Approach

      The On-Demand approach has some limitations:

        @@ -643,7 +632,7 @@ Limitations of the On-Demand Approach
      • The simdjson library offers runtime dispatching which allows you to compile one binary and have it run at full speed on different processors, taking advantage of the specific features of the processor. The On-Demand API has limited runtime dispatch support. Under x64 systems, to fully benefit from the On-Demand API, we recommend that you compile your code for a specific processor. E.g., if your processor supports AVX2 instructions, you should compile your binary executable with AVX2 instruction support (by using your compiler's commands). If you are sufficiently technically proficient, you can implement runtime dispatching within your application, by compiling your On-Demand code for different processors.
      • There is an initial phase which scans the entire document quickly, irrespective of the size of the document. We plan to break this phase into distinct steps for large files in a future release as we have done with other components of our API (e.g., parse_many).
      -

      +

      Applicability of the On-Demand Approach

      At this time we recommend the On-Demand API in the following cases:

        @@ -658,14 +647,13 @@ Applicability of the On-Demand Approach
      1. Both the generation and the consumption of JSON data is within your system. Your team controls both the software that produces the JSON and the software the parses it, your team knows and control the hardware. Thus you can fully test your system.
      2. You are working with stable JSON APIs which have a consistent layout and JSON dialect.
      3. -

        +

        Checking Your CPU Selection (x64 systems)

        The On-Demand API uses advanced architecture-specific code for many common processors to make JSON preprocessing and string parsing faster. By default, however, most c++ compilers will compile to the least common denominator (since the program could theoretically be run anywhere). Since On-Demand is inlined into your own code, it cannot always use these advanced versions unless the compiler is told to target them.

        On relevant systems, the On-Demand API provides some support for runtime dispatching: that is, it will attempt to detect, at runtime, the instructions that your processor supports and optimize the code accordingly. However, it cannot always make full use of the features of your processor.

        Some users wish to run at the best possible speed. Under recent Intel and AMD processors, these users should take additional steps to verify that their code is well optimized.

        Given that the On-Demand API offer limited runtime dispatching, it matters that your code is compiled against a specific CPU target. You should verify that the code is compiled against the target you expect. Thankfully, the simdjson library will tell you exactly what it detects as an implementation: icelake (AVX512 x64 processors), haswell (AVX2 x64 processors), westmere (SSE4 x64 processors), arm64 (64-bit ARM), ppc64 (64-bit POWER), lasx (LoongArch), lsx (LoongArch), fallback (others). Under x64 processors, many programmers will want to target haswell whereas under ARM, most programmers will want to target arm64 (and it should do so automatically). The fallback is probably only good for testing purposes, not for deployment.

        -
        ++
        -
        std::cout << simdjson::builtin_implementation()->name() << std::endl;
        +
        std::cout << simdjson::builtin_implementation()->name() << std::endl;
        virtual std::string name() const
        The name of this implementation.
        const implementation * builtin_implementation()
        Function which returns a pointer to an implementation matching the "builtin" implementation.

        If the simdjson::builtin_implementation()->name() call does not return the architecture you wish to target, you may need to pass flags to your compiler.

        diff --git a/md_doc_2parse__many.html b/md_doc_2parse__many.html index 6ab5d3e6a..e1acf32fb 100644 --- a/md_doc_2parse__many.html +++ b/md_doc_2parse__many.html @@ -29,7 +29,7 @@
    @@ -102,7 +102,7 @@ $(document).ready(function(){initNavTree('md_doc_2parse__many.html',''); initRes
    {"text":"c"}
    ...

    ... you want to read the entries (individual JSON documents) as quickly and as conveniently as possible. Importantly, the input might span several gigabytes, but you want to use a small (fixed) amount of memory. Ideally, you'd also like the parallelize the processing (using more than one core) to speed up the process.

    -

    +

    Contents

    • Motivations
    • @@ -114,17 +114,17 @@ Contents
    • Tracking your position
    • Incomplete streams
    -

    +

    Motivation

    The main motivation for this piece of software is to achieve maximum speed and offer a better quality of life in parsing files containing multiple small JSON documents.

    The JavaScript Object Notation (JSON) RFC7159 is a handy serialization format. However, when serializing a large sequence of values as an array, or a possibly indeterminate-length or never- ending sequence of values, JSON may be inconvenient.

    Consider a sequence of one million values, each possibly one kilobyte when encoded – roughly one gigabyte. It is often desirable to process such a dataset incrementally without having to first read all of it before beginning to produce results.

    -

    +

    Performance

    The following is a chart comparing the speed of the different alternatives to parse a multiline JSON. The simdjson library provides a threaded and non-threaded parse_many() implementation. As the figure below shows, if you can, use threads, but if you cannot, the unthreaded mode is still fast! Chart.png

    -

    +

    How it works

    -

    +

    Context

    The parsing in simdjson is divided into 2 stages. First, in stage 1, we parse the document and find all the structural indexes ({, }, ], [, ,, "</tt>, ...) and validate UTF8. Then, in stage 2, we go through the document again and build the tape using structural indexes found during stage 1. @@ -145,7 +145,7 @@ that we need to allocate some additional memory to store our ParsedJson data, fo inside a given file. Memory allocation can be slow and become a bottleneck, therefore, we want to minimize it as much as possible. -@subsection autotoc_md106 Design +@subsection autotoc_md135 Design To achieve a minimum amount of allocations, we opted for a design where we create only one parser object and therefore allocate its memory once, and then recycle it for every document in a @@ -167,7 +167,7 @@ sweet spot. 5. When we reach the end of the batch, we call stage 1 on the next batch, starting from the end of the last document, and go to step 3. -@subsection autotoc_md107 Threads +@subsection autotoc_md136 Threads But how can we make use of threads if they are available? We found a pretty cool algorithm that allows us to quickly identify the position of the last JSON document in a given batch. Knowing exactly where the end of @@ -189,7 +189,7 @@ A <tt>document_stream</tt> instance uses at most two threads: there You should expect the main thread to be fully occupied while the worker thread is partially busy (e.g., 80% of the time). -@section autotoc_md108 Support +@section autotoc_md137 Support Since we want to offer flexibility and not restrict ourselves to a specific file @@ -207,15 +207,15 @@ Whitespace Characters: Some official formats **(non-exhaustive list)**: - <a href="https://github.com/ndjson/ndjson-spec" >Newline-Delimited JSON (NDJSON)</a> - <a href="http://jsonlines.org/" >JSON lines (JSONL)</a> -- <a href="https://tools.ietf.org/html/rfc7464" >Record separator-delimited JSON (RFC 7464)</a> <- Not supported by JsonStream! +- <a href="https://tools.ietf.org/html/rfc7464" >Record separator-delimited JSON (RFC 7464)</a> <- Not supported by simdjson! - <a href="https://en.wikipedia.org/wiki/JSON_streaming" >More on Wikipedia...</a> -@section autotoc_md109 API +@section autotoc_md138 API See <a href="basics.md::newline-delimited-json-ndjson-and-json-lines" >basics.md</a> for an overview of the API. -@section autotoc_md110 Use cases +@section autotoc_md139 Use cases From <a href="http://jsonlines.org/examples/" >jsonlines.org</a>: @@ -248,7 +248,7 @@ From <a href="http://jsonlines.org/e work with than a directory full of XML files. -@section autotoc_md111 Tracking your position +@section autotoc_md140 Tracking your position Some users would like to know where the document they parsed is in the input array of bytes. @@ -259,7 +259,7 @@ You may also call the <tt>source()</tt> method to get a <tt>st Let us illustrate the idea with code: -@icode{C} ++ +@icode{cpp} auto json = R"([1,2,3] {"1":1,"2":3,"4":4} [1,2,3] )"_padded; simdjson::dom::parser parser; simdjson::dom::document_stream stream; @@ -292,23 +292,22 @@ got full document at 29 @endicode -@section autotoc_md112 Incomplete streams +@section autotoc_md141 Incomplete streams Some users may need to work with truncated streams. The simdjson may truncate documents at the very end of the stream that cannot possibly be valid JSON (e.g., they contain unclosed strings, unmatched brackets, unmatched braces). After iterating through the stream, you may query the <tt>truncated_bytes()</tt> method which tells you how many bytes were truncated. If the stream is made of full (whole) documents, then you should expect <tt>truncated_bytes()</tt> to return zero. Consider the following example where a truncated document (<tt>{"key":"intentionally unclosed string) containing 39 bytes has been left within the stream. In such cases, the first two whole documents are parsed and returned, and the truncated_bytes() method returns 39.

    -
    ++
    -
    auto json = R"([1,2,3] {"1":1,"2":3,"4":4} {"key":"intentionally unclosed string )"_padded;
    -
    - -
    auto error = parser.parse_many(json,json.size()).get(stream);
    -
    if (error) { std::cerr << error << std::endl; return; }
    -
    for(auto doc : stream) {
    -
    std::cout << doc << std::endl;
    -
    }
    -
    std::cout << stream.truncated_bytes() << " bytes "<< std::endl; // returns 39 bytes
    +
    auto json = R"([1,2,3] {"1":1,"2":3,"4":4} {"key":"intentionally unclosed string )"_padded;
    + + +
    auto error = parser.parse_many(json,json.size()).get(stream);
    +
    if (error) { std::cerr << error << std::endl; return; }
    +
    for(auto doc : stream) {
    +
    std::cout << doc << std::endl;
    +
    }
    +
    std::cout << stream.truncated_bytes() << " bytes "<< std::endl; // returns 39 bytes
    A forward-only stream of documents.
    size_t truncated_bytes() const noexcept
    After iterating through the stream, this method returns the number of bytes that were not parsed at t...
    A persistent document parser.
    Definition parser.h:30
    diff --git a/md_doc_2performance.html b/md_doc_2performance.html index 1279c4718..c7519b137 100644 --- a/md_doc_2performance.html +++ b/md_doc_2performance.html @@ -29,7 +29,7 @@
    @@ -108,17 +108,16 @@ $(document).ready(function(){initNavTree('md_doc_2performance.html',''); initRes
  • Power Usage and Downclocking
  • Free Padding
  • -

    +

    NDEBUG macro

    We recommend that you set NDEBUG macro in your release builds.

    In C/C++, the NDEBUG macro is not set by default. When it is not set, the software may do many additional checks that may impact negatively the performance. We recommend that, once your code is well tested, you define NDEBUG directive in your release builds.

    The NDEBUG directive is generally independent from optimization flags. For example, setting -O3 under GCC does not set the NDEBUG directive. However, tools like CMake automatically set NDEBUG for release builds.

    In the simdjson library, we check the NDEBUG macro as well as other macros to make performant release builds. However, the C++ standard does not provide a definitive approach to determine whether you are compiling for a release build. Thus we recommend that you follow the practice of setting the NDEBUG macro in release mode to make sure that you do not get undesirable expensive checks.

    -

    +

    Reusing the parser for maximum efficiency

    If you're using simdjson to parse multiple documents, or in a loop, you should make a parser once and reuse it. The simdjson library will allocate and retain internal buffers between parses, keeping buffers hot in cache and keeping memory allocation and initialization to a minimum. In this manner, you can parse terabytes of JSON data without doing any new allocation.

    -
    ++
    -
    ondemand::parser parser;
    +
    ondemand::parser parser;
    // This initializes buffers big enough to handle this JSON.
    auto json = "[ true, false ]"_padded;
    @@ -133,48 +132,44 @@ Reusing the parser for maximum efficiency
    for(int64_t i : doc.get_array()) {
    cout << i << endl;
    }
    -

    +

    Reusing string buffers

    We recommend against creating many std::string or simdjson::padded_string instances to store the JSON content in your application. Creating many non-trivial objects is convenient but often surprisingly slow. Instead, as much as possible, you should allocate (once or a few times) reusable memory buffers where you write your JSON content. If you have a buffer json_str (of type char*) allocated for capacity bytes and you store a JSON document spanning length bytes, you can pass it to simdjson as follows:

    -
    ++
    -
    auto doc = parser.iterate(padded_string_view(json_str, length, capacity));
    +
    auto doc = parser.iterate(padded_string_view(json_str, length, capacity));

    or simply

    -
    ++
    -
    auto doc = parser.iterate(json_str, length, capacity);
    -

    +
    auto doc = parser.iterate(json_str, length, capacity);
    +

    Server Loops: Long-Running Processes and Memory Capacity

    The On-Demand approach also automatically expands its memory capacity when larger documents are parsed. However, for longer processes where very large files are processed (such as server loops), this capacity is not resized down. On-Demand also lets you adjust the maximal capacity that the parser can process:

      -
    • You can set an upper bound (max_capacity) when construction the parser:
      ++
      -
      ondemand::parser parser(1000*1000); // Never grows past documents > 1 MB
      -
      auto doc = parser.iterate(json);
      -
      for (web_request request : listen()) {
      -
      padded_string json;
      -
      padded_string json = padded_string::load(request.body);
      -
      auto error = parser.iterate(json);
      -
      // If the document was above our limit, emit 413 = payload too large
      -
      if (error == CAPACITY) { request.respond(413); continue; }
      -
      // ...
      -
      }
      +
    • You can set an upper bound (max_capacity) when construction the parser:
      ondemand::parser parser(1000*1000); // Never grows past documents > 1 MB
      +
      auto doc = parser.iterate(json);
      +
      for (web_request request : listen()) {
      +
      padded_string json;
      +
      padded_string json = padded_string::load(request.body);
      +
      auto error = parser.iterate(json);
      +
      // If the document was above our limit, emit 413 = payload too large
      +
      if (error == CAPACITY) { request.respond(413); continue; }
      +
      // ...
      +
      }

    The capacity will grow as the parser encounters larger documents up to 1 MB.

      -
    • You can also allocate a fixed capacity that will never grow:
      ++
      -
      ondemand::parser parser(1000*1000);
      -
      parser.allocate(1000*1000) // Fix the capacity to 1 MB
      -
      auto doc = parser.iterate(json);
      -
      for (web_request request : listen()) {
      -
      padded_string json;
      -
      padded_string json = padded_string::load(request.body);
      -
      auto error = parser.iterate(json);
      -
      // If the document was above our limit, emit 413 = payload too large
      -
      if (error == CAPACITY) { request.respond(413); continue; }
      -
      // ...
      -
      }
      +
    • You can also allocate a fixed capacity that will never grow:
      ondemand::parser parser(1000*1000);
      +
      parser.allocate(1000*1000) // Fix the capacity to 1 MB
      +
      auto doc = parser.iterate(json);
      +
      for (web_request request : listen()) {
      +
      padded_string json;
      +
      padded_string json = padded_string::load(request.body);
      +
      auto error = parser.iterate(json);
      +
      // If the document was above our limit, emit 413 = payload too large
      +
      if (error == CAPACITY) { request.respond(413); continue; }
      +
      // ...
      +
      }
      You can also manually set the maximal capacity using the method set_max_capacity().
    -

    +

    Large files and huge page support

    There is a memory allocation performance cost the first time you process a large file (e.g. 100MB). Between the cost of allocation, the fact that the memory is not in cache, and the initial zeroing of memory, on some systems, allocation runs far slower than parsing (e.g., 1.4GB/s). Reusing the parser mitigates this by paying the cost once, but does not eliminate it.

    In large file use cases, enabling transparent huge page allocation on the OS can help a lot. We haven't found the right way to do this on Windows or OS/X, but on Linux, you can enable transparent huge page allocation with a command like:

    @@ -182,7 +177,7 @@ Large files and huge page support

    In general, when running benchmarks over large files, we recommend that you report performance numbers with and without huge pages if possible. Furthermore, you should amortize the parsing (e.g., by parsing several large files) to distinguish the time spent parsing from the time spent allocating memory. If you are using the parse benchmarking tool provided with the simdjson library, you can use the -H flag to omit the memory allocation cost from the benchmark results.

    ./parse largefile # includes memory allocation cost
    ./parse -H largefile # without memory allocation
    -

    +

    Number parsing

    Some JSON files contain many floating-point values. It is the case with many GeoJSON files. Accurately parsing decimal strings into binary floating-point values with proper rounding is challenging. To our knowledge, it is not possible, in general, to parse streams of numbers at gigabytes per second using a single core. While using the simdjson library, it is possible that you might be limited to a few hundred megabytes per second if your JSON documents are densely packed with floating-point values.

      @@ -190,13 +185,13 @@ Number parsing
    • When serializing numbers, you should not use more digits than necessary: 17 digits is all that is needed to exactly represent double-precision floating-point numbers. Using many more digits than necessary will make your files larger and slower to parse.
    • When benchmarking parsing speeds, always report whether your JSON documents are made mostly of floating-point numbers when it is the case, since number parsing can then dominate the parsing time.
    -

    +

    Visual Studio

    On Intel and AMD Windows platforms, Microsoft Visual Studio enables programmers to build either 32-bit (x86) or 64-bit (x64 or ARM64) binaries. We urge you to always use 64-bit mode. Visual Studio 2019 should default on 64-bit builds when you have a 64-bit version of Windows, which we recommend.

    When compiling with Visual Studio, we recommend the flags /Ob2 /O2 or better. We do not recommend that you compile simdjson with architecture-specific flags such as arch:AVX2. The simdjson library automatically selects the best execution kernel at runtime.

    Recent versions of Microsoft Visual Studio on Windows provides support for the LLVM Clang compiler. You only need to install the "Clang compiler" optional component (clang-cl). You may also get a copy of the 64-bit LLVM CLang compiler for Windows directly from LLVM. The simdjson library fully supports the LLVM Clang compiler under Windows. In fact, you may get better performance out of simdjson with the LLVM Clang compiler than with the regular Visual Studio compiler. Meanwhile the LLVM CLang compiler is binary compatible with Visual Studio which means that you can combine their binaries (executables and libraries).

    We recommend Visual Studio users prefer LLVM (clang-cl). It compiles to faster release binaries. Furthermore, it compilers faster in release mode.

    -

    +

    Power Usage and Downclocking

    The simdjson library relies on SIMD instructions. SIMD instructions are the public transportation of computing. Instead of using 4 distinct instructions to add numbers, you can replace them with a single instruction that does the same work. Though the one instruction is slightly more expensive, the energy used per unit of work is much less with SIMD. If you can increase your speed using SIMD instructions (NEON, SSE, AVX), you should expect to reduce your power usage.

    The SIMD instructions that simdjson relies upon (SSE and AVX under x64, NEON under ARM, ALTIVEC under PPC) are routinely part of runtime libraries (e.g., Go, Glibc, LLVM, Rust, Java, PHP). What distinguishes the simdjson library is that it is built from the ground up to benefit from these instructions.

    @@ -207,7 +202,7 @@ Power Usage and Downclocking

    The simdjson library does not generally make use of heavy 256-bit instructions. On AVX2 kernels, we use vectorized multiplications, but only using 128-bit registers. On recent processors (Ice Lake/Tiger Lake or better, AMD Zen 4 or better) no frequency throttling is found due to SIMD instructions: we are thus more aggressive with SIMD on these machines. If you can still concerned, you can easily disable AVX-512 with the CMake option SIMDJSON_AVX512_ALLOWED set to OFF (e.g., cmake -D SIMDJSON_AVX512_ALLOWED=OFF -B build && cmake --build build) or by setting the macro SIMDJSON_AVX512_ALLOWED to 0 in C++ prior to importing the headers.

    You may still be worried about which SIMD instruction set is used by simdjson. Thankfully, you can always determine and change which architecture-specific implementation is used by simdjson. Thus even if your CPU supports AVX2, you do not need to use AVX2. You are in control.

    -

    +

    Free Padding

    For performance reasons, the simdjson library requires that the JSON input contain at least simdjson::SIMDJSON_PADDING bytes at the end of the stream. The value simdjson::SIMDJSON_PADDING is small (e.g., 64 bytes). On modern systems, you can safely read beyond an allocated buffers, as long as you remain within an allocated page. Pages on modern systems span at least 4 kilobytes, but can be significantly larger. E.g., Apple systems favour pages spanning 16 kilobytes.

    In effect, it means that you can almost always read a few bytes beyond your current buffer—without allocating extra memory. However, tools such as valgrind or memory sanitizers will flag such behavior as unsafe. Nevertheless, you can still make sure of this capability in your code if you are an expert programmer and you are willing to silence sanitizer warnings. The following code provides a portable example.

    diff --git a/md_doc_2tape.html b/md_doc_2tape.html index eb0d256e2..a4472d84d 100644 --- a/md_doc_2tape.html +++ b/md_doc_2tape.html @@ -29,7 +29,7 @@
    @@ -97,9 +97,9 @@ $(document).ready(function(){initNavTree('md_doc_2tape.html',''); initResizable(
    Tape structure in simdjson
    -

    We parse a JSON document to a tape. A tape is an array of 64-bit values. Each node encountered in the JSON document is written to the tape using one or more 64-bit tape elements; the layout of the tape is in "document order": elements are stored as they are encountered in the JSON document.

    +

    We parse a JSON document to a tape. A tape is an array of 64-bit values. Each node encountered in the JSON document is written to the tape using one or more 64-bit tape elements; the layout of the tape is in "document order": elements are stored as they are encountered in the JSON document.

    Throughout, little endian encoding is assumed. The tape is indexed starting at 0 (the first element is at index 0).

    -

    +

    Example

    It is sometimes useful to start with an example. Consider the following JSON document:

    {
    @@ -117,7 +117,7 @@ Example
    }
    }

    The following is a dump of the content of the tape, with the first number of each line representing the index of a tape element.

    -

    +

    The Tape

    simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64 simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64 (bool bool  check_trailing)
    - + - + @@ -605,7 +605,7 @@ Functions - + @@ -633,7 +633,7 @@ Functions - + @@ -661,7 +661,7 @@ Functions - + @@ -689,13 +689,13 @@ Functions - + - + @@ -721,7 +721,7 @@ Functions
    -template<typename string_type >
    +template<typename string_type >
    simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64_in_string simdjson_warn_unused simdjson_inline simdjson_result< int64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_int64_in_string (bool bool  check_trailing)
    simdjson_inline simdjson_result< number > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_number (bool bool  check_trailing)
    simdjson_inline simdjson_result< SIMDJSON_IMPLEMENTATION::number_type > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_number_type (bool bool  check_trailing)
    simdjson_warn_unused simdjson_inline simdjson_result< raw_json_string > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_raw_json_string (bool bool  check_trailing)
    simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_string (bool bool  check_trailing,
    bool bool  allow_replacement 
    - + - + - + @@ -771,9 +771,9 @@ template<
    @@ -729,19 +729,19 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_string (string_typestring_type &  receiver,
    bool bool  check_trailing,
    bool bool  allow_replacement 
    - + - + @@ -799,9 +799,9 @@ template<
    simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64 simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64 (bool bool  check_trailing)
    - + - + @@ -829,7 +829,7 @@ template<simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_wobbly_string - + @@ -857,7 +857,7 @@ template<simdjson_warn_unused simdjson_inline simdjson_result< std::string_view > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_string - + @@ -879,7 +879,7 @@ template<
    +template<typename string_type >
    simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64_in_string simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_root_uint64_in_string (bool bool  check_trailing)
    (bool bool  check_trailing)
    (bool bool  allow_replacement)
    - + - + @@ -923,7 +923,7 @@ template<
    @@ -887,13 +887,13 @@ template<simdjson_warn_unused simdjson_inline error_code simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_string (string_typestring_type &  receiver,
    bool bool  allow_replacement 
    - + @@ -950,7 +950,7 @@ template<
    simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64 simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64 ( )
    - + @@ -1004,7 +1004,7 @@ template<
    simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64_in_string simdjson_warn_unused simdjson_inline simdjson_result< uint64_t > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::get_uint64_in_string ( )
    - + @@ -1031,7 +1031,7 @@ template<
    simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_integer simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_integer ( )
    - + @@ -1058,7 +1058,7 @@ template<
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_negative simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_negative ( )
    - + @@ -1085,9 +1085,9 @@ template<
    simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_null simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_null ( )
    - + - + @@ -1113,7 +1113,7 @@ template<
    simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_integer simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_integer (bool bool  check_trailing)
    - + @@ -1140,9 +1140,9 @@ template<
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_negative simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_negative ( )
    - + - + @@ -1168,7 +1168,7 @@ template<
    simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_null simdjson_inline simdjson_result< bool > simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_root_null (bool bool  check_trailing)
    - + @@ -1195,7 +1195,7 @@ template<
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_valid simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::is_valid ( ) const
    - + @@ -1249,7 +1249,7 @@ template<
    simdjson_warn_unused simdjson_inline const json_iterator & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::json_iter simdjson_warn_unused simdjson_inline const json_iterator & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::json_iter ( ) const
    - + diff --git a/haswell_2base_8h_source.html b/haswell_2base_8h_source.html index 52562604e..0fdbde6ca 100644 --- a/haswell_2base_8h_source.html +++ b/haswell_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2begin_8h_source.html b/haswell_2begin_8h_source.html index 4a07b02bf..19e30f058 100644 --- a/haswell_2begin_8h_source.html +++ b/haswell_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2bitmanipulation_8h_source.html b/haswell_2bitmanipulation_8h_source.html index d71943b90..36816e90c 100644 --- a/haswell_2bitmanipulation_8h_source.html +++ b/haswell_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2bitmask_8h_source.html b/haswell_2bitmask_8h_source.html index 244277929..f20aa8bda 100644 --- a/haswell_2bitmask_8h_source.html +++ b/haswell_2bitmask_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2end_8h_source.html b/haswell_2end_8h_source.html index 186441f08..d94c9746f 100644 --- a/haswell_2end_8h_source.html +++ b/haswell_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2implementation_8h_source.html b/haswell_2implementation_8h_source.html index fa5c570e9..c359f3765 100644 --- a/haswell_2implementation_8h_source.html +++ b/haswell_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2intrinsics_8h_source.html b/haswell_2intrinsics_8h_source.html index 3c931be03..63d38415e 100644 --- a/haswell_2intrinsics_8h_source.html +++ b/haswell_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2numberparsing__defs_8h_source.html b/haswell_2numberparsing__defs_8h_source.html index e3f4d1669..8d2c0fa80 100644 --- a/haswell_2numberparsing__defs_8h_source.html +++ b/haswell_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2ondemand_8h_source.html b/haswell_2ondemand_8h_source.html index b85bac337..375ebfe16 100644 --- a/haswell_2ondemand_8h_source.html +++ b/haswell_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2simd_8h_source.html b/haswell_2simd_8h_source.html index d3bf547d6..fe8fff31d 100644 --- a/haswell_2simd_8h_source.html +++ b/haswell_2simd_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_2stringparsing__defs_8h_source.html b/haswell_2stringparsing__defs_8h_source.html index ad582bb0f..b75b7fb71 100644 --- a/haswell_2stringparsing__defs_8h_source.html +++ b/haswell_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/haswell_8h_source.html b/haswell_8h_source.html index 2b3a42c7c..16f904ac9 100644 --- a/haswell_8h_source.html +++ b/haswell_8h_source.html @@ -29,7 +29,7 @@ diff --git a/hierarchy.html b/hierarchy.html index b4f6dbc91..716cc7ffc 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -29,7 +29,7 @@ diff --git a/icelake_2base_8h_source.html b/icelake_2base_8h_source.html index 7e7fb4f1f..29d293f91 100644 --- a/icelake_2base_8h_source.html +++ b/icelake_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2begin_8h_source.html b/icelake_2begin_8h_source.html index 981c036d1..f17ffa918 100644 --- a/icelake_2begin_8h_source.html +++ b/icelake_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2bitmanipulation_8h_source.html b/icelake_2bitmanipulation_8h_source.html index 1a4fc1726..8db3fe7a0 100644 --- a/icelake_2bitmanipulation_8h_source.html +++ b/icelake_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2bitmask_8h_source.html b/icelake_2bitmask_8h_source.html index ff00af653..d1934321e 100644 --- a/icelake_2bitmask_8h_source.html +++ b/icelake_2bitmask_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2end_8h_source.html b/icelake_2end_8h_source.html index 1b856bd89..8b5a83275 100644 --- a/icelake_2end_8h_source.html +++ b/icelake_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2implementation_8h_source.html b/icelake_2implementation_8h_source.html index ab8bd3fd7..3df7aba16 100644 --- a/icelake_2implementation_8h_source.html +++ b/icelake_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2intrinsics_8h_source.html b/icelake_2intrinsics_8h_source.html index c193c7356..ddb6009a0 100644 --- a/icelake_2intrinsics_8h_source.html +++ b/icelake_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2numberparsing__defs_8h_source.html b/icelake_2numberparsing__defs_8h_source.html index ed4d614c3..494c07c3e 100644 --- a/icelake_2numberparsing__defs_8h_source.html +++ b/icelake_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2ondemand_8h_source.html b/icelake_2ondemand_8h_source.html index 77a68c783..c5b34c925 100644 --- a/icelake_2ondemand_8h_source.html +++ b/icelake_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2simd_8h_source.html b/icelake_2simd_8h_source.html index ac0d3b888..b0be99ae1 100644 --- a/icelake_2simd_8h_source.html +++ b/icelake_2simd_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_2stringparsing__defs_8h_source.html b/icelake_2stringparsing__defs_8h_source.html index e706e2361..156370f56 100644 --- a/icelake_2stringparsing__defs_8h_source.html +++ b/icelake_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/icelake_8h_source.html b/icelake_8h_source.html index 0ab6e3944..26fb8fb98 100644 --- a/icelake_8h_source.html +++ b/icelake_8h_source.html @@ -29,7 +29,7 @@ diff --git a/implementation_8h_source.html b/implementation_8h_source.html index e1dee6efa..7ce5f4d92 100644 --- a/implementation_8h_source.html +++ b/implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/implementation__detection_8h_source.html b/implementation__detection_8h_source.html index 037b3cabf..6bad0b581 100644 --- a/implementation__detection_8h_source.html +++ b/implementation__detection_8h_source.html @@ -29,7 +29,7 @@ diff --git a/implementation__simdjson__result__base-inl_8h_source.html b/implementation__simdjson__result__base-inl_8h_source.html index f726e302a..7a68890e9 100644 --- a/implementation__simdjson__result__base-inl_8h_source.html +++ b/implementation__simdjson__result__base-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/implementation__simdjson__result__base_8h_source.html b/implementation__simdjson__result__base_8h_source.html index 0659dfbd9..e28634bdb 100644 --- a/implementation__simdjson__result__base_8h_source.html +++ b/implementation__simdjson__result__base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/index.html b/index.html index 073e9e0c8..69ff6b2b5 100644 --- a/index.html +++ b/index.html @@ -29,7 +29,7 @@ diff --git a/instruction__set_8h_source.html b/instruction__set_8h_source.html index c60aee380..e124e2939 100644 --- a/instruction__set_8h_source.html +++ b/instruction__set_8h_source.html @@ -29,7 +29,7 @@ diff --git a/internal_2dom__parser__implementation_8h_source.html b/internal_2dom__parser__implementation_8h_source.html index 7f7d9aa4c..da7d7dc56 100644 --- a/internal_2dom__parser__implementation_8h_source.html +++ b/internal_2dom__parser__implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/json__builder_8h_source.html b/json__builder_8h_source.html index 3d6f41119..ccc3390a7 100644 --- a/json__builder_8h_source.html +++ b/json__builder_8h_source.html @@ -29,7 +29,7 @@ diff --git a/json__iterator-inl_8h_source.html b/json__iterator-inl_8h_source.html index b93269d13..d7784a279 100644 --- a/json__iterator-inl_8h_source.html +++ b/json__iterator-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/json__iterator_8h_source.html b/json__iterator_8h_source.html index 234d075b6..3293efd1b 100644 --- a/json__iterator_8h_source.html +++ b/json__iterator_8h_source.html @@ -29,7 +29,7 @@ diff --git a/json__string__builder-inl_8h_source.html b/json__string__builder-inl_8h_source.html index 72fa073eb..a73b9370b 100644 --- a/json__string__builder-inl_8h_source.html +++ b/json__string__builder-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -509,9 +509,9 @@ $(document).ready(function(){initNavTree('json__string__builder-inl_8h_source.ht
    416 pv = 0 - pv; // the 0 is for Microsoft
    417 }
    418 size_t dc = internal::digit_count(pv);
    -
    419 if (negative) {
    -
    420 buffer.get()[position++] = '-';
    -
    421 }
    +
    419 // by always writing the minus sign, we avoid the branch.
    +
    420 buffer.get()[position] = '-';
    +
    421 position += negative ? 1 : 0;
    422 char *write_pointer = buffer.get() + position + dc - 1;
    423 while (pv >= 100) {
    424 memcpy(write_pointer - 1, &internal::decimal_table[(pv % 100) * 2], 2);
    diff --git a/json__string__builder_8h_source.html b/json__string__builder_8h_source.html index 4bbf974d0..cd8b8f2fd 100644 --- a/json__string__builder_8h_source.html +++ b/json__string__builder_8h_source.html @@ -29,7 +29,7 @@ diff --git a/json__type-inl_8h_source.html b/json__type-inl_8h_source.html index 229705f88..e6f6e277a 100644 --- a/json__type-inl_8h_source.html +++ b/json__type-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -116,24 +116,24 @@ $(document).ready(function(){initNavTree('json__type-inl_8h_source.html',''); in
    12namespace ondemand {
    13
    -
    14inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
    +
    14inline std::ostream& operator<<(std::ostream& out, json_type type) noexcept {
    15 switch (type) {
    -
    16 case json_type::array: out << "array"; break;
    -
    17 case json_type::object: out << "object"; break;
    -
    18 case json_type::number: out << "number"; break;
    -
    19 case json_type::string: out << "string"; break;
    -
    20 case json_type::boolean: out << "boolean"; break;
    -
    21 case json_type::null: out << "null"; break;
    +
    16 case json_type::array: out << "array"; break;
    +
    17 case json_type::object: out << "object"; break;
    +
    18 case json_type::number: out << "number"; break;
    +
    19 case json_type::string: out << "string"; break;
    +
    20 case json_type::boolean: out << "boolean"; break;
    +
    21 case json_type::null: out << "null"; break;
    22 default: SIMDJSON_UNREACHABLE();
    23 }
    -
    24 return out;
    +
    24 return out;
    25}
    26
    27#if SIMDJSON_EXCEPTIONS
    -
    28inline std::ostream& operator<<(std::ostream& out, simdjson_result<json_type> &type) noexcept(false) {
    -
    29 return out << type.value();
    +
    28inline std::ostream& operator<<(std::ostream& out, simdjson_result<json_type> &type) noexcept(false) {
    +
    29 return out << type.value();
    30}
    31#endif
    @@ -141,80 +141,80 @@ $(document).ready(function(){initNavTree('json__type-inl_8h_source.html',''); in
    33
    34
    -
    35simdjson_inline number_type number::get_number_type() const noexcept {
    +
    35simdjson_inline number_type number::get_number_type() const noexcept {
    36 return type;
    37}
    38
    -
    39simdjson_inline bool number::is_uint64() const noexcept {
    +
    39simdjson_inline bool number::is_uint64() const noexcept {
    40 return get_number_type() == number_type::unsigned_integer;
    41}
    42
    - +
    43simdjson_inline uint64_t number::get_uint64() const noexcept {
    44 return payload.unsigned_integer;
    45}
    46
    -
    47simdjson_inline number::operator uint64_t() const noexcept {
    +
    47simdjson_inline number::operator uint64_t() const noexcept {
    48 return get_uint64();
    49}
    50
    -
    51simdjson_inline bool number::is_int64() const noexcept {
    +
    51simdjson_inline bool number::is_int64() const noexcept {
    52 return get_number_type() == number_type::signed_integer;
    53}
    54
    - +
    55simdjson_inline int64_t number::get_int64() const noexcept {
    56 return payload.signed_integer;
    57}
    58
    -
    59simdjson_inline number::operator int64_t() const noexcept {
    +
    59simdjson_inline number::operator int64_t() const noexcept {
    60 return get_int64();
    61}
    62
    -
    63simdjson_inline bool number::is_double() const noexcept {
    +
    63simdjson_inline bool number::is_double() const noexcept {
    64 return get_number_type() == number_type::floating_point_number;
    65}
    66
    -
    67simdjson_inline double number::get_double() const noexcept {
    +
    67simdjson_inline double number::get_double() const noexcept {
    68 return payload.floating_point_number;
    69}
    70
    -
    71simdjson_inline number::operator double() const noexcept {
    +
    71simdjson_inline number::operator double() const noexcept {
    72 return get_double();
    73}
    74
    -
    75simdjson_inline double number::as_double() const noexcept {
    +
    75simdjson_inline double number::as_double() const noexcept {
    76 if(is_double()) {
    77 return payload.floating_point_number;
    78 }
    79 if(is_int64()) {
    -
    80 return double(payload.signed_integer);
    +
    80 return double(payload.signed_integer);
    81 }
    -
    82 return double(payload.unsigned_integer);
    +
    82 return double(payload.unsigned_integer);
    83}
    84
    -
    85simdjson_inline void number::append_s64(int64_t value) noexcept {
    +
    85simdjson_inline void number::append_s64(int64_t value) noexcept {
    86 payload.signed_integer = value;
    87 type = number_type::signed_integer;
    88}
    89
    -
    90simdjson_inline void number::append_u64(uint64_t value) noexcept {
    +
    90simdjson_inline void number::append_u64(uint64_t value) noexcept {
    91 payload.unsigned_integer = value;
    92 type = number_type::unsigned_integer;
    93}
    @@ -228,7 +228,7 @@ $(document).ready(function(){initNavTree('json__type-inl_8h_source.html',''); in
    99
    -
    100simdjson_inline void number::skip_double() noexcept {
    +
    100simdjson_inline void number::skip_double() noexcept {
    101 type = number_type::floating_point_number;
    102}
    @@ -247,7 +247,6 @@ $(document).ready(function(){initNavTree('json__type-inl_8h_source.html',''); in
    115} // namespace simdjson
    116
    117#endif // SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_INL_H
    -
    An ephemeral JSON value returned during iteration.
    Definition value.h:21
    @@ -271,6 +270,7 @@ $(document).ready(function(){initNavTree('json__type-inl_8h_source.html',''); in
    simdjson_inline void append_double(double value) noexcept
    Store a double value to the number.
    simdjson_inline bool is_uint64() const noexcept
    return true if the automatically determined type of the number is number_type::unsigned_integer.
    simdjson_inline uint64_t get_uint64() const noexcept
    return the value as a uint64_t, only valid if is_uint64() is true.
    +
    The result of a simdjson operation that could fail.
    Definition error.h:278
    diff --git a/json__type_8h_source.html b/json__type_8h_source.html index aa74c82bc..0ba2db364 100644 --- a/json__type_8h_source.html +++ b/json__type_8h_source.html @@ -29,7 +29,7 @@ @@ -133,17 +133,17 @@ $(document).ready(function(){initNavTree('json__type_8h_source.html',''); initRe
    34
    46 simdjson_inline ondemand::number_type get_number_type() const noexcept;
    51 simdjson_inline bool is_uint64() const noexcept;
    -
    55 simdjson_inline uint64_t get_uint64() const noexcept;
    -
    56 simdjson_inline operator uint64_t() const noexcept;
    +
    55 simdjson_inline uint64_t get_uint64() const noexcept;
    +
    56 simdjson_inline operator uint64_t() const noexcept;
    57
    62 simdjson_inline bool is_int64() const noexcept;
    -
    66 simdjson_inline int64_t get_int64() const noexcept;
    -
    67 simdjson_inline operator int64_t() const noexcept;
    +
    66 simdjson_inline int64_t get_int64() const noexcept;
    +
    67 simdjson_inline operator int64_t() const noexcept;
    68
    69
    74 simdjson_inline bool is_double() const noexcept;
    78 simdjson_inline double get_double() const noexcept;
    -
    79 simdjson_inline operator double() const noexcept;
    +
    79 simdjson_inline operator double() const noexcept;
    80
    85 simdjson_inline double as_double() const noexcept;
    86
    @@ -151,17 +151,17 @@ $(document).ready(function(){initNavTree('json__type_8h_source.html',''); initRe
    88protected:
    94 friend class value_iterator;
    95 template<typename W>
    -
    96 friend error_code numberparsing::write_float(const uint8_t *const src, bool negative, uint64_t i, const uint8_t * start_digits, size_t digit_count, int64_t exponent, W &writer);
    +
    96 friend error_code numberparsing::write_float(const uint8_t *const src, bool negative, uint64_t i, const uint8_t * start_digits, size_t digit_count, int64_t exponent, W &writer);
    97 template<typename W>
    -
    98 friend error_code numberparsing::parse_number(const uint8_t *const src, W &writer);
    -
    100 simdjson_inline void append_s64(int64_t value) noexcept;
    -
    102 simdjson_inline void append_u64(uint64_t value) noexcept;
    +
    98 friend error_code numberparsing::parse_number(const uint8_t *const src, W &writer);
    +
    100 simdjson_inline void append_s64(int64_t value) noexcept;
    +
    102 simdjson_inline void append_u64(uint64_t value) noexcept;
    104 simdjson_inline void append_double(double value) noexcept;
    -
    106 simdjson_inline void skip_double() noexcept;
    -
    115 union {
    +
    106 simdjson_inline void skip_double() noexcept;
    +
    115 union {
    116 double floating_point_number;
    -
    117 int64_t signed_integer;
    -
    118 uint64_t unsigned_integer;
    +
    117 int64_t signed_integer;
    +
    118 uint64_t unsigned_integer;
    120 number_type type{number_type::signed_integer};
    121};
    diff --git a/jsoncharutils_8h_source.html b/jsoncharutils_8h_source.html index 9f360a7c0..3451b516c 100644 --- a/jsoncharutils_8h_source.html +++ b/jsoncharutils_8h_source.html @@ -29,7 +29,7 @@ diff --git a/jsoncharutils__tables_8h_source.html b/jsoncharutils__tables_8h_source.html index 9873f2b62..e9b756e52 100644 --- a/jsoncharutils__tables_8h_source.html +++ b/jsoncharutils__tables_8h_source.html @@ -29,7 +29,7 @@ diff --git a/jsonformatutils_8h_source.html b/jsonformatutils_8h_source.html index 251038a0f..78fe6e7c2 100644 --- a/jsonformatutils_8h_source.html +++ b/jsonformatutils_8h_source.html @@ -29,7 +29,7 @@ diff --git a/jsonioutil_8h_source.html b/jsonioutil_8h_source.html index 8d5b32d65..2933aa098 100644 --- a/jsonioutil_8h_source.html +++ b/jsonioutil_8h_source.html @@ -29,7 +29,7 @@ diff --git a/jsonpathutil_8h_source.html b/jsonpathutil_8h_source.html index 78cf4aeaf..cc6aab5b2 100644 --- a/jsonpathutil_8h_source.html +++ b/jsonpathutil_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2base_8h_source.html b/lasx_2base_8h_source.html index 8f028e239..0f1e1bb81 100644 --- a/lasx_2base_8h_source.html +++ b/lasx_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2begin_8h_source.html b/lasx_2begin_8h_source.html index 8f58aefac..a12bdf1b2 100644 --- a/lasx_2begin_8h_source.html +++ b/lasx_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2bitmanipulation_8h_source.html b/lasx_2bitmanipulation_8h_source.html index a384dd115..601ded8e3 100644 --- a/lasx_2bitmanipulation_8h_source.html +++ b/lasx_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2bitmask_8h_source.html b/lasx_2bitmask_8h_source.html index 09968e332..16f950628 100644 --- a/lasx_2bitmask_8h_source.html +++ b/lasx_2bitmask_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2end_8h_source.html b/lasx_2end_8h_source.html index 3055d98e9..b14c77855 100644 --- a/lasx_2end_8h_source.html +++ b/lasx_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2implementation_8h_source.html b/lasx_2implementation_8h_source.html index 14db41e64..e55129917 100644 --- a/lasx_2implementation_8h_source.html +++ b/lasx_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2intrinsics_8h_source.html b/lasx_2intrinsics_8h_source.html index 34005dc36..0d3b4458c 100644 --- a/lasx_2intrinsics_8h_source.html +++ b/lasx_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2numberparsing__defs_8h_source.html b/lasx_2numberparsing__defs_8h_source.html index 9d6f95b33..1cc88433f 100644 --- a/lasx_2numberparsing__defs_8h_source.html +++ b/lasx_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2ondemand_8h_source.html b/lasx_2ondemand_8h_source.html index 9d9ae1491..9c28a2cc4 100644 --- a/lasx_2ondemand_8h_source.html +++ b/lasx_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2simd_8h_source.html b/lasx_2simd_8h_source.html index f83cc67fb..7c425b37e 100644 --- a/lasx_2simd_8h_source.html +++ b/lasx_2simd_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_2stringparsing__defs_8h_source.html b/lasx_2stringparsing__defs_8h_source.html index 919afbe1a..00cfb8bfa 100644 --- a/lasx_2stringparsing__defs_8h_source.html +++ b/lasx_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lasx_8h_source.html b/lasx_8h_source.html index e9a5f1a9a..a9185efa3 100644 --- a/lasx_8h_source.html +++ b/lasx_8h_source.html @@ -29,7 +29,7 @@ diff --git a/logger-inl_8h_source.html b/logger-inl_8h_source.html index 41369026e..4e5cfd1f8 100644 --- a/logger-inl_8h_source.html +++ b/logger-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/logger_8h_source.html b/logger_8h_source.html index 2fadc7402..6d4922c71 100644 --- a/logger_8h_source.html +++ b/logger_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2base_8h_source.html b/lsx_2base_8h_source.html index 68f43df0f..ad042b3a6 100644 --- a/lsx_2base_8h_source.html +++ b/lsx_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2begin_8h_source.html b/lsx_2begin_8h_source.html index ee8217ebf..f525a0269 100644 --- a/lsx_2begin_8h_source.html +++ b/lsx_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2bitmanipulation_8h_source.html b/lsx_2bitmanipulation_8h_source.html index e987659fa..5d7b7623e 100644 --- a/lsx_2bitmanipulation_8h_source.html +++ b/lsx_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2bitmask_8h_source.html b/lsx_2bitmask_8h_source.html index 24b7dc328..9379c125d 100644 --- a/lsx_2bitmask_8h_source.html +++ b/lsx_2bitmask_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2end_8h_source.html b/lsx_2end_8h_source.html index 8f057031e..5d2d6674c 100644 --- a/lsx_2end_8h_source.html +++ b/lsx_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2implementation_8h_source.html b/lsx_2implementation_8h_source.html index 847ea3b52..700ba16bf 100644 --- a/lsx_2implementation_8h_source.html +++ b/lsx_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2intrinsics_8h_source.html b/lsx_2intrinsics_8h_source.html index e359d9886..f8dc067c4 100644 --- a/lsx_2intrinsics_8h_source.html +++ b/lsx_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2numberparsing__defs_8h_source.html b/lsx_2numberparsing__defs_8h_source.html index 2d781d304..c98101bda 100644 --- a/lsx_2numberparsing__defs_8h_source.html +++ b/lsx_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2ondemand_8h_source.html b/lsx_2ondemand_8h_source.html index 4f64e196a..be06c2b3e 100644 --- a/lsx_2ondemand_8h_source.html +++ b/lsx_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2simd_8h_source.html b/lsx_2simd_8h_source.html index ec1bf1b06..40d2dffac 100644 --- a/lsx_2simd_8h_source.html +++ b/lsx_2simd_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_2stringparsing__defs_8h_source.html b/lsx_2stringparsing__defs_8h_source.html index b30d6a2de..ff6f93345 100644 --- a/lsx_2stringparsing__defs_8h_source.html +++ b/lsx_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/lsx_8h_source.html b/lsx_8h_source.html index 0a6215b61..1dc684323 100644 --- a/lsx_8h_source.html +++ b/lsx_8h_source.html @@ -29,7 +29,7 @@ diff --git a/md_doc_2basics.html b/md_doc_2basics.html index b0e78f38c..609f37be0 100644 --- a/md_doc_2basics.html +++ b/md_doc_2basics.html @@ -29,7 +29,7 @@ @@ -126,6 +126,7 @@ $(document).ready(function(){initNavTree('md_doc_2basics.html',''); initResizabl
  • UTF-8 validation (alone)
  • JSON Pointer
  • JSONPath
  • +
  • Compile-Time JSONPath and JSON Pointer (C++26 Reflection)
  • Error handling
    • Error handling examples without exceptions
    • Disabling exceptions
    • @@ -162,8 +163,7 @@ Requirements

      Including simdjson

      To include simdjson, copy simdjson.h and simdjson.cpp into your project. Then include it in your project with:

      -
      ++
      -
      #include "simdjson.h"
      +
      #include "simdjson.h"
      using namespace simdjson; // optional
      The top level simdjson namespace, containing everything the library provides.
      Definition base.h:8
      @@ -213,41 +213,33 @@ The basics: loading and parsing JSON documents

      The simdjson library allows you to navigate and validate JSON documents (RFC 8259). As required by the standard, your JSON document should be in a Unicode (UTF-8) string. The whole string, from the beginning to the end, needs to be valid: we do not attempt to tolerate bad inputs before or after a document.

      For efficiency reasons, simdjson requires a string with a few bytes (simdjson::SIMDJSON_PADDING) at the end, these bytes may be read but their content does not affect the parsing. In practice, it means that the JSON inputs should be stored in a memory region with simdjson::SIMDJSON_PADDING extra bytes at the end. You do not have to set these bytes to specific values though you may want to if you want to avoid runtime warnings with some sanitizers. Advanced users may want to read the section Free Padding in our performance notes.

      The simdjson library offers a tree-like API, which you can access by creating a ondemand::parser and calling the iterate() method. The iterate method quickly indexes the input string and may detect some errors. The following example illustrates how to get started with an input JSON file ("twitter.json"):

      -
      ++
      -
      ondemand::parser parser;
      +
      ondemand::parser parser;
      auto json = padded_string::load("twitter.json"); // load JSON file 'twitter.json'.
      ondemand::document doc = parser.iterate(json); // position a pointer at the beginning of the JSON data

      If you prefer not to create your own ondemand::parser instance, you can access a thread-local version by calling ondemand::parser.get_parser().

      -
      ++
      -
      ondemand::document doc = ondemand::parser.get_parser().iterate(json);
      +
      ondemand::document doc = ondemand::parser.get_parser().iterate(json);

      However, you should be careful because a parser instance can only be used for one document at a time, thus it is only applicable when you are only parsing one document per thread at any one time.

      You can also create a padded string—and call iterate():

      -
      ++
      -
      ondemand::parser parser;
      +
      ondemand::parser parser;
      auto json = "[1,2,3]"_padded; // The _padded suffix creates a simdjson::padded_string instance
      ondemand::document doc = parser.iterate(json); // parse a string

      If you have a buffer of your own with enough padding already (SIMDJSON_PADDING extra bytes allocated), you can use padded_string_view to pass it in:

      -
      ++
      -
      ondemand::parser parser;
      +
      ondemand::parser parser;
      char json[3+SIMDJSON_PADDING];
      strcpy(json, "[1]");
      ondemand::document doc = parser.iterate(json, strlen(json), sizeof(json));

      The simdjson library will also accept std::string instances. If the provided reference is non-const, it will allocate padding as needed.

      You can copy your data directly on a simdjson::padded_string as follows:

      -
      ++
      -
      const char * data = "my data"; // 7 bytes
      +
      const char * data = "my data"; // 7 bytes
      simdjson::padded_string my_padded_data(data, 7); // copies to a padded buffer
      String with extra allocation for ease of use with parser::parse()

      Or as follows...

      -
      ++
      -
      std::string data = "my data";
      +
      std::string data = "my data";
      simdjson::padded_string my_padded_data(data); // copies to a padded buffer

      You can then parse the JSON data from the simdjson::padded_string instance:

      -
      ++
      -
      ondemand::document doc = parser.iterate(my_padded_data);
      +
      ondemand::document doc = parser.iterate(my_padded_data);

      Whenever you pass an std::string reference to parser::iterate, the parser will access the bytes beyond the end of the string but before the end of the allocated memory (std::string::capacity()). If you are using a sanitizer that checks for reading uninitialized bytes or std::string's container-overflow checks, you may encounter sanitizer warnings. You can safely ignore these warnings. Or you can call simdjson::pad(std::string&) to pad the string with SIMDJSON_PADDING spaces: this function returns a simdjson::padding_string_view which can be be passed to the parser's iterator function:

      -
      ++
      -
      std::string json = "[1]";
      +
      std::string json = "[1]";
      ondemand::document doc = parser.iterate(simdjson::pad(json));
      padded_string_view pad(std::string &s) noexcept
      Create a padded_string_view from a string.

      We recommend against creating many std::string or many std::padding_string instances in your application to store your JSON data. Consider reusing the same buffers and limiting memory allocations.

      @@ -326,8 +318,7 @@ Using the parsed JSON

    ‍NOTE: JSON allows you to escape characters in keys. E.g., the key "date" may be written as "\u0064\u0061\u0074\u0065". By default, simdjson does not unescape keys when matching. Thus if you search for the key "date" and the JSON document uses "\u0064\u0061\u0074\u0065" as a key, it will not be recognized. This is not generally a problem. Nevertheless, if you do need to support escaped keys, the method unescaped_key() provides the desired unescaped keys by parsing and writing out the unescaped keys to a string buffer and returning a std::string_view instance. The unescaped_key takes an optional Boolean value: passing it true will decode invalid Unicode sequences with replacement, meaning that the decoding always succeeds but bogus Unicode replacement characters are inserted. In general, you should expect a performance penalty when using unescaped_key() compared to key() because of the string processing: the key() function just points inside the source JSON document. As a compromise, you may use escaped_key() which returns astd::string_viewinstance pointing directly in the document, likekey(), although, unlikekey()`, it has to determine the location of the final quote character.

    -
    ++
    -
    auto json = R"({"k\u0065y": 1})"_padded;
    +
    auto json = R"({"k\u0065y": 1})"_padded;
    ondemand::parser parser;
    auto doc = parser.iterate(json);
    ondemand::object object = doc.get_object();
    @@ -342,47 +333,43 @@ Using the parsed JSON
    }

    By default, field lookup is order-insensitive, so you can look up values in any order. However, we still encourage you to look up fields in the order you expect them in the JSON, as it is still faster.

    If you want to enforce finding fields in order, you can use object.find_field("foo") instead. This will only look forward, and will fail to find fields in the wrong order: for example, this will fail:

    -
    ++
    -
    ondemand::parser parser;
    +
    ondemand::parser parser;
    auto json = R"( { "x": 1, "y": 2 } )"_padded;
    auto doc = parser.iterate(json);
    double y = doc.find_field("y"); // The cursor is now after the 2 (at })
    double x = doc.find_field("x"); // This fails, because there are no more fields after "y"

    By contrast, using the default (order-insensitive) lookup succeeds:

    -
    ++
    -
    ondemand::parser parser;
    +
    ondemand::parser parser;
    auto json = R"( { "x": 1, "y": 2 } )"_padded;
    auto doc = parser.iterate(json);
    double y = doc["y"]; // The cursor is now after the 2 (at })
    double x = doc["x"]; // Success: [] loops back around to find "x"

    * Output to strings: Given a document, a value, an array or an object in a JSON document, you can output a JSON string version suitable to be parsed again as JSON content: simdjson::to_json_string(element). A call to to_json_string consumes fully the element: if you apply it on a document, the internal pointer is advanced to the end of the document. The simdjson::to_json_string does not allocate memory. The to_json_string function should not be confused with retrieving the value of a string instance which are escaped and represented using a lightweight std::string_view instance pointing at an internal string buffer inside the parser instance. To illustrate, the first of the following two code segments will print the unescaped string "test" complete with the quote whereas the second one will print the escaped content of the string (without the quotes).

    -

    C++ // serialize a JSON to an escaped std::string instance so that it can be parsed again as JSON auto silly_json = R"( { "test": "result" } )"_padded; ondemand::document doc = parser.iterate(silly_json); std::cout << simdjson::to_json_string(doc["test"]) << std::endl; // Requires simdjson 1.0 or better > @icode{C} ++ // retrieves an unescaped string value as a string_view instance auto silly_json = R"( { "test": "result" } )"_padded; ondemand::document doc = parser.iterate(silly_json); std::cout << std::string_view(doc["test"]) << std::endl; > You can use `to_json_string` to efficiently extract components of a JSON document to reconstruct a new JSON document, as in the following example: @endicode C++ auto cars_json = R"( [ +

    cpp // serialize a JSON to an escaped std::string instance so that it can be parsed again as JSON auto silly_json = R"( { "test": "result" } )"_padded; ondemand::document doc = parser.iterate(silly_json); std::cout << simdjson::to_json_string(doc["test"]) << std::endl; // Requires simdjson 1.0 or better > @icode{cpp} // retrieves an unescaped string value as a string_view instance auto silly_json = R"( { "test": "result" } )"_padded; ondemand::document doc = parser.iterate(silly_json); std::cout << std::string_view(doc["test"]) << std::endl; > You can use `to_json_string` to efficiently extract components of a JSON document to reconstruct a new JSON document, as in the following example: @endicode cpp auto cars_json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] }, { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] }, { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] } ] )"_padded; std::vector<std::string_view> arrays; // We are going to collect string_view instances which point inside the `cars_json` string // and are therefore valid as long as `cars_json` remains in scope. { ondemand::parser parser; for (ondemand::object car : parser.iterate(cars_json)) { if (uint64_t(car["year"]) > 2000) { arrays.push_back(simdjson::to_json_string(car["tire_pressure"])); } } } // We can now convert to a JSON string: std::ostringstream oss; oss << "["; for(size_t i = 0; i < arrays.size(); i++) { if (i>0) { oss << ","; } oss << arrays[i]; } oss << "]"; auto json_string = oss.str(); // json_string == "[[ 40.1, 39.9, 37.7, 40.4 ],[ 30.1, 31.0, 28.6, 28.7 ]]" > </blockquote>* **Extracting Values (without exceptions):** You can use a variant usage ofget()with error codes to avoid exceptions. You first declare the variable of the appropriate type (double, uint64_t,int64_t,bool,ondemand::objectandondemand::array) and pass it by reference toget()` which gives you back an error code: e.g.,

    -
    ++
    -
    auto abstract_json = R"(
    -
    { "str" : { "123" : {"abc" : 3.14 } } }
    -
    )"_padded;
    -
    ondemand::parser parser;
    +
    auto abstract_json = R"(
    +
    { "str" : { "123" : {"abc" : 3.14 } } }
    +
    )"_padded;
    +
    ondemand::parser parser;
    -
    double value;
    -
    auto doc = parser.iterate(abstract_json);
    -
    auto error = doc["str"]["123"]["abc"].get(value);
    -
    if (error) { std::cerr << simdjson::error_message(error) << std::endl; return EXIT_FAILURE; }
    -
    cout << value << endl; // Prints 3.14
    +
    double value;
    +
    auto doc = parser.iterate(abstract_json);
    +
    auto error = doc["str"]["123"]["abc"].get(value);
    +
    if (error) { std::cerr << simdjson::error_message(error) << std::endl; return EXIT_FAILURE; }
    +
    cout << value << endl; // Prints 3.14
    const char * error_message(error_code error) noexcept
    It is the convention throughout the code that the macro SIMDJSON_DEVELOPMENT_CHECKS determines whethe...
    Definition error-inl.h:25

    This examples also show how we can string several operations and only check for the error once, a strategy we call error chaining. Though error chaining makes the code very compact, it also makes error reporting less precise: in this instance, you may get the same error whether the field "str", "123" or "abc" is missing. If you need to break down error handling per operation, avoid error chaining. Furthermore, you should be mindful that chaining that harm performance by encouraging redundancies: writing both doc["str"]["123"]["abc"].get(value) and doc["str"]["123"]["zyw"].get(value) in the same program may force multiple accesses to the same keys ("str" and "123").

    • Counting elements in arrays: Sometimes it is useful to scan an array to determine its length prior to parsing it. For this purpose, array instances have a count_elements method. Users should be aware that the count_elements method can be costly since it requires scanning the whole array. You should only call count_elements as a last resort as it may require scanning the document twice or more. You should never use the count_elements as part of an attempt to iterate through the array: use a for loop to iterate through arrays. In the spirit of On-Demand, the count_elements function does not validate the values in the array: they are validated when they are consumed. You may use it as follows if your document is itself an array:

      -
      ++
      -
      auto cars_json = R"( [ 40.1, 39.9, 37.7, 40.4 ] )"_padded;
      -
      auto doc = parser.iterate(cars_json);
      -
      size_t count = doc.count_elements(); // requires simdjson 1.0 or better
      -
      std::vector<double> values(count);
      -
      size_t index = 0;
      -
      for(double x : doc) { values[index++] = x; }
      +
      auto cars_json = R"( [ 40.1, 39.9, 37.7, 40.4 ] )"_padded;
      +
      auto doc = parser.iterate(cars_json);
      +
      size_t count = doc.count_elements(); // requires simdjson 1.0 or better
      +
      std::vector<double> values(count);
      +
      size_t index = 0;
      +
      for(double x : doc) { values[index++] = x; }

      If you access an array inside a document, you can use the count_elements method as follow. You should not let the array instance go out of scope before consuming it after calling the count_elements method:

      C++
      ondemand::parser parser;
      auto cars_json = R"( { "test":[ { "val1":1, "val2":2 }, { "val1":1, "val2":2 } ] } )"_padded;
      @@ -395,12 +382,11 @@ Using the parsed JSON
      }
    • Counting fields in objects: Other times, it is useful to scan an object to determine the number of fields prior to parsing it. For this purpose, object instances have a count_fields method. Again, users should be aware that the count_fields method can be costly since it requires scanning the whole objects. You should only call count_fields as a last resort as it may require scanning the document twice or more. You may use it as follows if your document is itself an object:

      -
      ++
      -
      ondemand::parser parser;
      -
      auto json = R"( { "test":{ "val1":1, "val2":2 } } )"_padded;
      -
      auto doc = parser.iterate(json);
      -
      size_t count = doc.count_fields(); // requires simdjson 1.0 or better
      -
      std::cout << "Number of fields: " << count << std::endl; // Prints "Number of fields: 1"
      +
      ondemand::parser parser;
      +
      auto json = R"( { "test":{ "val1":1, "val2":2 } } )"_padded;
      +
      auto doc = parser.iterate(json);
      +
      size_t count = doc.count_fields(); // requires simdjson 1.0 or better
      +
      std::cout << "Number of fields: " << count << std::endl; // Prints "Number of fields: 1"

      Similarly to count_elements, you should not let an object instance go out of scope before consuming it after calling the count_fields method. If you access an object inside a document, you can use the count_fields method as follow.

      C++
      ondemand::parser parser;
      auto json = R"( { "test":{ "val1":1, "val2":2 } } )"_padded;
      @@ -417,79 +403,78 @@ Using the parsed JSON
    • Booleans (json_type::boolean),
    • null (json_type::null).
    -

    You must still validate and consume the values (e.g., call is_null()) after calling type(). You may also access the raw JSON string. For example, the following is a quick and dirty recursive function that verbosely prints the JSON document as JSON. This example also illustrates lifecycle requirements: the document instance holds the iterator. The document must remain in scope while you are accessing instances of value, object and array.

    ++
    -
    void recursive_print_json(ondemand::value element) {
    -
    bool add_comma;
    -
    switch (element.type()) {
    -
    case ondemand::json_type::array:
    -
    cout << "[";
    -
    add_comma = false;
    -
    for (auto child : element.get_array()) {
    -
    if (add_comma) {
    -
    cout << ",";
    -
    }
    -
    // We need the call to value() to get
    -
    // an ondemand::value type.
    -
    recursive_print_json(child.value());
    -
    add_comma = true;
    -
    }
    -
    cout << "]";
    -
    break;
    -
    case ondemand::json_type::object:
    -
    cout << "{";
    -
    add_comma = false;
    -
    for (auto field : element.get_object()) {
    -
    if (add_comma) {
    -
    cout << ",";
    -
    }
    -
    // key() returns the key as it appears in the raw
    -
    // JSON document, if we want the unescaped key,
    -
    // we should do field.unescaped_key().
    -
    // We could also use field.escaped_key() if we want
    -
    // a std::string_view instance, but we do not need
    -
    // escaping.
    -
    cout << "\"" << field.key() << "\": ";
    -
    recursive_print_json(field.value());
    -
    add_comma = true;
    -
    }
    -
    cout << "}\n";
    -
    break;
    -
    case ondemand::json_type::number:
    -
    // assume it fits in a double
    -
    cout << element.get_double();
    -
    break;
    -
    case ondemand::json_type::string:
    -
    // get_string() would return escaped string, but
    -
    // we are happy with unescaped string.
    -
    cout << "\"" << element.get_raw_json_string() << "\"";
    -
    break;
    -
    case ondemand::json_type::boolean:
    -
    cout << element.get_bool();
    -
    break;
    -
    case ondemand::json_type::null:
    -
    // We check that the value is indeed null
    -
    // otherwise: an error is thrown.
    -
    if (element.is_null()) {
    -
    cout << "null";
    -
    }
    -
    break;
    -
    case ondemand::json_type::unknown:
    -
    cout << "unknown"; // indicates an error
    -
    break;
    -
    }
    -
    }
    -
    void basics_treewalk() {
    -
    padded_string json = R"( [
    -
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    -
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    -
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    -
    ] )"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    ondemand::value val = doc;
    -
    recursive_print_json(val);
    -
    std::cout << std::endl;
    -
    }
    +

    You must still validate and consume the values (e.g., call is_null()) after calling type(). You may also access the raw JSON string. For example, the following is a quick and dirty recursive function that verbosely prints the JSON document as JSON. This example also illustrates lifecycle requirements: the document instance holds the iterator. The document must remain in scope while you are accessing instances of value, object and array.

    void recursive_print_json(ondemand::value element) {
    +
    bool add_comma;
    +
    switch (element.type()) {
    +
    case ondemand::json_type::array:
    +
    cout << "[";
    +
    add_comma = false;
    +
    for (auto child : element.get_array()) {
    +
    if (add_comma) {
    +
    cout << ",";
    +
    }
    +
    // We need the call to value() to get
    +
    // an ondemand::value type.
    +
    recursive_print_json(child.value());
    +
    add_comma = true;
    +
    }
    +
    cout << "]";
    +
    break;
    +
    case ondemand::json_type::object:
    +
    cout << "{";
    +
    add_comma = false;
    +
    for (auto field : element.get_object()) {
    +
    if (add_comma) {
    +
    cout << ",";
    +
    }
    +
    // key() returns the key as it appears in the raw
    +
    // JSON document, if we want the unescaped key,
    +
    // we should do field.unescaped_key().
    +
    // We could also use field.escaped_key() if we want
    +
    // a std::string_view instance, but we do not need
    +
    // escaping.
    +
    cout << "\"" << field.key() << "\": ";
    +
    recursive_print_json(field.value());
    +
    add_comma = true;
    +
    }
    +
    cout << "}\n";
    +
    break;
    +
    case ondemand::json_type::number:
    +
    // assume it fits in a double
    +
    cout << element.get_double();
    +
    break;
    +
    case ondemand::json_type::string:
    +
    // get_string() would return escaped string, but
    +
    // we are happy with unescaped string.
    +
    cout << "\"" << element.get_raw_json_string() << "\"";
    +
    break;
    +
    case ondemand::json_type::boolean:
    +
    cout << element.get_bool();
    +
    break;
    +
    case ondemand::json_type::null:
    +
    // We check that the value is indeed null
    +
    // otherwise: an error is thrown.
    +
    if (element.is_null()) {
    +
    cout << "null";
    +
    }
    +
    break;
    +
    case ondemand::json_type::unknown:
    +
    cout << "unknown"; // indicates an error
    +
    break;
    +
    }
    +
    }
    +
    void basics_treewalk() {
    +
    padded_string json = R"( [
    +
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    +
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    +
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    +
    ] )"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    ondemand::value val = doc;
    +
    recursive_print_json(val);
    +
    std::cout << std::endl;
    +
    }
  • @@ -498,16 +483,14 @@ Using the parsed JSON Using the parsed JSON: additional examples

    Let us review these concepts with some additional examples. For simplicity, we omit the include clauses (#include "simdjson.h") as well as namespace-using clauses (using namespace simdjson;).

    The first example illustrates how we can chain operations. In this instance, we repeatedly select keys using the bracket operator (doc["str"]) and then finally request a number (using get_double()). It is safe to write code in this manner: if any step causes an error, the error status propagates and an exception is thrown at the end. You do not need to constantly check for errors.

    -
    ++
    -
    auto abstract_json = R"(
    +
    auto abstract_json = R"(
    { "str" : { "123" : {"abc" : 3.14 } } }
    )"_padded;
    ondemand::parser parser;
    auto doc = parser.iterate(abstract_json);
    cout << doc["str"]["123"]["abc"].get_double() << endl; // Prints 3.14

    In the following example, we start with a JSON document that contains an array of objects. We iterate through the objects using a for-loop. Within each object, we use the bracket operator (e.g., car["make"]) to select values. We also show how we can iterate through an array, corresponding to the key tire_pressure, that is contained inside each object.

    -
    ++
    -
    ondemand::parser parser;
    +
    ondemand::parser parser;
    auto cars_json = R"( [
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    @@ -531,8 +514,7 @@ Using the parsed JSON: additional examples
    cout << "- Average tire pressure: " << (total_tire_pressure / 4) << endl;
    }

    The previous example had an array of objects, but we can use essentially the same approach with an object of objects.

    -
    ++
    -
    ondemand::parser parser;
    +
    ondemand::parser parser;
    auto cars_json = R"( {
    "identifier1":{ "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    "identifier2":{ "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    @@ -563,8 +545,7 @@ Using the parsed JSON: additional examples
    cout << "- Average tire pressure: " << (total_tire_pressure / 4) << endl;
    }

    The following example illustrates how you may also iterate through object values, effectively visiting all key-value pairs in the object.

    -
    ++
    -
    #include <iostream>
    +
    #include <iostream>
    #include "simdjson.h"
    using namespace std;
    using namespace simdjson;
    @@ -606,16 +587,14 @@ Adding support for custom types

    1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)

    Suppose you have your own types, such as a Car struct:

    -
    ++
    -
    struct Car {
    +
    struct Car {
    std::string make;
    std::string model;
    int64_t year;
    std::vector<double> tire_pressure;
    };

    You might want to write code that automatically parses the JSON content to your custom type:

    -
    ++
    -
    padded_string json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018,
    +
    padded_string json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018,
    "tire_pressure": [ 40.1, 39.9 ] },
    { "make": "Kia", "model": "Soul", "year": 2012,
    "tire_pressure": [ 30.1, 31.0 ] },
    @@ -631,8 +610,7 @@ Adding support for custom types
    std::cout << c.make << std::endl;
    }

    We may do so by providing additional template definitions to the ondemand::value type. We may start by providing a definition for std::vector<double> as follows. Observe how we guard the code with #if !SIMDJSON_SUPPORTS_CONCEPTS: that is because the necessary code is automatically provided by simdjson if C++20 (and concepts) are available. See Use `tag_invoke` for custom types if you have C++20 support.

    -
    ++
    -
    #if !SIMDJSON_SUPPORTS_CONCEPTS
    +
    #if !SIMDJSON_SUPPORTS_CONCEPTS
    // The code is unnecessary with C++20:
    template <>
    @@ -652,8 +630,7 @@ Adding support for custom types
    #endif
    The result of a simdjson operation that could fail.
    Definition error.h:278

    We may then provide support for our Car struct:

    -
    ++
    -
    template <>
    +
    template <>
    simdjson_inline simdjson_result<Car> simdjson::ondemand::value::get() noexcept {
    ondemand::object obj;
    auto error = get_object().get(obj);
    @@ -666,8 +643,7 @@ Adding support for custom types
    return car;
    }

    And that is all that is needed! The following code is a complete example:

    -
    ++
    -
    #include "simdjson.h"
    +
    #include "simdjson.h"
    #include <iostream>
    #include <vector>
    @@ -731,8 +707,7 @@ Adding support for custom types

    Observe that we require an explicit cast (Car c(val) instead of for (Car c : doc) {): it is by design. We require explicit casting.

    If you prefer to avoid exceptions, you may modify the main function as follows:

    -
    ++
    -
    int main(void) {
    +
    int main(void) {
    padded_string json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018,
    "tire_pressure": [ 40.1, 39.9 ] },
    { "make": "Kia", "model": "Soul", "year": 2012,
    @@ -753,8 +728,7 @@ Adding support for custom types
    return EXIT_SUCCESS;
    }

    Our example is limited to ondemand::value instances. If you wish to also be able to map directly the document instance itself to a custom type, you need to provide the definitions to the ondemand::document type. In this instance, we must replace the function with signature simdjson_result<Car> simdjson::ondemand::value::get() with a function having signature simdjson_result<Car> simdjson::ondemand::document::get() &. The following is a complete example:

    -
    ++
    -
    #include "simdjson.h"
    +
    #include "simdjson.h"
    #include <iostream>
    #include <vector>
    @@ -825,15 +799,13 @@ Adding support for custom types

    2. Use <tt>tag_invoke</tt> for custom types (C++20)

    The simdjson library takes advantage of C++20. An immediate benefit is that you can deserialize JSON data directly in standard containers and other standard value types:

    -
    ++
    -
    simdjson::padded_string json = R"({"data" : [1,2,3,4]})"_padded;
    +
    simdjson::padded_string json = R"({"data" : [1,2,3,4]})"_padded;
    simdjson::ondemand::parser parser;
    simdjson::ondemand::document d = parser.iterate(json);
    std::vector<uint8_t> array = d["data"].get<std::vector<uint8_t>>();

    Appending to an existing container is just as easy:

    -
    ++
    -
    std::vector<uint32_t> array = {0, 0};
    +
    std::vector<uint32_t> array = {0, 0};
    simdjson::padded_string json = R"({"data" : [1,2,3,4]})"_padded;
    @@ -846,8 +818,7 @@ Adding support for custom types

    A tag_invoke function serves as a mechanism for customization points. It is not directly part of the C++ standard library but is often used in libraries that implement customization points. The tag_invoke function is typically a generic function that takes a tag type and additional arguments. The first argument is usually a tag type (often an empty struct) that uniquely identifies the customization point (e.g., deserialization of custom types in simdjson). Users or library providers can specialize tag_invoke for their types by defining it in the appropriate namespace, often inline namespace.

    If your system supports C++20, we recommend that you adopt the tag_invoke approach instead to deserialize custom types. It may prove to be considerably simpler. When simdjson detects the necessary support, it sets the SIMDJSON_SUPPORTS_CONCEPTS macro to 1, otherwise it is set to 0.

    Consider a custom class Car:

    -
    ++
    -
    struct Car {
    +
    struct Car {
    std::string make;
    std::string model;
    int year;
    @@ -855,8 +826,7 @@ Adding support for custom types
    };

    Observe how we define the class to use types that simdjson does not directly support (float, int). With C++20 support, the library grabs from the JSON the generic type (double, int) and then it casts it automatically.

    You may support deserializing directly from a JSON value or document to your own Car instance by defining a single tag_invoke function:

    -
    ++
    -
    namespace simdjson {
    +
    namespace simdjson {
    // This tag_invoke MUST be inside simdjson namespace
    template <typename simdjson_value>
    auto tag_invoke(deserialize_tag, simdjson_value &val, Car& car) {
    @@ -937,8 +907,7 @@ Adding support for custom types
    std::cout << c.year << std::endl;
    }

    By default, we support a wide range of standard templates such as std::vector, std::list, std::set, std::stack, std:queue, std:deque, std::priority_queue, std::unordered_set, std::multiset, std::unordered_multiset, std::unique_ptr, std::shared_ptr, std::optional, etc. They are handled automatically.

    -

    E.g., you can recover an std::unique_ptr<Car> like so:

    ++
    -
    int main() {
    +

    E.g., you can recover an std::unique_ptr<Car> like so:

    int main() {
    auto const json = R"( { "make": "Toyota", "model": "Camry", "year": 2018,
    "tire_pressure": [ 40.1, 39.9 ] })"_padded;
    simdjson::ondemand::parser parser;
    @@ -948,8 +917,7 @@ Adding support for custom types
    return EXIT_SUCCESS;
    }

    You may also conditionally fill in std::optional values.

    -
    ++
    - +
    R"( { "car1": { "make": "Toyota", "model": "Camry", "year": 2018,
    "tire_pressure": [ 40.1, 39.9 ] }
    })"_padded;
    @@ -962,8 +930,7 @@ Adding support for custom types
    // car has value Car{"Toyota", "Camry", 2018, {40.1f, 39.9f}}
    // error is simdjson::SUCCESS

    You can also deserialize to map-like types with keys that can be constructed from std::string_view instances:

    -
    ++
    - +
    R"( { "car1": { "make": "Toyota", "model": "Camry", "year": 2018,
    "tire_pressure": [ 40.1, 39.9 ] }
    })"_padded;
    @@ -975,8 +942,7 @@ Adding support for custom types
    // error is simdjson::SUCCESS

    And so forth.

    Advanced users may want to overwrite the defaults provided by the simdjson library. Suppose for example that you want to construct an instance of std::list<Car>, but you also want to filter out any car made by Toyota. You may provide your own tag_invoke function:

    -
    ++
    -
    namespace simdjson {
    +
    namespace simdjson {
    // suppose we want to filter out all Toyotas
    template <typename simdjson_value>
    auto tag_invoke(deserialize_tag, simdjson_value &val, std::list<Car>& car) {
    @@ -1005,8 +971,7 @@ Adding support for custom types
    //...
    #include "simdjson.h"

    Then you can deserialize a type such as Car automatically:

    -
    ++
    -
    struct Car {
    +
    struct Car {
    std::string make;
    std::string model;
    int year;
    @@ -1098,17 +1063,16 @@ The simdjson::from shortcut (experimental, C++20)

    Minifying JSON strings without parsing

    In some cases, you may have valid JSON strings that you do not wish to parse but that you wish to minify. That is, you wish to remove all unnecessary spaces. We have a fast function for this purpose (simdjson::minify(const char * input, size_t length, const char * output, size_t& new_length)). This function does not validate your content, and it does not parse it. It is much faster than parsing the string and re-serializing it in minified form (simdjson::minify(parser.parse())). Usage is relatively simple. You must pass an input pointer with a length parameter, as well as an output pointer and an output length parameter (by reference). The output length parameter is not read, but written to. The output pointer should point to a valid memory region that is as large as the original string length. The input pointer and input length are read, but not written to.

    -
    ++
    -
    // Starts with a valid JSON document as a string.
    -
    // It does not have to be null-terminated.
    -
    const char * some_string = "[ 1, 2, 3, 4] ";
    -
    size_t length = std::strlen(some_string);
    -
    // Create a buffer to receive the minified string. Make sure that there is enough room (length bytes).
    -
    std::unique_ptr<char[]> buffer{new char[length]};
    -
    size_t new_length{}; // It will receive the minified length.
    -
    auto error = simdjson::minify(some_string, length, buffer.get(), new_length);
    -
    if(error) { std::cerr << simdjson::error_message(error); }
    -
    // The buffer variable now has "[1,2,3,4]" and new_length has value 9.
    +
    // Starts with a valid JSON document as a string.
    +
    // It does not have to be null-terminated.
    +
    const char * some_string = "[ 1, 2, 3, 4] ";
    +
    size_t length = std::strlen(some_string);
    +
    // Create a buffer to receive the minified string. Make sure that there is enough room (length bytes).
    +
    std::unique_ptr<char[]> buffer{new char[length]};
    +
    size_t new_length{}; // It will receive the minified length.
    +
    auto error = simdjson::minify(some_string, length, buffer.get(), new_length);
    +
    if(error) { std::cerr << simdjson::error_message(error); }
    +
    // The buffer variable now has "[1,2,3,4]" and new_length has value 9.
    std::string minify(T x)
    Minifies a JSON element or document, printing the smallest possible valid JSON.

    Though it does not validate the JSON input, it will detect when the document ends with an unterminated string. E.g., it would refuse to minify the string "this string is not terminated</tt> because of the missing final quote. @@ -1118,7 +1082,7 @@ Minifying JSON strings without parsing The simdjson library has fast functions to validate UTF-8 strings. They are many times faster than most functions commonly found in libraries. You can use our fast functions, even if you do not care about JSON. -@icode{C} ++ +@icode{cpp} const char * some_string = "[ 1, 2, 3, 4] "; size_t length = std::strlen(some_string); bool is_ok = simdjson::validate_utf8(some_string, length); @@ -1139,7 +1103,7 @@ The simdjson library also supports <a href="simdjson.h" +@endicode + +@icode{cpp} +auto cars_json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] }, { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] }, { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] } ] )"_padded; +ondemand::parser parser; +auto cars = parser.iterate(cars_json); +cout << cars.at_path("[0].tire_pressure[1]") << endl; // Prints 39.9 +@endicode + +@subsection autotoc_md23 C++26 + + +We also support shit +If you have C++26 support with reflection, and you have set the <tt>SIMDJSON_STATIC_REFLECTION</tt> macro, e + +@icode{cpp} +#define SIMDJSON_STATIC_REFLECTION 1 +//... +#include "simdjson.h" +@endicode + +@icode{cpp} +auto cars_json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] }, { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] }, { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] } ] )"_padded; +ondemand::parser parser; +auto cars = parser.iterate(cars_json); +cout << cars.at_path("[0].tire_pressure[1]") << endl; // Prints 39.9 +@endicode + +@section autotoc_md24 Compile-Time JSONPath and JSON Pointer (C++26 Reflection) + +simdjson provides <strong>compile-time validated</strong> JSONPath and JSON Pointer accessors when using C++26 Static Reflection. These accessors validate paths against struct definitions at compile time and generate optimized code with zero runtime overhead. In some cases, we find that it is much faster. Furthermore, it is safer in the sense that the expression +is validated at compile-time. + +<strong>Requirements:</strong> C++26 compiler with P2996 reflection support and <tt>-DSIMDJSON_STATIC_REFLECTION=ON</tt> build flag. + +@icode{cpp} +ondemand::parser parser; +auto doc = parser.iterate(json); + +// Without validation - path parsed at compile time only +std::string_view city; +result = ondemand::json_path::at_path_compiled<".address.city">(doc); +result.get(city); +@endicode + +We further provide type-validation so that you can check that the types are as you expect. + +<strong>See @ref "/home/runner/work/simdjson/simdjson/doc/compile_time_accessors.md" "Compile-Time Accessors" for complete documentation.</strong> + +@section autotoc_md25 Error handling Error handling with exception and a single try/catch clause makes the code simple, but it gives you little control over errors. For easier debugging or more robust error handling, you may want to consider our exception-free approach. @@ -1291,7 +1316,7 @@ Error handling with exception and a single try/catch clause makes the code simpl The entire simdjson API is usable with and without exceptions. All simdjson APIs that can fail return <tt>simdjson_result\<T\></tt>, which is a &lt;value, error_code&gt; pair. You can retrieve the value with .get() without generating an exception, like so: -@icode{c} ++ +@icode{cpp} ondemand::document doc; auto error = parser.iterate(json).get(doc); if(error) { std::cerr << simdjson::error_message(error); exit(1); } @@ -1328,7 +1353,7 @@ set of warnings: they can identify variables that are written to but never other Let us illustrate with an example where we try to access a number that is not valid (<tt>3.14.1</tt>). If we want to proceed without throwing and catching exceptions, we can do so as follows: -@icode{C} ++ +@icode{cpp} bool simple_error_example() { ondemand::parser parser; auto json = R"({"bad number":3.14.1 })"_padded; @@ -1350,7 +1375,7 @@ Observe how we verify the error variable before accessing the retrieved number ( The equivalent with exception handling might look as follows. -@icode{C} ++ +@icode{cpp} bool simple_error_example_except() { TEST_START(); ondemand::parser parser; @@ -1391,7 +1416,7 @@ We can write a "quick start" example where we attempt to parse the following JSO Our program loads the file, selects value corresponding to key <tt>"search_metadata"</tt> which expected to be an object, and then it selects the key <tt>"count"</tt> within that object. -@icode{C} ++ +@icode{cpp} #include <iostream> #include "simdjson.h" @@ -1423,7 +1448,7 @@ triggering exceptions. To do this, we use <tt>["statuses"].at(0)["id"]< Observe how we use the <tt>at</tt> method when querying an index into an array, and not the bracket operator. -@icode{C} ++ +@icode{cpp} #include <iostream> #include "simdjson.h" @@ -1445,11 +1470,11 @@ int main(void) { <em>Important remark</em>: The <tt>at</tt> method can only be called once on an array. It cannot be used to iterate through the values of an array. We deliberately forbid this usage to avoid performance antipatterns. If you need to iterate through the values of an array, you should use a <tt>for</tt> loop. -@subsection autotoc_md23 Error handling examples without exceptions +@subsection autotoc_md26 Error handling examples without exceptions This is how the example in "Using the parsed JSON" could be written using only error code checking (without exceptions): -@icode{c} ++ +@icode{cpp} bool parse() { ondemand::parser parser; auto cars_json = R"( [ { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] }, { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] }, { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] } ] )"_padded; @@ -1502,7 +1527,7 @@ bool parse() { For safety, you should only use our ondemand instances (e.g., <tt>ondemand::object</tt>) after you have initialized them and checked that there is no error: -@icode{c} ++ +@icode{cpp} ondemand::object car; // invalid until the get() succeeds // the `car` instance should not use used before it is initialized error = car_value.get_object().get(car); @@ -1515,7 +1540,7 @@ after you have initialized them and checked that there is no error: The following examples illustrates how to iterate through the content of an object without having to handle exceptions. -@icode{c} ++ +@icode{cpp} auto json = R"({"k\u0065y": 1})"_padded; ondemand::parser parser; ondemand::document doc; @@ -1539,7 +1564,7 @@ having to handle exceptions. } @endicode -@subsection autotoc_md24 Disabling exceptions +@subsection autotoc_md27 Disabling exceptions The simdjson can be build with exceptions entirely disabled. It checks the <tt>__cpp_exceptions</tt> macro at compile time. Even if exceptions are enabled in your compiler, you may still disable exceptions specifically for simdjson, by setting <tt>SIMDJSON_EXCEPTIONS</tt> to <tt>0</tt> (false) at compile-time when building the simdjson library. If you are building with CMake, to ensure you don't write any code that uses exceptions, you compile with <tt>SIMDJSON_EXCEPTIONS=OFF</tt>. For example, if including the project via cmake: @@ -1547,11 +1572,11 @@ The simdjson can be build with exceptions entirely disabled. It checks the <t target_compile_definitions(simdjson PUBLIC SIMDJSON_EXCEPTIONS=OFF) @endicode -@subsection autotoc_md25 Exceptions +@subsection autotoc_md28 Exceptions Users more comfortable with an exception flow may choose to directly cast the <tt>simdjson_result\<T\></tt> to the desired type: -@icode{c} ++ +@icode{cpp} simdjson::ondemand::document doc = parser.iterate(json); // Throws an exception if there was an error! @endicode @@ -1561,7 +1586,7 @@ program from continuing if there was an error. If one is willing to trigger exceptions, it is possible to write simpler code: -@icode{C} ++ +@icode{cpp} #include <iostream> #include "simdjson.h" @@ -1578,7 +1603,7 @@ int main(void) { You can do handle errors gracefully as well... -@icode{C} ++ +@icode{cpp} #include <iostream> #include "simdjson.h" int main(void) { @@ -1597,7 +1622,7 @@ int main(void) { } @endicode -@subsection autotoc_md26 Current location in document +@subsection autotoc_md29 Current location in document Sometimes, it might be helpful to know the current location in the document during iteration. This is especially useful when encountering errors. The <tt>current_location()</tt> method on a <tt>document</tt> instances makes it easy to identify common JSON errors. Users can call the <tt>current_location()</tt> method on a valid document instance to retrieve a <tt>const char *</tt> pointer to the current location in the document. This method also works even after an error has invalidated the document and the parser (e.g. <tt>TAPE_ERROR</tt>, <tt>INCOMPLETE_ARRAY_OR_OBJECT</tt>). @@ -1605,7 +1630,7 @@ When the input was a <tt>padding_string</tt> or another null-termina use the <tt>const char *</tt> pointer as a C string. As an example, consider the following example where we used the exception-free simdjson interface: -@icode{c} ++ +@icode{cpp} auto broken_json = R"( {"double": 13.06, false, "integer": -343} )"_padded; // Missing key ondemand::parser parser; auto doc = parser.iterate(broken_json); @@ -1618,8 +1643,7 @@ if (error) { doc.current_location().get(ptr); // ptr points at 'false, "integer": -343} " which is the location of the error // // Because we pad simdjson::padded_string instances with null characters, you may also do the following: std::cout<< doc.current_location() << std::endl; // Prints "false, "integer": -343} " (location of TAPE_ERROR) }

    You may also use current_location() with exceptions as follows:

    -

    ++
    -
    auto broken_json = R"( {"double": 13.06, false, "integer": -343} )"_padded;
    +

    auto broken_json = R"( {"double": 13.06, false, "integer": -343} )"_padded;
    ondemand::parser parser;
    ondemand::document doc = parser.iterate(broken_json);
    try {
    @@ -1631,8 +1655,7 @@ if (error) {
    Exception thrown when an exception-supporting simdjson method is called.
    Definition error.h:91

    In these examples, we tried to access the "integer" key, but since the parser had to go through a value without a key before (false), a TAPE_ERROR error is thrown. The pointer returned by the current_location() method then points at the location of the error. The current_location() may also be used when the error is triggered by a user action, even if the JSON input is valid. Consider the following example:

    -

    ++
    -
    auto json = R"( [1,2,3] )"_padded;
    +

    auto json = R"( [1,2,3] )"_padded;
    ondemand::parser parser;
    auto doc = parser.iterate(json);
    int64_t i;
    @@ -1643,8 +1666,7 @@ if (error) {
    }

    If the location is invalid (i.e. at the end of a document), the current_location() methods returns an OUT_OF_BOUNDS error. For example:

    -

    ++
    -
    auto json = R"( [1,2,3] )"_padded;
    +

    auto json = R"( [1,2,3] )"_padded;
    ondemand::parser parser;
    auto doc = parser.iterate(json);
    for (auto val : doc) {
    @@ -1654,8 +1676,7 @@ if (error) {

    Conversely, if doc.current_location().error() == simdjson::SUCCESS, then the document has more content.

    Finally, the current_location() method may also be used even when no exceptions/errors are thrown. This can be helpful for users that want to know the current state of iteration during parsing. For example:

    -

    ++
    -
    auto json = R"( [[1,2,3], -23.4, {"key": "value"}, true] )"_padded;
    +

    auto json = R"( [[1,2,3], -23.4, {"key": "value"}, true] )"_padded;
    ondemand::parser parser;
    auto doc = parser.iterate(json);
    for (auto val : doc) {
    @@ -1668,23 +1689,22 @@ if (error) {

    The current_location() method requires a valid document instance. If the iterate function fails to return a valid document, then you cannot use current_location() to identify the location of an error in the input string. The errors reported by iterate function include EMPTY if no JSON document is detected, UTF8_ERROR if the string is not a valid UTF-8 string, UNESCAPED_CHARS if a string contains control characters that must be escaped and UNCLOSED_STRING if there is an unclosed string in the document. We do not provide location information for these errors.

    -

    +

    Checking for trailing content

    The parser validates all parsed content, but your code may exhaust the content while not having processed the entire document. Thus, as a final optional step, you may call at_end() on the document instance. If it returns false, then you may conclude that you have trailing content and that your document is not valid JSON. You may then use doc.current_location() to obtain a pointer to the start of the trailing content.

    Example 1.

    -

    ++
    -
    auto json = R"([1, 2] foo ])"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    ondemand::array array = doc.get_array();
    -
    for (uint64_t values : array) {
    -
    std::cout << values << std::endl;
    -
    }
    -
    if (!doc.at_end()) {
    -
    // In this instance, we will be left pointing at 'foo' since we have consumed the array [1,2].
    -
    std::cerr << "trailing content at byte index " << doc.current_location() - json.data() << std::endl;
    -
    }
    +

    auto json = R"([1, 2] foo ])"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    ondemand::array array = doc.get_array();
    +
    for (uint64_t values : array) {
    +
    std::cout << values << std::endl;
    +
    }
    +
    if (!doc.at_end()) {
    +
    // In this instance, we will be left pointing at 'foo' since we have consumed the array [1,2].
    +
    std::cerr << "trailing content at byte index " << doc.current_location() - json.data() << std::endl;
    +
    }

    Example 2.

    auto json = R"(["extra close"]])"_padded;
    @@ -1695,47 +1715,44 @@ Checking for trailing content
    std::cout << values << std::endl;
    }
    if(!doc.at_end()) {
    -
    std::cerr << "trailing content at byte index " << doc.current_location() - json.data() << std::endl;
    +
    std::cerr << "trailing content at byte index " << doc.current_location() - json.data() << std::endl;
    }
    -
    const char * data() const noexcept
    The string data.

    The at_end() method is equivalent to doc.current_location().error() == simdjson::SUCCESS but more convenient.

    -

    +

    Rewinding

    In some instances, you may need to go through a document more than once. For that purpose, you may call the rewind() method on the document instance. It allows you to restart processing from the beginning without rescanning all of the input data again. It invalidates all values, objects and arrays that you have created so far (including unescaped strings).

    In the following example, we print on the screen the number of cars in the JSON input file before printout the data.

    -

    ++
    -
    ondemand::parser parser;
    -
    auto cars_json = R"( [
    -
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    -
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    -
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    -
    ] )"_padded;
    +

    ondemand::parser parser;
    +
    auto cars_json = R"( [
    +
    { "make": "Toyota", "model": "Camry", "year": 2018, "tire_pressure": [ 40.1, 39.9, 37.7, 40.4 ] },
    +
    { "make": "Kia", "model": "Soul", "year": 2012, "tire_pressure": [ 30.1, 31.0, 28.6, 28.7 ] },
    +
    { "make": "Toyota", "model": "Tercel", "year": 1999, "tire_pressure": [ 29.8, 30.0, 30.2, 30.5 ] }
    +
    ] )"_padded;
    -
    auto doc = parser.iterate(cars_json);
    -
    for (simdjson_unused ondemand::object car : doc) {
    -
    if (car["make"] == "Toyota") { count++; }
    -
    }
    -
    std::cout << "We have " << count << " Toyota cars.\n";
    -
    doc.rewind(); // requires simdjson 1.0 or better
    -
    for (ondemand::object car : doc) {
    -
    cout << "Make/Model: " << std::string_view(car["make"]) << "/" << std::string_view(car["model"]) << endl;
    -
    }
    +
    auto doc = parser.iterate(cars_json);
    +
    for (simdjson_unused ondemand::object car : doc) {
    +
    if (car["make"] == "Toyota") { count++; }
    +
    }
    +
    std::cout << "We have " << count << " Toyota cars.\n";
    +
    doc.rewind(); // requires simdjson 1.0 or better
    +
    for (ondemand::object car : doc) {
    +
    cout << "Make/Model: " << std::string_view(car["make"]) << "/" << std::string_view(car["model"]) << endl;
    +
    }

    Performance note: the On-Demand front-end does not materialize the parsed numbers and other values. If you are accessing everything twice, you may need to parse them twice. Thus the rewind functionality is best suited for cases where the first pass only scans the structure of the document.

    Both arrays and objects have a similar method reset(). It is similar to the document rewind() method, except that it does not rewind the internal string buffer. Thus you should consume values only once even if you can iterate through the array or object more than once. If you unescape a string within an array more than once, you have unsafe code. You must not call reset() on an object or an array as you are iterating through it.

    -

    +

    Newline-Delimited JSON (ndjson) and JSON lines

    When processing large inputs (e.g., in the context of data engineering), engineers commonly serialize data into streams of multiple JSON documents. That is, instead of one large (e.g., 2 GB) JSON document containing multiple records, it is often preferable to write out multiple records as independent JSON documents, to be read one-by-one.

    The simdjson library also supports multithreaded JSON streaming through a large file containing many smaller JSON documents in either ndjson or JSON lines format. If your JSON documents all contain arrays or objects, we even support direct file concatenation without whitespace. However, if there is content between your JSON documents, it should be exclusively ASCII white-space characters.

    The concatenated file has no size restrictions (including larger than 4GB), though each individual document must be no larger than 4 GB.

    Here is an example:

    -

    ++
    -
    auto json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )"_padded;
    +

    auto json = R"({ "foo": 1 } { "foo": 2 } { "foo": 3 } )"_padded;
    ondemand::parser parser;
    ondemand::document_stream docs = parser.iterate_many(json);
    for (auto doc : docs) {
    @@ -1747,8 +1764,7 @@ Newline-Delimited JSON (ndjson) and JSON lines

    As with parser.iterate, when calling parser.iterate_many(string), no copy is made of the provided string input. The provided memory buffer may be accessed each time a JSON document is parsed. Calling parser.iterate_many(string) on a temporary string buffer (e.g., docs = parser.parse_many("[1,2,3]"_padded)) is unsafe (and will not compile) because the document_stream instance needs access to the buffer to return the JSON documents.

    The iterate_many function can also take an optional parameter size_t batch_size which defines the window processing size. It is set by default to a large value (1000000 corresponding to 1 MB). None of your JSON documents should exceed this window size, or else you will get the error simdjson::CAPACITY. You cannot set this window size larger than 4 GB: you will get the error simdjson::CAPACITY. The smaller the window size is, the less memory the function will use. Setting the window size too small (e.g., less than 100 kB) may also impact performance negatively. Leaving it to 1 MB is expected to be a good choice, unless you have some larger documents.

    The following toy examples illustrates how to get capacity errors. It is an artificial example since you should never use a batch_size of 50 bytes (it is far too small).

    -

    ++
    -
    // We are going to set the capacity to 50 bytes which means that we cannot
    +

    // We are going to set the capacity to 50 bytes which means that we cannot
    // loading a document longer than 50 bytes. The first few documents are small,
    // but the last one is large. We will get an error at the last document.
    auto json = R"([1,2,3,4,5] [1,2,3,4,5] [1,2,3,4,5] [1,2,3,4,5] [1,2,3,4,5] [1,2,3,4,5] [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100])"_padded;
    @@ -1790,12 +1806,11 @@ Newline-Delimited JSON (ndjson) and JSON lines

    If your documents are large (e.g., larger than a megabyte), then the iterate_many function is maybe ill-suited. It is really meant to support reading efficiently streams of relatively small documents (e.g., a few kilobytes each). If you have larger documents, you should use other functions like iterate.

    We also provide some support for comma-separated documents and other advanced features. See iterate_many.md for detailed information and design.

    -

    +

    Parsing numbers inside strings

    Though the JSON specification allows for numbers and string values, many engineers choose to integrate the numbers inside strings, e.g., they prefer {"a":"1.9"} to{"a":1.9}. The simdjson library supports parsing valid numbers inside strings which makes it more convenient for people working with those types of documents. This feature is supported through three methods: get_double_in_string, get_int64_in_string and get_uint64_in_string. However, it is important to note that these methods are not substitute to the regular get_double, get_int64 and get_uint64. The usage of the get_*_in_string methods is solely to parse valid JSON numbers inside strings, and so we expect users to call these methods appropriately. In particular, a valid JSON number has no leading and no trailing whitespaces, and the strings "nan", "1e" and "infinity" will not be accepted as valid numbers (although you have access to the raw string with the raw_json_token() method, see General direct access to the raw JSON string ). As an example, suppose we have the following JSON text:

    -

    ++
    -
    auto json =
    +

    auto json =
    {
    "ticker":{
    "base":"BTC",
    @@ -1826,15 +1841,13 @@ Parsing numbers inside strings
    }

    Now, suppose that a user wants to get the time stamp from the timestampstr key. One could do the following:

    -

    ++
    -
    ondemand::parser parser;
    +

    ondemand::parser parser;
    auto doc = parser.iterate(json);
    uint64_t time = doc.at_pointer("/timestampstr").get_uint64_in_string();
    std::cout << time << std::endl; // Prints 1399490941

    Another thing a user might want to do is extract the markets array and get the market name, price and volume. Here is one way to do so:

    -

    ++
    -
    ondemand::parser parser;
    +

    ondemand::parser parser;
    auto doc = parser.iterate(json);
    // Getting markets array
    @@ -1853,8 +1866,7 @@ Parsing numbers inside strings
    */

    Finally, here is an example dealing with errors where the user wants to convert the string "Infinity"("change" key) to a float with infinity value.

    -

    ++
    -
    ondemand::parser parser;
    +

    ondemand::parser parser;
    auto doc = parser.iterate(json);
    // Get "change"/"Infinity" key/value pair
    ondemand::value value = doc.find_field("ticker").find_field("change");
    @@ -1873,7 +1885,7 @@ Parsing numbers inside strings

    It is also important to note that when dealing an invalid number inside a string, simdjson will report a NUMBER_ERROR error if the string begins with a number whereas simdjson will report an INCORRECT_TYPE error otherwise.

    The *_in_string methods can also be called on a single document instance: e.g., when your document consist solely of a quoted number.

    -

    +

    Dynamic Number Types

    The JSON standard does not offer strongly typed numbers. It suggests that using the binary64 type (double in C++) is a safe choice, but little else. Given the JSON array [1.0,1], it is not specified whether it is an array of two floating-point numbers, two integers, or one floating-point number followed by an integer.

    @@ -1892,35 +1904,34 @@ Dynamic Number Types

    You must check the type before accessing the value: it is an error to call get_int64() when number.get_number_type() is not number_type::signed_integer and when number.is_int64() is false. You are responsible for this check as the user of the library.

    The get_number() function is designed with performance in mind. When calling get_number(), you scan the number string only once, determining efficiently the type and storing it in an efficient manner.

    -

    Consider the following example:

    ++
    -
    ondemand::parser parser;
    -
    padded_string docdata = R"([1.0, 3, 1, 3.1415,-13231232,9999999999999999999])"_padded;
    -
    ondemand::document doc = parser.iterate(docdata);
    -
    ondemand::array arr = doc.get_array();
    -
    for(ondemand::value val : arr) {
    -
    std::cout << val << " ";
    -
    std::cout << "negative: " << val.is_negative() << " ";
    -
    std::cout << "is_integer: " << val.is_integer() << " ";
    -
    ondemand::number num = val.get_number();
    -
    ondemand::number_type t = num.get_number_type();
    -
    switch(t) {
    -
    case ondemand::number_type::signed_integer:
    -
    std::cout << "integer: " << int64_t(num) << " ";
    -
    std::cout << "integer: " << num.get_int64() << std::endl;
    -
    break;
    -
    case ondemand::number_type::unsigned_integer:
    -
    std::cout << "large 64-bit integer: " << uint64_t(num) << " ";
    -
    std::cout << "large 64-bit integer: " << num.get_uint64() << std::endl;
    -
    break;
    -
    case ondemand::number_type::floating_point_number:
    -
    std::cout << "float: " << double(num) << " ";
    -
    std::cout << "float: " << num.get_double() << std::endl;
    -
    break;
    -
    case ondemand::number_type::big_integer:
    -
    std::cout << "big-integer: " << val.raw_json_token() << std::endl;
    -
    break;
    -
    }
    -
    }
    +

    Consider the following example:

    ondemand::parser parser;
    +
    padded_string docdata = R"([1.0, 3, 1, 3.1415,-13231232,9999999999999999999])"_padded;
    +
    ondemand::document doc = parser.iterate(docdata);
    +
    ondemand::array arr = doc.get_array();
    +
    for(ondemand::value val : arr) {
    +
    std::cout << val << " ";
    +
    std::cout << "negative: " << val.is_negative() << " ";
    +
    std::cout << "is_integer: " << val.is_integer() << " ";
    +
    ondemand::number num = val.get_number();
    +
    ondemand::number_type t = num.get_number_type();
    +
    switch(t) {
    +
    case ondemand::number_type::signed_integer:
    +
    std::cout << "integer: " << int64_t(num) << " ";
    +
    std::cout << "integer: " << num.get_int64() << std::endl;
    +
    break;
    +
    case ondemand::number_type::unsigned_integer:
    +
    std::cout << "large 64-bit integer: " << uint64_t(num) << " ";
    +
    std::cout << "large 64-bit integer: " << num.get_uint64() << std::endl;
    +
    break;
    +
    case ondemand::number_type::floating_point_number:
    +
    std::cout << "float: " << double(num) << " ";
    +
    std::cout << "float: " << num.get_double() << std::endl;
    +
    break;
    +
    case ondemand::number_type::big_integer:
    +
    std::cout << "big-integer: " << val.raw_json_token() << std::endl;
    +
    break;
    +
    }
    +
    }

    It will output:

    1.0 negative: 0 is_integer: 0 float: 1 float: 1
    @@ -1931,80 +1942,75 @@ Dynamic Number Types
    9999999999999999999 negative: 0 is_integer: 1 large 64-bit integer: 9999999999999999999 large 64-bit integer: 9999999999999999999

    In the following example, we have an array of integers that are outside the valid range of 64-bit signed or unsigned integers. Calling get_number_type() on the values returns ondemand::number_type::big_integer. You can try to represent these big integers as 64-bit floating-point numbers, though you typically lose precision in the process (as illustrated in the example).

    -

    ++
    -
    ondemand::parser parser;
    -
    padded_string docdata = R"([-9223372036854775809, 18446744073709551617, 99999999999999999999999 ])"_padded;
    -
    double dexpected[] = {-9223372036854775808.0, 18446744073709551616.0, 1e23};
    -
    ondemand::document doc = parser.iterate(docdata);
    -
    ondemand::array arr = doc.get_array();
    -
    for(ondemand::value val : arr) {
    -
    if(val.get_number_type() == ondemand::number_type::big_integer) {
    -
    std::cout << val.get_double() << std::endl;
    -
    // might print -9.22337e+18, 1.84467e+19, 1e+23
    -
    }
    -
    }
    +

    ondemand::parser parser;
    +
    padded_string docdata = R"([-9223372036854775809, 18446744073709551617, 99999999999999999999999 ])"_padded;
    +
    double dexpected[] = {-9223372036854775808.0, 18446744073709551616.0, 1e23};
    +
    ondemand::document doc = parser.iterate(docdata);
    +
    ondemand::array arr = doc.get_array();
    +
    for(ondemand::value val : arr) {
    +
    if(val.get_number_type() == ondemand::number_type::big_integer) {
    +
    std::cout << val.get_double() << std::endl;
    +
    // might print -9.22337e+18, 1.84467e+19, 1e+23
    +
    }
    +
    }

    This program might print:

    -9.22337e+18
    1.84467e+19
    1e+23

    You may get access to the underlying string representing the big integer with raw_json_token() and you may parse the resulting number strings using your own parser.

    -

    ++
    -
    ondemand::parser parser;
    -
    padded_string docdata = R"([-9223372036854775809, 18446744073709551617, 99999999999999999999999 ])"_padded;
    -
    ondemand::document doc = parser.iterate(docdata);
    -
    ondemand::array arr = doc.get_array();
    -
    for(ondemand::value val : arr) {
    -
    // val.get_number_type() == ondemand::number_type::big_integer
    -
    if(val.get_number_type() == ondemand::number_type::big_integer) {
    -
    std::string_view token = val.raw_json_token();
    -
    // token = "-9223372036854775809", "18446744073709551617", "99999999999999999999999 "
    -
    std::cout << "'" << token << "'" << std::endl;
    -
    }
    -
    }
    +

    ondemand::parser parser;
    +
    padded_string docdata = R"([-9223372036854775809, 18446744073709551617, 99999999999999999999999 ])"_padded;
    +
    ondemand::document doc = parser.iterate(docdata);
    +
    ondemand::array arr = doc.get_array();
    +
    for(ondemand::value val : arr) {
    +
    // val.get_number_type() == ondemand::number_type::big_integer
    +
    if(val.get_number_type() == ondemand::number_type::big_integer) {
    +
    std::string_view token = val.raw_json_token();
    +
    // token = "-9223372036854775809", "18446744073709551617", "99999999999999999999999 "
    +
    std::cout << "'" << token << "'" << std::endl;
    +
    }
    +
    }

    This code prints the following:

    '-9223372036854775809'
    '18446744073709551617'
    '99999999999999999999999 '

    -

    +

    Raw strings from keys

    It is sometimes useful to have access to a raw (unescaped) string: we make available a minimalist raw_json_string data type which contains a pointer inside the string in the original document, right after the quote. It is accessible via get_raw_json_string() on a string instance and returned by the key() method on an object's field instance. It is always optional: replacing get_raw_json_string() with get_string() and key() by unescaped_key() or escaped_key() returns an string_view instance of the unescaped/unprocessed string.

    You can quickly compare a raw_json_string instance with a target string. You may also unescape the raw_json_string on your own string buffer: parser.unescape(mystr, ptr) advances the provided pointer ptr and returns a string_view instance on the newly serialized string upon success, otherwise it returns an error. When unescaping to your own string buffer, you should ensure that you have sufficient memory space: the total size of the strings plus simdjson::SIMDJSON_PADDING bytes. The following example illustrates how we can unescape JSON string to a user-provided buffer:

    -

    ++
    -
    auto json = R"( {"name": "Jack The Ripper \u0033"} )"_padded;
    -
    // We create a buffer large enough to store all strings we need:
    -
    std::unique_ptr<uint8_t[]> buffer(new uint8_t[json.size() + simdjson::SIMDJSON_PADDING]);
    -
    uint8_t * ptr = buffer.get();
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    // We store our strings as 'string_view' instances in a vector:
    -
    std::vector<std::string_view> mystrings;
    -
    for (auto key_value : doc.get_object()) {
    -
    std::string_view keysv = parser.unescape(key_value.key(), ptr);// writes 'name'
    -
    mystrings.push_back(keysv);
    -
    std::string_view valuesv = parser.unescape(key_value.value().get_raw_json_string(), ptr);
    -
    // writes 'Jack The Ripper 3', escaping the \u0033
    -
    mystrings.push_back(valuesv);
    -
    }
    +

    auto json = R"( {"name": "Jack The Ripper \u0033"} )"_padded;
    +
    // We create a buffer large enough to store all strings we need:
    +
    std::unique_ptr<uint8_t[]> buffer(new uint8_t[json.size() + simdjson::SIMDJSON_PADDING]);
    +
    uint8_t * ptr = buffer.get();
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    // We store our strings as 'string_view' instances in a vector:
    +
    std::vector<std::string_view> mystrings;
    +
    for (auto key_value : doc.get_object()) {
    +
    std::string_view keysv = parser.unescape(key_value.key(), ptr);// writes 'name'
    +
    mystrings.push_back(keysv);
    +
    std::string_view valuesv = parser.unescape(key_value.value().get_raw_json_string(), ptr);
    +
    // writes 'Jack The Ripper 3', escaping the \u0033
    +
    mystrings.push_back(valuesv);
    +
    }
    constexpr size_t SIMDJSON_PADDING
    The amount of padding needed in a buffer to parse JSON.
    Definition base.h:33

    -

    Some users might prefer to have a direct access to a std::string_view instance pointing inside the source document. The key_raw_json_token() method serves this purpose. It provides a view on the key, including the starting quote character, and everything up to the next : character after the final quote character. E.g., if the key is "name" then key_raw_json_token() returns a std::string_view which begins with "name" and may containing trailing white-space characters.

    ++
    -
    auto json = R"( {"name" : "Jack The Ripper \u0033"} )"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    for (auto key_value : doc.get_object()) {
    -
    std::string_view keysv = key_value.key_raw_json_token(); // keysv is "\"name\" "
    -
    }
    +

    Some users might prefer to have a direct access to a std::string_view instance pointing inside the source document. The key_raw_json_token() method serves this purpose. It provides a view on the key, including the starting quote character, and everything up to the next : character after the final quote character. E.g., if the key is "name" then key_raw_json_token() returns a std::string_view which begins with "name" and may containing trailing white-space characters.

    auto json = R"( {"name" : "Jack The Ripper \u0033"} )"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    for (auto key_value : doc.get_object()) {
    +
    std::string_view keysv = key_value.key_raw_json_token(); // keysv is "\"name\" "
    +
    }

    -

    +

    General direct access to the raw JSON string

    If your value is a string, the raw_json_string you get with get_raw_json_string() gives you direct access to the unprocessed string. But the simdjson library allows you to have access to the raw underlying JSON more generally, not just for strings.

    The simdjson library makes explicit assumptions about types. For examples, numbers must be integers (up to 64-bit integers) or binary64 floating-point numbers. Some users have different needs. For example, some users might want to support big integers. The library makes this possible by providing a raw_json_token method which returns a std::string_view instance containing the value as a string which you may then parse as you see fit.

    -

    ++
    -
    simdjson::ondemand::parser parser;
    +

    simdjson::ondemand::parser parser;
    simdjson::padded_string docdata = R"({"value":12321323213213213213213213213211223})"_padded;
    simdjson::ondemand::document doc = parser.iterate(docdata);
    simdjson::ondemand::object obj = doc.get_object();
    @@ -2012,8 +2018,7 @@ General direct access to the raw JSON string
    // token has value 12321323213213213213213213213211223, it points inside the input string

    The raw_json_token method even works when the JSON value is a string. In such cases, it will return the complete string with the quotes and with eventual escaped sequences as in the source document.

    -

    ++
    -
    simdjson::ondemand::parser parser;
    +

    simdjson::ondemand::parser parser;
    simdjson::padded_string docdata = R"({"value":"12321323213213213213213213213211223"})"_padded;
    simdjson::ondemand::document doc = parser.iterate(docdata);
    simdjson::ondemand::object obj = doc.get_object();
    @@ -2025,7 +2030,7 @@ General direct access to the raw JSON string

    std::string_view noquote(std::string_view v) { return {v.data()+1, v.find_last_of('"')-1}; }

    The raw_json_token() method can enable you to provide fallbacks when parsing fails. Consider the following example.

    -

    padded_string json = "{\"key\": NaN}"_padded;
    +

    padded_string json = "{\"key\": NaN}"_padded;
    simdjson::ondemand::parser parser;
    simdjson::ondemand::document doc = parser.iterate(json);
    simdjson::ondemand::object object = doc.get_object();
    @@ -2042,27 +2047,24 @@ General direct access to the raw JSON string

    The NaN is not supported in JSON. However, in the On-Demand API, you can check the string corresponding to the JSON token and determine how to handle it.

    -

    +

    Raw JSON string for objects and arrays

    If your value is an array or an object, raw_json_token() returns effectively a single character ([) or (}) which is not very useful. For arrays and objects, we have another method called raw_json() which consumes (traverses) the array or the object.

    -

    ++
    -
    simdjson::ondemand::parser parser;
    +

    simdjson::ondemand::parser parser;
    simdjson::padded_string docdata = R"({"value":123})"_padded;
    simdjson::ondemand::document doc = parser.iterate(docdata);
    simdjson::ondemand::object obj = doc.get_object();
    string_view token = obj.raw_json(); // gives you `{"value":123}`

    -

    ++
    -
    simdjson::ondemand::parser parser;
    +

    simdjson::ondemand::parser parser;
    simdjson::padded_string docdata = R"([1,2,3])"_padded;
    simdjson::ondemand::document doc = parser.iterate(docdata);
    simdjson::ondemand::array arr = doc.get_array();
    string_view token = arr.raw_json(); // gives you `[1,2,3]`

    Because raw_json() consumes to object or the array, if you want to both have access to the raw string, and also use the array or object, you should call reset().

    -

    ++
    -
    simdjson::ondemand::parser parser;
    +

    simdjson::ondemand::parser parser;
    simdjson::padded_string docdata = R"({"value":123})"_padded;
    simdjson::ondemand::document doc = parser.iterate(docdata);
    simdjson::ondemand::object obj = doc.get_object();
    @@ -2071,28 +2073,26 @@ Raw JSON string for objects and arrays
    uint64_t x = obj["value"]; // gives me 123

    You can use raw_json() with the values inside an array and object. When calling raw_json() on an untyped value, it acts as raw_json() when the value is an array or an object. Otherwise, it acts as raw_json_token(). It is useful if you do not care for the type of the value and just wants a string representation.

    -

    ++
    -
    auto json = R"( [1,2,"fds", {"a":1}, [1,344]] )"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    size_t counter = 0;
    -
    for(auto array: doc) {
    -
    std::string_view raw = array.raw_json();
    -
    // will capture "1", "2", "\"fds\"", "{\"a\":1}", "[1,344]"
    -
    }
    +

    auto json = R"( [1,2,"fds", {"a":1}, [1,344]] )"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    size_t counter = 0;
    +
    for(auto array: doc) {
    +
    std::string_view raw = array.raw_json();
    +
    // will capture "1", "2", "\"fds\"", "{\"a\":1}", "[1,344]"
    +
    }

    -

    ++
    -
    auto json = R"( {"key1":1,"key2":2,"key3":"fds", "key4":{"a":1}, "key5":[1,344]} )"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    size_t counter = 0;
    -
    for(auto key_value: doc.get_object()) {
    -
    std::string_view raw = key_value.value().raw_json();
    -
    // will capture "1", "2", "\"fds\"", "{\"a\":1}", "[1,344]"
    -
    }
    +

    auto json = R"( {"key1":1,"key2":2,"key3":"fds", "key4":{"a":1}, "key5":[1,344]} )"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    size_t counter = 0;
    +
    for(auto key_value: doc.get_object()) {
    +
    std::string_view raw = key_value.value().raw_json();
    +
    // will capture "1", "2", "\"fds\"", "{\"a\":1}", "[1,344]"
    +
    }

    You can use raw_json() to capture the content of some JSON values as std::string_view instances which can be safely used later. The std::string_view instances point inside the original document and do not depend in any way on simdjson. In the following example, we store the std::string_view instances inside a std::vector<std::string_view> instance and print the out after the parsing is concluded:

    -

    padded_string json_padded = "{\"a\":[1,2,3], \"b\": 2, \"c\": \"hello\"}"_padded;
    +

    padded_string json_padded = "{\"a\":[1,2,3], \"b\": 2, \"c\": \"hello\"}"_padded;
    std::vector<std::string_view> fields;
    ondemand::parser parser;
    @@ -2111,12 +2111,11 @@ Raw JSON string for objects and arrays
    }

    -

    +

    Storing directly into an existing string instance

    The simdjson library favours the use of std::string_view instances because it tends to lead to better performance due to causing fewer memory allocations. However, they are cases where you need to store a string result in a std::string instance. You can do so with a templated version of the to_string() method which takes as a parameter a reference to a std::string.

    -

    ++
    -
    auto json = R"({
    +

    auto json = R"({
    "name": "Daniel",
    "age": 42
    })"_padded;
    @@ -2127,20 +2126,18 @@ Storing directly into an existing string instance
    if(error) { /* handle error */ }

    The same routine can be written without exceptions handling:

    -

    ++
    -
    std::string name;
    -
    auto error = doc["name"].get_string(name);
    -
    if (error) { /* handle error */ }
    +

    std::string name;
    +
    auto error = doc["name"].get_string(name);
    +
    if (error) { /* handle error */ }

    The std::string instance, once created, is independent. Unlike our std::string_view instances, it does not point at data that is within our parser instance. The same caveat applies: you should only consume a JSON string once.

    Because get_string() is a template that requires a type that can be assigned a std::string, you can use it with features such as std::optional:

    -

    ++
    -
    auto json = R"({ "foo1": "3.1416" } )"_padded;
    -
    ondemand::parser parser;
    -
    ondemand::document doc = parser.iterate(json);
    -
    std::optional<std::string> value;
    -
    if (doc["foo1"].get_string(value)) { /* error */ }
    -
    // value was populated with "3.1416"
    +

    auto json = R"({ "foo1": "3.1416" } )"_padded;
    +
    ondemand::parser parser;
    +
    ondemand::document doc = parser.iterate(json);
    +
    std::optional<std::string> value;
    +
    if (doc["foo1"].get_string(value)) { /* error */ }
    +
    // value was populated with "3.1416"

    You can generally convert any answer that would return an std::string_view.

    auto json = R"({"\u0062\u0065\u0062\u0065": 2} })"_padded;
    @@ -2155,7 +2152,7 @@ Storing directly into an existing string instance

    You should be mindful of the trade-off: allocating multiple std::string instances can become expensive.

    -

    +

    Thread safety

    We built simdjson with thread safety in mind.

    @@ -2164,7 +2161,7 @@ Thread safety

    The CPU detection, which runs the first time parsing is attempted and switches to the fastest parser for your CPU, is transparent and thread-safe. Our runtime dispatching is based on global objects that are instantiated at the beginning of the main thread and may be discarded at the end of the main thread. If you have multiple threads running and some threads use the library while the main thread is cleaning up resources, you may encounter issues. If you expect such problems, you may consider using std::quick_exit.

    In a threaded environment, stack space is often limited. Running code like simdjson in debug mode may require hundreds of kilobytes of stack memory. Thus stack overflows are a possibility. We recommend you turn on optimization when working in an environment where stack space is limited. If you must run your code in debug mode, we recommend you configure your system to have more stack space. We discourage you from running production code based on a debug build.

    -

    +

    Standard compliance

    The simdjson library is fully compliant with the RFC 8259 JSON specification.

    @@ -2185,12 +2182,12 @@ Standard compliance

    -

    +

    Backwards compatibility

    The only header file supported by simdjson is simdjson.h. Older versions of simdjson published a number of other include files such as document.h or ParsedJson.h alongside simdjson.h; these headers may be moved or removed in future versions.

    -

    +

    Examples

    Some users like to have example. The following code samples illustrate how to process specific JSON inputs. For simplicity, we do not include full error support: this code would throw exceptions on error.

    @@ -2198,8 +2195,7 @@ Examples
  • Example 1: ZuluBBox
  • -

    ++
    -
    struct ZuluBBox {
    +

    struct ZuluBBox {
    double xmin;
    double ymin;
    double width;
    @@ -2302,8 +2298,7 @@ Examples
  • Example 2: Demos
  • -

    ++
    -
    bool example() {
    +

    bool example() {
    auto json = R"+( {
    "5f08a730b280e54fd1e75a7046b93fdc": {
    "file": "/DEMOS/0-9/10_Orbyte.sid",
    @@ -2379,9 +2374,7 @@ Examples
  • Example 3: CRT
  • -

    ++
    -
    -
    bool example() {
    +

    bool example() {
    padded_string padded_input_json = R"([
    { "monitor": [
    { "id": "monitor", "type": "toggle", "label": "monitor" },
    @@ -2457,9 +2450,7 @@ Examples
  • Example 4: Passing an array to a function
  • -

    ++
    -
    -
    #include "simdjson.h"
    +

    #include "simdjson.h"
    #include <iostream>
    // prints the content of the array as hexadecimal 64-bit integers
    @@ -2484,7 +2475,7 @@ Examples

    void example() {
    ondemand::parser parser;
    -
    const padded_string json = R"({ "parent": {"child1": {"name": "John"} , "child2": {"name": "Daniel"}} })"_padded;
    +
    const padded_string json = R"({ "parent": {"child1": {"name": "John"} , "child2": {"name": "Daniel"}} })"_padded;
    auto doc = parser.iterate(json);
    ondemand::object parent = doc["parent"];
    // parent owns the focus
    @@ -2502,7 +2493,7 @@ Examples
    }

    -

    +

    Performance tips

      @@ -2547,21 +2538,19 @@ Performance tips
      }
      }
    -
  • If possible, refer to each object and array in your code once. For example, the following code repeatedly refers to the "data" key to create an object...
    ++
    -
    std::string_view make = o["data"]["make"];
    -
    std::string_view model = o["data"]["model"];
    -
    std::string_view year = o["data"]["year"];
    -
    We expect that it is more efficient to access the "data" key once:
    ++
    -
    simdjson::ondemand::object data = o["data"];
    -
    std::string_view model = data["model"];
    -
    std::string_view year = data["year"];
    -
    std::string_view rating = data["rating"];
    +
  • If possible, refer to each object and array in your code once. For example, the following code repeatedly refers to the "data" key to create an object...
    std::string_view make = o["data"]["make"];
    +
    std::string_view model = o["data"]["model"];
    +
    std::string_view year = o["data"]["year"];
    +
    We expect that it is more efficient to access the "data" key once:
    simdjson::ondemand::object data = o["data"];
    +
    std::string_view model = data["model"];
    +
    std::string_view year = data["year"];
    +
    std::string_view rating = data["rating"];
  • You will get better performance if you seek the keys in the order in which they appear in the document. So if processing {"a":1, "b":2, "c":3}, do value1 = data["a"]; value2 = data["b"]; value3 data["c"]; and not value2 = data["b"]; value1 = data["a"]; value3 data["c"];. Of course, it is not always possible to know for sure in which order the keys appear.
  • -

    +

    Further reading

      diff --git a/md_doc_2builder.html b/md_doc_2builder.html index 42f4c6dad..d161661fe 100644 --- a/md_doc_2builder.html +++ b/md_doc_2builder.html @@ -29,7 +29,7 @@
    @@ -110,7 +110,7 @@ $(document).ready(function(){initNavTree('md_doc_2builder.html',''); initResizab -

    +

    Overview: string_builder

    The string_builder class is a low-level utility for constructing JSON strings representing documents. It is optimized for performance, potentially leveraging kernel-specific features like SIMD instructions for tasks such as string escaping. This class supports atomic types (e.g., booleans, numbers, strings) but does not handle composed types directly (like arrays or objects). Note that JSON strings are always encoded as UTF-8.

    An string_builder is created with an initial buffer capacity (e.g., 1kB). The memory is reallocated when needed. The efficiency of string_builder stems from its internal use of a resizable array or buffer. When you append data, it adds the characters to this buffer, resizing it only when necessary, typically in a way that minimizes reallocations. This approach contrasts with regular string concatenation, where each operation creates a new string, copying all previous content, leading to quadratic time complexity for repeated concatenations.

    @@ -141,10 +141,9 @@ Overview: string_builder
  • view(): Returns a view of the written JSON buffer as a simdjson_result<std::string_view> (C++20).
  • The later method (view()) is recommended. For performance reasons, we expect you to explicitly call validate_unicode() as needed (e.g., prior to calling view()).

    -

    +

    Example: string_builder

    -
    ++
    -
    struct Car {
    +
    struct Car {
    std::string make;
    std::string model;
    int64_t year;
    @@ -198,7 +197,7 @@ Example: string_builder
    return false; // there was an error
    }

    In all cases, the std::string_view instance depends the corresponding string_builder instance.

    -

    +

    C++20

    If you have C++20, you can simplify the code, as the std::vector<double> is automatically supported. Further, we can pass the keys (which are compile-time constant) as template parameter (for improved performance).

    Car c = {"Toyota", "Corolla", 2017, {30.0,30.2,30.513,30.79}};
    @@ -259,7 +258,7 @@ C++20
    } // namespace simdjson
    The top level simdjson namespace, containing everything the library provides.
    Definition base.h:8
    -

    +

    C++26 static reflection

    Static reflection (or compile-time reflection) in C++26 introduces a powerful compile-time mechanism that allows a program to inspect and manipulate its own structure, such as types, variables, functions, and other program elements, during compilation. Unlike runtime reflection in languages like Java or Python, C++26’s static reflection operates entirely at compile time, aligning with C++’s emphasis on zero-overhead abstractions and high performance. It means that you can delegate much of the work to the library. If you have a compiler with support C++26 static reflection, you can compile your code with the SIMDJSON_STATIC_REFLECTION macro set:

    #define SIMDJSON_STATIC_REFLECTION 1
    @@ -283,7 +282,7 @@ C++26 static reflection
    // "{\"make\":\"Toyota\",\"model\":\"Corolla\",\"year\":2017,\"tire_pressure\":[30.0,30.2,30.513,30.79]}"
    return true;
    }
    -

    +

    Without <tt>string_buffer</tt> instance

    In some instances, you might want to create a string directly from your own data type. You can create a string directly, without an explicit string_builder instance with the simdjson::to_json template function. (Under the hood a string_builder instance may still be created.)

    struct Car {
    @@ -304,7 +303,7 @@ Without <tt>string_buffer</tt> instance
    auto error = simdjson::to_json(c, s);
    if(error) { /* there was an error */ }

    You can then also add a third parameter for the expected output size in bytes.

    -

    +

    Extracting just some fields

    In some instances, your class might have many fields that you do not want to serialize. You can achieve this result with the simdjson::extract_from template. In the following example, we serialize only the year and price fields on the Car instance.

    struct Car {
    std::string make;
    @@ -320,7 +319,7 @@ Extracting just some fields
    // std::string json_result;
    // auto error = extract_from<"year", "price">(car).get(json_result);
    // if(error) { /* error handling */ }
    -

    +

    Without <tt>string_buffer</tt> instance but with explicit error handling

    If prefer a version without exceptions and explicit error handling, you can use the following pattern:

    std::string json;
    @@ -329,7 +328,7 @@ Without <tt>string_buffer</tt> instance but with explicit error hand
    } else {
    // json contain the serialized JSON
    }
    -

    +

    Customization

    If you want to serialize a value in a custome way, you can do it with a tag_invoke specialization like the following example which will map the year attribute to a string.

    #include <simdjson>
    diff --git a/md_doc_2compile__time__accessors.html b/md_doc_2compile__time__accessors.html new file mode 100644 index 000000000..ecc2d830d --- /dev/null +++ b/md_doc_2compile__time__accessors.html @@ -0,0 +1,527 @@ + + + + + + + +simdjson: Compile-Time JSONPath and JSON Pointer Accessors + + + + + + + + + + + + + + + + +
    +
    +
    simdjson_warn_unused simdjson_inline uint8_t *& simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::string_buf_loc simdjson_warn_unused simdjson_inline uint8_t *& simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::string_buf_loc ( )
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    + + + + + + +
    +
    simdjson 4.1.0 +
    +
    Ridiculously Fast JSON
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Compile-Time JSONPath and JSON Pointer Accessors
    +
    +
    +

    Note: This feature requires C++26 Static Reflection support (P2996) and is currently only available with experimental compilers. You must enable it with -DSIMDJSON_STATIC_REFLECTION=ON when building.

    +

    +Overview

    +

    simdjson provides compile-time JSONPath and JSON Pointer accessors that validate paths against struct definitions at compile time and generate optimized accessor code with zero runtime overhead. This combines the safety of compile-time type checking with the performance of pre-parsed, pre-validated access paths.

    +

    +Requirements

    +
      +
    • C++26 compiler with Static Reflection support (P2996)
    • +
    • Experimental compiler flags:
        +
      • Clang with P2996 support: -std=c++26 -freflection -fexpansion-statements
      • +
      +
    • +
    • Build configuration: -DSIMDJSON_STATIC_REFLECTION=ON
    • +
    +

    +How It Works

    +

    Compile Time:

      +
    1. Path string is parsed and converted to access steps
    2. +
    3. Path is validated against struct definition using reflection
    4. +
    5. Field types are checked and verified
    6. +
    7. Optimized accessor code is generated
    8. +
    +

    Runtime:

      +
    • Direct navigation with no parsing
    • +
    • No validation overhead
    • +
    • No string comparisons for path components
    • +
    • Type-safe extraction
    • +
    +

    +Two Usage Modes

    +

    +Mode 1: With Type Validation (Recommended)

    +

    When you provide a struct type, the compiler validates the entire path at compile time:

    +
    struct User {
    +
    std::string name;
    +
    int age;
    +
    std::vector<std::string> emails;
    +
    };
    +
    +
    const padded_string json = R"({
    +
    "name": "Alice",
    +
    "age": 30,
    +
    "emails": ["alice@example.com", "alice@work.com"]
    +
    })"_padded;
    +
    +
    ondemand::parser parser;
    +
    auto doc = parser.iterate(json);
    +
    +
    // Compile-time validation: checks that User has "name" field of type std::string
    +
    std::string name;
    +
    auto result = ondemand::json_path::at_path_compiled<User, ".name">(doc);
    +
    result.get(name); // name = "Alice"
    +
    +
    // Compile-time validation: checks that "emails" is array-like with string elements
    +
    std::string email;
    +
    result = ondemand::json_path::at_path_compiled<User, ".emails[0]">(doc);
    +
    result.get(email); // email = "alice@example.com"
    +

    Benefits:

      +
    • Compile-time errors if path doesn't exist in struct
    • +
    • Type safety - verifies field types match expected types
    • +
    • Refactoring protection - renaming struct fields causes compile errors
    • +
    +

    What gets validated:

      +
    • Field existence
    • +
    • Field types
    • +
    • Array/container access validity
    • +
    • Nested struct navigation
    • +
    +

    +Mode 2: Without Validation

    +

    When you omit the struct type, the path is parsed at compile time but not validated:

    +
    const padded_string json = R"({
    +
    "name": "Alice",
    +
    "age": 30,
    +
    "address": {"city": "Boston"}
    +
    })"_padded;
    +
    +
    ondemand::parser parser;
    +
    auto doc = parser.iterate(json);
    +
    +
    // No compile-time validation - path is only parsed
    +
    std::string name;
    +
    auto result = ondemand::json_path::at_path_compiled<".name">(doc);
    +
    result.get(name); // name = "Alice"
    +
    +
    std::string_view city;
    +
    result = ondemand::json_path::at_path_compiled<".address.city">(doc);
    +
    result.get(city); // city = "Boston"
    +

    Benefits:

      +
    • Works with dynamic/unknown JSON structures
    • +
    • Still benefits from compile-time path parsing
    • +
    • No runtime string parsing overhead
    • +
    +

    Use when:

      +
    • JSON structure is not known at compile time
    • +
    • Working with varied JSON schemas
    • +
    • Prototyping or exploratory parsing
    • +
    +

    +JSONPath Syntax

    +

    JSONPath uses dot notation and bracket notation for field access:

    +

    +Supported Syntax

    + + + + + + + + + + + + + +
    Syntax Description Example
    .field Dot notation for field access .name, .address.city
    ["field"] Bracket notation with quotes ["name"], ["address"]["city"]
    [index] Array index access [0], [1]
    Mixed Combination of notations .emails[0], ["users"][0].name
    $ prefix Optional root indicator $.name, $["name"]
    +

    +Examples

    +
    struct Address {
    +
    std::string city;
    +
    int zip;
    +
    };
    +
    +
    struct Person {
    +
    std::string name;
    +
    int age;
    +
    Address address;
    +
    std::vector<std::string> emails;
    +
    };
    +
    +
    // Dot notation
    +
    at_path_compiled<Person, ".name">(doc)
    +
    at_path_compiled<Person, ".address.city">(doc)
    +
    +
    // Bracket notation
    +
    at_path_compiled<Person, "[\"name\"]">(doc)
    +
    at_path_compiled<Person, "[\"address\"][\"city\"]">(doc)
    +
    +
    // Array access
    +
    at_path_compiled<Person, ".emails[0]">(doc)
    +
    at_path_compiled<Person, ".emails[1]">(doc)
    +
    +
    // Mixed notation
    +
    at_path_compiled<Person, ".address[\"zip\"]">(doc)
    +
    at_path_compiled<Person, "[\"emails\"][0]">(doc)
    +
    +
    // With root indicator
    +
    at_path_compiled<Person, "$.name">(doc)
    +
    at_path_compiled<Person, "$.address.city">(doc)
    +

    +JSON Pointer Syntax

    +

    JSON Pointer (RFC 6901) uses slash-separated paths:

    +

    +Supported Syntax

    + + + + + + + + + + + +
    Syntax Description Example
    /field Field access /name, /address/city
    /index Array index /0, /1
    ~0 Escaped ~ /field~0name → field~name
    ~1 Escaped / /field~1name → field/name
    +

    +Examples

    +
    struct Car {
    +
    std::string make;
    +
    std::string model;
    +
    int64_t year;
    +
    std::vector<double> tire_pressure;
    +
    };
    +
    +
    // Field access
    +
    at_pointer_compiled<Car, "/make">(doc)
    +
    at_pointer_compiled<Car, "/model">(doc)
    +
    +
    // Array access
    +
    at_pointer_compiled<Car, "/tire_pressure/0">(doc)
    +
    at_pointer_compiled<Car, "/tire_pressure/1">(doc)
    +
    +
    // Root pointer (returns whole document)
    +
    at_pointer_compiled<Car, "">(doc)
    +
    at_pointer_compiled<Car, "/">(doc)
    +

    +API Reference

    +

    +JSONPath Functions

    +
    // With type validation
    +
    template<typename T, constevalutil::fixed_string Path, typename DocOrValue>
    +
    simdjson_result<value> at_path_compiled(DocOrValue& doc_or_val);
    +
    +
    // Without validation
    +
    template<constevalutil::fixed_string Path, typename DocOrValue>
    +
    simdjson_result<value> at_path_compiled(DocOrValue& doc_or_val);
    +

    +JSON Pointer Functions

    +
    // With type validation
    +
    template<typename T, constevalutil::fixed_string Pointer, typename DocOrValue>
    +
    simdjson_result<value> at_pointer_compiled(DocOrValue& doc_or_val);
    +
    +
    // Without validation
    +
    template<constevalutil::fixed_string Pointer, typename DocOrValue>
    +
    simdjson_result<value> at_pointer_compiled(DocOrValue& doc_or_val);
    +

    +Direct Field Extraction

    +

    Extract values directly into variables with compile-time type checking:

    +
    // JSONPath
    +
    template<typename T, constevalutil::fixed_string Path>
    +
    struct path_accessor {
    +
    template<typename DocOrValue, typename FieldType>
    +
    static error_code extract_field(DocOrValue& doc_or_val, FieldType& target);
    +
    };
    +
    +
    // JSON Pointer
    +
    template<typename T, constevalutil::fixed_string Pointer>
    +
    struct pointer_accessor {
    +
    template<typename DocOrValue, typename FieldType>
    +
    static error_code extract_field(DocOrValue& doc_or_val, FieldType& target);
    +
    };
    +

    Example:

    +
    struct User {
    +
    std::string name;
    +
    int age;
    +
    };
    +
    +
    ondemand::parser parser;
    +
    auto doc = parser.iterate(json);
    +
    +
    // Extract directly into variable
    +
    std::string name;
    +
    ondemand::json_path::path_accessor<User, ".name">::extract_field(doc, name);
    +
    +
    int age;
    +
    ondemand::json_path::pointer_accessor<User, "/age">::extract_field(doc, age);
    +

    The compiler verifies that the target variable type matches the field type at the path.

    +

    +Complete Examples

    +

    +Example 1: Validated Access

    +
    #include "simdjson.h"
    +
    using namespace simdjson;
    +
    +
    struct Car {
    +
    std::string make;
    +
    std::string model;
    +
    int64_t year;
    +
    std::vector<double> tire_pressure;
    +
    };
    +
    +
    int main() {
    +
    const padded_string json = R"({
    +
    "make": "Toyota",
    +
    "model": "Camry",
    +
    "year": 2018,
    +
    "tire_pressure": [40.1, 39.9, 37.7, 40.4]
    +
    })"_padded;
    +
    +
    ondemand::parser parser;
    +
    auto doc = parser.iterate(json);
    +
    +
    // Type-validated access
    +
    std::string make;
    +
    auto result = ondemand::json_path::at_path_compiled<Car, ".make">(doc);
    +
    result.get(make); // make = "Toyota"
    +
    +
    // Array access with validation
    +
    double pressure;
    +
    result = ondemand::json_path::at_path_compiled<Car, ".tire_pressure[1]">(doc);
    +
    result.get(pressure); // pressure = 39.9
    +
    +
    return 0;
    +
    }
    +
    The top level simdjson namespace, containing everything the library provides.
    Definition base.h:8
    + +
    String with extra allocation for ease of use with parser::parse()
    +

    +Example 2: Non-Validated Access

    +
    #include "simdjson.h"
    +
    using namespace simdjson;
    +
    +
    int main() {
    +
    const padded_string json = R"({
    +
    "user": {
    +
    "name": "Alice",
    +
    "preferences": {
    +
    "theme": "dark",
    +
    "notifications": true
    +
    }
    +
    }
    +
    })"_padded;
    +
    +
    ondemand::parser parser;
    +
    auto doc = parser.iterate(json);
    +
    +
    // No validation - works with any JSON structure
    +
    std::string_view theme;
    +
    auto result = ondemand::json_path::at_path_compiled<".user.preferences.theme">(doc);
    +
    result.get(theme); // theme = "dark"
    +
    +
    bool notifications;
    +
    result = ondemand::json_path::at_path_compiled<".user.preferences.notifications">(doc);
    +
    result.get(notifications); // notifications = true
    +
    +
    return 0;
    +
    }
    +

    +Example 3: Direct Extraction

    +
    #include "simdjson.h"
    +
    using namespace simdjson;
    +
    +
    struct Person {
    +
    std::string name;
    +
    int age;
    +
    std::vector<std::string> emails;
    +
    };
    +
    +
    int main() {
    +
    const padded_string json = R"({
    +
    "name": "Bob",
    +
    "age": 25,
    +
    "emails": ["bob@example.com", "bob@work.com"]
    +
    })"_padded;
    +
    +
    ondemand::parser parser;
    +
    auto doc = parser.iterate(json);
    +
    +
    // Extract with type validation
    +
    std::string name;
    +
    ondemand::json_path::path_accessor<Person, ".name">::extract_field(doc, name);
    +
    // name = "Bob"
    +
    +
    int age;
    +
    ondemand::json_path::pointer_accessor<Person, "/age">::extract_field(doc, age);
    +
    // age = 25
    +
    +
    std::string email;
    +
    ondemand::json_path::path_accessor<Person, ".emails[0]">::extract_field(doc, email);
    +
    // email = "bob@example.com"
    +
    +
    return 0;
    +
    }
    +

    +Error Handling

    +

    Compile-time errors occur when:

      +
    • Path doesn't exist in struct: static_assert failure
    • +
    • Field type mismatch: static_assert failure
    • +
    • Invalid array access on non-array field: static_assert failure
    • +
    +

    Runtime errors occur when:

      +
    • JSON structure doesn't match expected structure
    • +
    • Array index out of bounds
    • +
    • Type conversion failures
    • +
    +
    struct User {
    +
    std::string name;
    +
    int age;
    +
    };
    +
    +
    // Compile-time error: no "email" field in User
    +
    // auto result = ondemand::json_path::at_path_compiled<User, ".email">(doc);
    +
    +
    // Compile-time error: age is not an array
    +
    // auto result = ondemand::json_path::at_path_compiled<User, ".age[0]">(doc);
    +
    +
    // Runtime error if JSON doesn't have "name" field
    +
    auto result = ondemand::json_path::at_path_compiled<User, ".name">(doc);
    +
    std::string name;
    +
    if (result.get(name) != SUCCESS) {
    +
    // Handle error
    +
    }
    +

    +Performance

    +

    Compile-time accessors provide:

      +
    • Zero path parsing overhead - paths parsed at compile time
    • +
    • Zero validation overhead - validation done at compile time
    • +
    • Direct field access - no runtime path traversal
    • +
    • Type-safe extraction - no dynamic type checking
    • +
    +

    Compared to runtime at_path() and at_pointer():

      +
    • Eliminates runtime path string parsing
    • +
    • Eliminates runtime path validation
    • +
    • Generates optimal code path directly
    • +
    +

    +Limitations

    +
      +
    • Requires C++26 compiler with P2996 support (experimental)
    • +
    • Paths must be compile-time constants (string literals)
    • +
    • Cannot use runtime-computed paths
    • +
    • Limited to struct types that support reflection
    • +
    • Array indices must be compile-time constants in the path
    • +
    +

    +When to Use

    +

    Use compile-time accessors when:

      +
    • You have well-defined struct types
    • +
    • JSON structure is known at compile time
    • +
    • You want maximum type safety
    • +
    • Performance is critical
    • +
    +

    Use runtime at_path()/at_pointer() when:

      +
    • JSON structure varies or is unknown
    • +
    • Paths are computed at runtime
    • +
    • Working with C++20 or earlier
    • +
    • Flexibility is more important than compile-time checks
    • +
    +

    +See Also

    + +
    +
    +
    + + + + diff --git a/md_doc_2dom.html b/md_doc_2dom.html index 01f18292a..ac4a5d0a6 100644 --- a/md_doc_2dom.html +++ b/md_doc_2dom.html @@ -29,7 +29,7 @@
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    @@ -185,11 +185,11 @@ The Tape
    38 r // pointing to 0 (start root)
    -

    +

    General formal of the tape elements

    Most tape elements are written as ‘('c’ << 56) + xwhere'c'‘ is some ASCII character determining the type of the element (out of 't’, 'f', 'n', 'l', 'u', 'd', '"', '{', '}', '[', ']' ,'r') and where x is a 56-bit value called the payload. The payload is normally interpreted as an unsigned 56-bit integer. Note that 56-bit integers can be quite large.

    Performance consideration: We believe that accessing the tape in regular units of 64 bits is more important for performance than saving memory.

    -

    +

    Simple JSON values

    Simple JSON nodes are represented with one tape element:

      @@ -197,7 +197,7 @@ Simple JSON values
    • true is represented as the 64-bit value('t' << 56).
    • false is represented as the 64-bit value('f' << 56)`.
    -

    +

    Integer and Double values

    Integer values are represented as two 64-bit tape elements:

    • The 64-bit value ‘('l’ << 56)followed by the 64-bit integer value literally. Integer values are assumed to be signed 64-bit values, using two's complement notation.
    • @@ -207,7 +207,7 @@ Integer and Double values
    • The 64-bit value ‘('d’ << 56)` followed by the 64-bit double value literally in standard IEEE 754 notation.

    Performance consideration: We store numbers of the main tape because we believe that locality of reference is helpful for performance.

    -

    +

    Root node

    Each JSON document will have two special 64-bit tape elements representing a root node, one at the beginning and one at the end.

      @@ -216,11 +216,11 @@ Root node

    All of the parsed document is located between these two 64-bit tape elements.

    Hint: We can read the first tape element to determine the length of the tape.

    -

    +

    Strings

    We prefix the string data itself by a 32-bit header to be interpreted as a 32-bit integer. It indicates the length of the string. The actual string data starts at an offset of 4 bytes.

    We store string values using UTF-8 encoding with null termination on a separate tape. A string value is represented on the main tape as the 64-bit tape element ‘(’"' << 56) + xwhere the payloadx` is the location on the string tape of the null-terminated string.

    -

    +

    Arrays

    JSON arrays are represented using two 64-bit tape elements.

      @@ -229,7 +229,7 @@ Arrays

    All the content of the array is located between these two tape elements, including arrays and objects.

    Performance consideration: We can skip the content of an array entirely by accessing the first 64-bit tape element, reading the payload and moving to the corresponding index on the tape.

    -

    +

    Objects

    JSON objects are represented using two 64-bit tape elements.

      diff --git a/minify_8h_source.html b/minify_8h_source.html index 114712ae2..1a79feea3 100644 --- a/minify_8h_source.html +++ b/minify_8h_source.html @@ -29,7 +29,7 @@
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
     This enum is used with the dom_parser_implementation::stage1 function. More...
     
    enum  { SIMDJSON_VERSION_MAJOR = 4 -, SIMDJSON_VERSION_MINOR = 0 -, SIMDJSON_VERSION_REVISION = 7 +, SIMDJSON_VERSION_MINOR = 1 +, SIMDJSON_VERSION_REVISION = 0 }
     
    diff --git a/namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html b/namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html index 00e5bb9df..0163c8772 100644 --- a/namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html +++ b/namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html @@ -29,7 +29,7 @@ @@ -146,10 +146,10 @@ Classes
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    - + - +

    Typedefs

    using depth_t = int32_t
    using depth_t = int32_t
     Represents the depth of a JSON value (number of nested arrays/objects).
     
    using number_type = simdjson::SIMDJSON_IMPLEMENTATION::number_type
    using number_type = simdjson::SIMDJSON_IMPLEMENTATION::number_type
     The type of a JSON number.
     
    @@ -171,50 +171,50 @@ Enumerations
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

    Functions

    std::ostream & operator<< (std::ostream &out, json_type type) noexcept
    std::ostream & operator<< (std::ostream &out, json_type type) noexcept
     Write the JSON type to the output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson_result< json_type > &type) noexcept(false)
    std::ostream & operator<< (std::ostream &out, simdjson_result< json_type > &type) noexcept(false)
     Send JSON type to an output stream.
     
    simdjson_inline bool release_parser ()
    simdjson_inline bool release_parser ()
     
    simdjson_unused simdjson_inline bool operator== (const raw_json_string &a, std::string_view c) noexcept
    simdjson_unused simdjson_inline bool operator== (const raw_json_string &a, std::string_view c) noexcept
     Comparisons between raw_json_string and std::string_view instances are potentially unsafe: the user is responsible for providing a string with no unescaped quote.
     
    simdjson_unused simdjson_inline bool operator== (std::string_view c, const raw_json_string &a) noexcept
    simdjson_unused simdjson_inline bool operator== (std::string_view c, const raw_json_string &a) noexcept
     
    simdjson_unused simdjson_inline bool operator!= (const raw_json_string &a, std::string_view c) noexcept
    simdjson_unused simdjson_inline bool operator!= (const raw_json_string &a, std::string_view c) noexcept
     
    simdjson_unused simdjson_inline bool operator!= (std::string_view c, const raw_json_string &a) noexcept
    simdjson_unused simdjson_inline bool operator!= (std::string_view c, const raw_json_string &a) noexcept
     
    simdjson_unused simdjson_inline std::ostream & operator<< (std::ostream &out, const raw_json_string &str) noexcept
    simdjson_unused simdjson_inline std::ostream & operator<< (std::ostream &out, const raw_json_string &str) noexcept
     
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value x)
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value x)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value > x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value > x)
     
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array value)
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array value)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array > x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array > x)
     
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document &value)
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document &value)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference &value)
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference &value)
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document > &&x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document > &&x)
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference > &&x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference > &&x)
     
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object value)
    std::ostream & operator<< (std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object value)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object > x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object > x)
     
    bool is_pointer_well_formed (std::string_view json_pointer) noexcept
    bool is_pointer_well_formed (std::string_view json_pointer) noexcept
     

    Detailed Description

    @@ -228,7 +228,7 @@ Functions
    - +
    using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::depth_t = typedef int32_tusing simdjson::SIMDJSON_IMPLEMENTATION::ondemand::depth_t = typedef int32_t
    @@ -246,7 +246,7 @@ Functions
    - +
    using simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number_type = typedef simdjson::SIMDJSON_IMPLEMENTATION::number_typeusing simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number_type = typedef simdjson::SIMDJSON_IMPLEMENTATION::number_type
    @@ -268,7 +268,7 @@ Functions
    - +
    enum class simdjson::SIMDJSON_IMPLEMENTATION::ondemand::json_typeenum class simdjson::SIMDJSON_IMPLEMENTATION::ondemand::json_type
    - + @@ -337,9 +337,9 @@ Functions
    bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::is_pointer_well_formed bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::is_pointer_well_formed ( std::string_view  json_pointer)
    - + - + @@ -375,7 +375,7 @@ Functions
    simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator!= simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator!= (const raw_json_stringconst raw_json_string a,
    - + @@ -383,7 +383,7 @@ Functions - + @@ -413,7 +413,7 @@ Functions
    simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator!= simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator!= ( std::string_view  c,
    const raw_json_stringconst raw_json_string a 
    - + @@ -421,7 +421,7 @@ Functions - + @@ -451,7 +451,7 @@ Functions
    simdjson_unused simdjson_inline std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< simdjson_unused simdjson_inline std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    const raw_json_stringconst raw_json_string str 
    - + @@ -498,7 +498,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -552,7 +552,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -606,7 +606,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -644,7 +644,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -698,7 +698,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -752,7 +752,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -790,7 +790,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -828,7 +828,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -866,7 +866,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -904,7 +904,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -942,7 +942,7 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + @@ -995,9 +995,9 @@ Functions
    std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< std::ostream & simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<< ( std::ostream &  out,
    - + - + @@ -1036,7 +1036,7 @@ Functions @@ -258,7 +258,7 @@ template<>
    simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator== simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator== (const raw_json_stringconst raw_json_string a,
    - + @@ -1044,7 +1044,7 @@ Functions - + @@ -1071,7 +1071,7 @@ Functions
    simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator== simdjson_unused simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator== ( std::string_view  c,
    const raw_json_stringconst raw_json_string a 
    - + diff --git a/namespacesimdjson_1_1arm64.html b/namespacesimdjson_1_1arm64.html index 6318b5c73..41b47487e 100644 --- a/namespacesimdjson_1_1arm64.html +++ b/namespacesimdjson_1_1arm64.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1dom.html b/namespacesimdjson_1_1dom.html index 69802a3be..a0d036f43 100644 --- a/namespacesimdjson_1_1dom.html +++ b/namespacesimdjson_1_1dom.html @@ -29,7 +29,7 @@ @@ -149,26 +149,26 @@ Enumerations - + - + - + - + - + - + - + - + - +
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::release_parser simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::release_parser ( )
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON

    Functions

    template<>
    simdjson_result< std::string_view > element::get< std::string_view > () const noexcept
    simdjson_result< std::string_view > element::get< std::string_view > () const noexcept
     
    bool is_pointer_well_formed (std::string_view json_pointer) noexcept
    bool is_pointer_well_formed (std::string_view json_pointer) noexcept
     
    std::ostream & operator<< (std::ostream &out, element_type type)
    std::ostream & operator<< (std::ostream &out, element_type type)
     
    std::ostream & operator<< (std::ostream &out, simdjson::dom::element value)
    std::ostream & operator<< (std::ostream &out, simdjson::dom::element value)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::dom::element > x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::dom::element > x)
     
    std::ostream & operator<< (std::ostream &out, simdjson::dom::array value)
    std::ostream & operator<< (std::ostream &out, simdjson::dom::array value)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::dom::array > x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::dom::array > x)
     
    std::ostream & operator<< (std::ostream &out, simdjson::dom::object value)
    std::ostream & operator<< (std::ostream &out, simdjson::dom::object value)
     Print JSON to an output stream.
     
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::dom::object > x)
    std::ostream & operator<< (std::ostream &out, simdjson::simdjson_result< simdjson::dom::object > x)
     

    Detailed Description

    @@ -184,7 +184,7 @@ Functions
    - +
    enum class simdjson::dom::element_typeenum class simdjson::dom::element_type
    - + @@ -286,7 +286,7 @@ template<>
    bool simdjson::dom::is_pointer_well_formed bool simdjson::dom::is_pointer_well_formed ( std::string_view  json_pointer) - + @@ -324,7 +324,7 @@ template<>
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out, - + @@ -377,7 +377,7 @@ template<>
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out, - + @@ -430,7 +430,7 @@ template<>
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out, - + @@ -483,7 +483,7 @@ template<>
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out, - + @@ -521,7 +521,7 @@ template<>
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out, - + @@ -559,7 +559,7 @@ template<> diff --git a/ppc64_2base_8h_source.html b/ppc64_2base_8h_source.html index f07fec614..a2ea01f85 100644 --- a/ppc64_2base_8h_source.html +++ b/ppc64_2base_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2begin_8h_source.html b/ppc64_2begin_8h_source.html index 4bedb7334..a18a112b0 100644 --- a/ppc64_2begin_8h_source.html +++ b/ppc64_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2bitmanipulation_8h_source.html b/ppc64_2bitmanipulation_8h_source.html index a0a965aa9..e06132a0f 100644 --- a/ppc64_2bitmanipulation_8h_source.html +++ b/ppc64_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2bitmask_8h_source.html b/ppc64_2bitmask_8h_source.html index 0f618f7fa..a15e9d318 100644 --- a/ppc64_2bitmask_8h_source.html +++ b/ppc64_2bitmask_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2end_8h_source.html b/ppc64_2end_8h_source.html index c8747fb5e..79f74581d 100644 --- a/ppc64_2end_8h_source.html +++ b/ppc64_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2implementation_8h_source.html b/ppc64_2implementation_8h_source.html index 211385d4b..2138cbb05 100644 --- a/ppc64_2implementation_8h_source.html +++ b/ppc64_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2intrinsics_8h_source.html b/ppc64_2intrinsics_8h_source.html index 688530964..941b50078 100644 --- a/ppc64_2intrinsics_8h_source.html +++ b/ppc64_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2numberparsing__defs_8h_source.html b/ppc64_2numberparsing__defs_8h_source.html index a5633597b..24bb8533c 100644 --- a/ppc64_2numberparsing__defs_8h_source.html +++ b/ppc64_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2ondemand_8h_source.html b/ppc64_2ondemand_8h_source.html index 21dd12a8a..4ee73fa77 100644 --- a/ppc64_2ondemand_8h_source.html +++ b/ppc64_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2simd_8h_source.html b/ppc64_2simd_8h_source.html index eec7633bd..3949d5923 100644 --- a/ppc64_2simd_8h_source.html +++ b/ppc64_2simd_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_2stringparsing__defs_8h_source.html b/ppc64_2stringparsing__defs_8h_source.html index 4bd4ff754..6178f8b6d 100644 --- a/ppc64_2stringparsing__defs_8h_source.html +++ b/ppc64_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ppc64_8h_source.html b/ppc64_8h_source.html index ac6029e07..073c6b57e 100644 --- a/ppc64_8h_source.html +++ b/ppc64_8h_source.html @@ -29,7 +29,7 @@ diff --git a/raw__json__string-inl_8h_source.html b/raw__json__string-inl_8h_source.html index 92cda0c11..1898750b1 100644 --- a/raw__json__string-inl_8h_source.html +++ b/raw__json__string-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -117,43 +117,43 @@ $(document).ready(function(){initNavTree('raw__json__string-inl_8h_source.html',
    13namespace SIMDJSON_IMPLEMENTATION {
    14namespace ondemand {
    15
    -
    16simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
    +
    16simdjson_inline raw_json_string::raw_json_string(const uint8_t * _buf) noexcept : buf{_buf} {}
    17
    -
    18simdjson_inline const char * raw_json_string::raw() const noexcept {
    +
    18simdjson_inline const char * raw_json_string::raw() const noexcept {
    19 return reinterpret_cast<const char *>(buf);
    20}
    21
    -
    22simdjson_inline char raw_json_string::operator[](size_t i) const noexcept {
    -
    23 return reinterpret_cast<const char *>(buf)[i];
    +
    22simdjson_inline char raw_json_string::operator[](size_t i) const noexcept {
    +
    23 return reinterpret_cast<const char *>(buf)[i];
    24}
    25
    -
    26simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(std::string_view target) noexcept {
    -
    27 size_t pos{0};
    -
    28 while(pos < target.size()) {
    -
    29 pos = target.find('"', pos);
    -
    30 if(pos == std::string_view::npos) { return true; }
    -
    31 if(pos != 0 && target[pos-1] != '\\') { return false; }
    -
    32 if(pos > 1 && target[pos-2] == '\\') {
    -
    33 size_t backslash_count{2};
    -
    34 for(size_t i = 3; i <= pos; i++) {
    -
    35 if(target[pos-i] == '\\') { backslash_count++; }
    +
    26simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(std::string_view target) noexcept {
    +
    27 size_t pos{0};
    +
    28 while(pos < target.size()) {
    +
    29 pos = target.find('"', pos);
    +
    30 if(pos == std::string_view::npos) { return true; }
    +
    31 if(pos != 0 && target[pos-1] != '\\') { return false; }
    +
    32 if(pos > 1 && target[pos-2] == '\\') {
    +
    33 size_t backslash_count{2};
    +
    34 for(size_t i = 3; i <= pos; i++) {
    +
    35 if(target[pos-i] == '\\') { backslash_count++; }
    36 else { break; }
    37 }
    -
    38 if(backslash_count % 2 == 0) { return false; }
    +
    38 if(backslash_count % 2 == 0) { return false; }
    39 }
    -
    40 pos++;
    +
    40 pos++;
    41 }
    42 return true;
    43}
    44
    -
    45simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(const char* target) noexcept {
    -
    46 size_t pos{0};
    +
    45simdjson_inline bool raw_json_string::is_free_from_unescaped_quote(const char* target) noexcept {
    +
    46 size_t pos{0};
    47 while(target[pos]) {
    48 const char * result = strchr(target+pos, '"');
    49 if(result == nullptr) { return true; }
    @@ -174,99 +174,99 @@ $(document).ready(function(){initNavTree('raw__json__string-inl_8h_source.html',
    64
    65
    -
    66simdjson_inline bool raw_json_string::unsafe_is_equal(size_t length, std::string_view target) const noexcept {
    +
    66simdjson_inline bool raw_json_string::unsafe_is_equal(size_t length, std::string_view target) const noexcept {
    67 // If we are going to call memcmp, then we must know something about the length of the raw_json_string.
    -
    68 return (length >= target.size()) && (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
    +
    68 return (length >= target.size()) && (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
    69}
    70
    -
    71simdjson_inline bool raw_json_string::unsafe_is_equal(std::string_view target) const noexcept {
    +
    71simdjson_inline bool raw_json_string::unsafe_is_equal(std::string_view target) const noexcept {
    72 // Assumptions: does not contain unescaped quote characters("), and
    73 // the raw content is quote terminated within a valid JSON string.
    -
    74 if(target.size() <= SIMDJSON_PADDING) {
    -
    75 return (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
    +
    74 if(target.size() <= SIMDJSON_PADDING) {
    +
    75 return (raw()[target.size()] == '"') && !memcmp(raw(), target.data(), target.size());
    76 }
    -
    77 const char * r{raw()};
    -
    78 size_t pos{0};
    -
    79 for(;pos < target.size();pos++) {
    -
    80 if(r[pos] != target[pos]) { return false; }
    +
    77 const char * r{raw()};
    +
    78 size_t pos{0};
    +
    79 for(;pos < target.size();pos++) {
    +
    80 if(r[pos] != target[pos]) { return false; }
    81 }
    -
    82 if(r[pos] != '"') { return false; }
    +
    82 if(r[pos] != '"') { return false; }
    83 return true;
    84}
    85
    -
    86simdjson_inline bool raw_json_string::is_equal(std::string_view target) const noexcept {
    -
    87 const char * r{raw()};
    -
    88 size_t pos{0};
    +
    86simdjson_inline bool raw_json_string::is_equal(std::string_view target) const noexcept {
    +
    87 const char * r{raw()};
    +
    88 size_t pos{0};
    89 bool escaping{false};
    -
    90 for(;pos < target.size();pos++) {
    -
    91 if(r[pos] != target[pos]) { return false; }
    +
    90 for(;pos < target.size();pos++) {
    +
    91 if(r[pos] != target[pos]) { return false; }
    92 // if target is a compile-time constant and it is free from
    93 // quotes, then the next part could get optimized away through
    94 // inlining.
    -
    95 if((target[pos] == '"') && !escaping) {
    +
    95 if((target[pos] == '"') && !escaping) {
    96 // We have reached the end of the raw_json_string but
    97 // the target is not done.
    98 return false;
    -
    99 } else if(target[pos] == '\\') {
    +
    99 } else if(target[pos] == '\\') {
    100 escaping = !escaping;
    101 } else {
    102 escaping = false;
    103 }
    104 }
    -
    105 if(r[pos] != '"') { return false; }
    +
    105 if(r[pos] != '"') { return false; }
    106 return true;
    107}
    108
    109
    -
    110simdjson_inline bool raw_json_string::unsafe_is_equal(const char * target) const noexcept {
    +
    110simdjson_inline bool raw_json_string::unsafe_is_equal(const char * target) const noexcept {
    111 // Assumptions: 'target' does not contain unescaped quote characters, is null terminated and
    112 // the raw content is quote terminated within a valid JSON string.
    -
    113 const char * r{raw()};
    -
    114 size_t pos{0};
    -
    115 for(;target[pos];pos++) {
    -
    116 if(r[pos] != target[pos]) { return false; }
    +
    113 const char * r{raw()};
    +
    114 size_t pos{0};
    +
    115 for(;target[pos];pos++) {
    +
    116 if(r[pos] != target[pos]) { return false; }
    117 }
    -
    118 if(r[pos] != '"') { return false; }
    +
    118 if(r[pos] != '"') { return false; }
    119 return true;
    120}
    121
    -
    122simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcept {
    +
    122simdjson_inline bool raw_json_string::is_equal(const char* target) const noexcept {
    123 // Assumptions: does not contain unescaped quote characters, and
    124 // the raw content is quote terminated within a valid JSON string.
    -
    125 const char * r{raw()};
    -
    126 size_t pos{0};
    +
    125 const char * r{raw()};
    +
    126 size_t pos{0};
    127 bool escaping{false};
    -
    128 for(;target[pos];pos++) {
    -
    129 if(r[pos] != target[pos]) { return false; }
    +
    128 for(;target[pos];pos++) {
    +
    129 if(r[pos] != target[pos]) { return false; }
    130 // if target is a compile-time constant and it is free from
    131 // quotes, then the next part could get optimized away through
    132 // inlining.
    -
    133 if((target[pos] == '"') && !escaping) {
    +
    133 if((target[pos] == '"') && !escaping) {
    134 // We have reached the end of the raw_json_string but
    135 // the target is not done.
    136 return false;
    -
    137 } else if(target[pos] == '\\') {
    +
    137 } else if(target[pos] == '\\') {
    138 escaping = !escaping;
    139 } else {
    140 escaping = false;
    141 }
    142 }
    -
    143 if(r[pos] != '"') { return false; }
    +
    143 if(r[pos] != '"') { return false; }
    144 return true;
    145}
    146
    -
    147simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
    -
    148 return a.unsafe_is_equal(c);
    +
    147simdjson_unused simdjson_inline bool operator==(const raw_json_string &a, std::string_view c) noexcept {
    +
    148 return a.unsafe_is_equal(c);
    149}
    150
    @@ -335,7 +335,6 @@ $(document).ready(function(){initNavTree('raw__json__string-inl_8h_source.html',
    213} // namespace simdjson
    214
    215#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_INL_H
    -
    A string escaped per JSON rules, terminated with quote (").
    simdjson_inline bool is_equal(std::string_view target) const noexcept
    This compares the current instance to the std::string_view target: returns true if they are byte-by-b...
    static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept
    Returns true if target is free from unescaped quote.
    diff --git a/raw__json__string_8h_source.html b/raw__json__string_8h_source.html index 767a83377..2d0fb36ec 100644 --- a/raw__json__string_8h_source.html +++ b/raw__json__string_8h_source.html @@ -29,7 +29,7 @@ @@ -117,32 +117,32 @@ $(document).ready(function(){initNavTree('raw__json__string_8h_source.html','');
    37public:
    -
    43 simdjson_inline raw_json_string() noexcept = default;
    +
    43 simdjson_inline raw_json_string() noexcept = default;
    44
    -
    52 simdjson_inline raw_json_string(const uint8_t * _buf) noexcept;
    -
    59 simdjson_inline const char * raw() const noexcept;
    +
    52 simdjson_inline raw_json_string(const uint8_t * _buf) noexcept;
    +
    59 simdjson_inline const char * raw() const noexcept;
    60
    -
    65 simdjson_inline char operator[](size_t i) const noexcept;
    +
    65 simdjson_inline char operator[](size_t i) const noexcept;
    66
    -
    81 simdjson_inline bool unsafe_is_equal(size_t length, std::string_view target) const noexcept;
    +
    81 simdjson_inline bool unsafe_is_equal(size_t length, std::string_view target) const noexcept;
    82
    -
    98 simdjson_inline bool unsafe_is_equal(std::string_view target) const noexcept;
    +
    98 simdjson_inline bool unsafe_is_equal(std::string_view target) const noexcept;
    99
    -
    112 simdjson_inline bool unsafe_is_equal(const char* target) const noexcept;
    +
    112 simdjson_inline bool unsafe_is_equal(const char* target) const noexcept;
    113
    -
    118 simdjson_inline bool is_equal(std::string_view target) const noexcept;
    +
    118 simdjson_inline bool is_equal(std::string_view target) const noexcept;
    119
    -
    124 simdjson_inline bool is_equal(const char* target) const noexcept;
    +
    124 simdjson_inline bool is_equal(const char* target) const noexcept;
    125
    -
    131 static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept;
    -
    132 static simdjson_inline bool is_free_from_unescaped_quote(const char* target) noexcept;
    +
    131 static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept;
    +
    132 static simdjson_inline bool is_free_from_unescaped_quote(const char* target) noexcept;
    133
    -
    134private:
    +
    134private:
    135
    136
    -
    141 simdjson_inline void consume() noexcept { buf = nullptr; }
    +
    141 simdjson_inline void consume() noexcept { buf = nullptr; }
    142
    -
    146 simdjson_inline simdjson_warn_unused bool alive() const noexcept { return buf != nullptr; }
    +
    146 simdjson_inline simdjson_warn_unused bool alive() const noexcept { return buf != nullptr; }
    147
    159 simdjson_inline simdjson_warn_unused simdjson_result<std::string_view> unescape(json_iterator &iter, bool allow_replacement) const noexcept;
    160
    @@ -185,7 +185,6 @@ $(document).ready(function(){initNavTree('raw__json__string_8h_source.html','');
    210} // namespace simdjson
    211
    212#endif // SIMDJSON_GENERIC_ONDEMAND_RAW_JSON_STRING_H
    -
    A string escaped per JSON rules, terminated with quote (").
    simdjson_inline bool is_equal(std::string_view target) const noexcept
    This compares the current instance to the std::string_view target: returns true if they are byte-by-b...
    static simdjson_inline bool is_free_from_unescaped_quote(std::string_view target) noexcept
    Returns true if target is free from unescaped quote.
    diff --git a/search/all_0.js b/search/all_0.js index ab74215e5..059bf1f85 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -1,5 +1,7 @@ var searchData= [ ['1_20specialize_20tt_20simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_0',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['17_20support_1',['C++17 Support',['../md_doc_2dom.html#autotoc_md54',1,'']]] + ['17_20support_1',['C++17 Support',['../md_doc_2dom.html#autotoc_md83',1,'']]], + ['1_3a_20validated_20access_2',['Example 1: Validated Access',['../md_doc_2compile__time__accessors.html#autotoc_md71',1,'']]], + ['1_3a_20with_20type_20validation_20recommended_3',['Mode 1: With Type Validation (Recommended)',['../md_doc_2compile__time__accessors.html#autotoc_md58',1,'']]] ]; diff --git a/search/all_1.js b/search/all_1.js index 0a4fac642..12742c4bf 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,9 +1,12 @@ var searchData= [ ['2_20use_20tt_20tag_5finvoke_20tt_20for_20custom_20types_20c_2020_0',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], - ['20_1',['20',['../md_doc_2basics.html#autotoc_md13',1,'1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)'],['../md_doc_2basics.html#autotoc_md14',1,'2. Use <tt>tag_invoke</tt> for custom types (C++20)'],['../md_doc_2builder.html#autotoc_md44',1,'C++20'],['../md_doc_2basics.html#autotoc_md17',1,'The simdjson::from shortcut (experimental, C++20)']]], - ['20_20features_2',['C++20 features',['../md_doc_2iterate__many.html#autotoc_md87',1,'']]], - ['20_20support_3',['C++20 Support',['../md_doc_2dom.html#autotoc_md55',1,'']]], - ['26_4',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], - ['26_20static_20reflection_5',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md45',1,'']]] + ['20_1',['20',['../md_doc_2basics.html#autotoc_md13',1,'1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)'],['../md_doc_2basics.html#autotoc_md14',1,'2. Use <tt>tag_invoke</tt> for custom types (C++20)'],['../md_doc_2builder.html#autotoc_md47',1,'C++20'],['../md_doc_2basics.html#autotoc_md17',1,'The simdjson::from shortcut (experimental, C++20)']]], + ['20_20features_2',['C++20 features',['../md_doc_2iterate__many.html#autotoc_md116',1,'']]], + ['20_20support_3',['C++20 Support',['../md_doc_2dom.html#autotoc_md84',1,'']]], + ['26_4',['26',['../md_doc_2basics.html#autotoc_md15',1,'3. Using static reflection (C++26)'],['../md_doc_2basics.html#autotoc_md22',1,'C++26'],['../md_doc_2basics.html#autotoc_md23',1,'C++26']]], + ['26_20reflection_5',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['26_20static_20reflection_6',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md48',1,'']]], + ['2_3a_20non_20validated_20access_7',['Example 2: Non-Validated Access',['../md_doc_2compile__time__accessors.html#autotoc_md72',1,'']]], + ['2_3a_20without_20validation_8',['Mode 2: Without Validation',['../md_doc_2compile__time__accessors.html#autotoc_md59',1,'']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 97442ac89..82911e8fb 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,16 +1,19 @@ var searchData= [ - ['macro_0',['NDEBUG macro',['../md_doc_2performance.html#autotoc_md113',1,'']]], + ['macro_0',['NDEBUG macro',['../md_doc_2performance.html#autotoc_md142',1,'']]], ['managers_1',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], - ['manually_20selecting_20the_20implementation_2',['Manually Selecting the Implementation',['../md_doc_2implementation-selection.html#autotoc_md73',1,'']]], + ['manually_20selecting_20the_20implementation_2',['Manually Selecting the Implementation',['../md_doc_2implementation-selection.html#autotoc_md102',1,'']]], ['max_5fcapacity_3',['max_capacity',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a1c1fa76cb23d179fc4e98c2707bd9530',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::max_capacity()'],['../classsimdjson_1_1dom_1_1parser.html#a8bfde4193783adef9c5f12dfc4da3bc0',1,'simdjson::dom::parser::max_capacity() const noexcept']]], ['max_5fdepth_4',['max_depth',['../classsimdjson_1_1dom_1_1parser.html#ab090f596cd0b0c1d34576fd6aae88ee5',1,'simdjson::dom::parser::max_depth()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a53ae6fd25ecdc64171a03f8e542b276c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::max_depth()']]], - ['maximum_20efficiency_5',['maximum efficiency',['../md_doc_2performance.html#autotoc_md114',1,'Reusing the parser for maximum efficiency'],['../md_doc_2dom.html#autotoc_md64',1,'Reusing the parser for maximum efficiency']]], + ['maximum_20efficiency_5',['maximum efficiency',['../md_doc_2performance.html#autotoc_md143',1,'Reusing the parser for maximum efficiency'],['../md_doc_2dom.html#autotoc_md93',1,'Reusing the parser for maximum efficiency']]], ['memalloc_6',['MEMALLOC',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa0e71422c8ae80ebaa11d8d74d64737f',1,'simdjson']]], - ['memory_20capacity_7',['memory capacity',['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity']]], + ['memory_20capacity_7',['memory capacity',['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]], ['minify_8',['minify',['../namespacesimdjson.html#a94bb4244756d764cf0ed7de180ae6520',1,'simdjson::minify(const char *buf, size_t len, char *dst, size_t &dst_len) noexcept'],['../namespacesimdjson.html#aeb4ef5cab43d52da3fdd99cb689aff2c',1,'simdjson::minify(T x)']]], ['minifying_20json_20strings_20without_20parsing_9',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], - ['misprediction_10',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md91',1,'']]], - ['model_20dom_20front_20end_11',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], - ['motivation_12',['motivation',['../md_doc_2iterate__many.html#autotoc_md76',1,'Motivation'],['../md_doc_2parse__many.html#autotoc_md102',1,'Motivation']]] + ['misprediction_10',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md120',1,'']]], + ['mode_201_3a_20with_20type_20validation_20recommended_11',['Mode 1: With Type Validation (Recommended)',['../md_doc_2compile__time__accessors.html#autotoc_md58',1,'']]], + ['mode_202_3a_20without_20validation_12',['Mode 2: Without Validation',['../md_doc_2compile__time__accessors.html#autotoc_md59',1,'']]], + ['model_20dom_20front_20end_13',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], + ['modes_14',['Two Usage Modes',['../md_doc_2compile__time__accessors.html#autotoc_md57',1,'']]], + ['motivation_15',['motivation',['../md_doc_2iterate__many.html#autotoc_md105',1,'Motivation'],['../md_doc_2parse__many.html#autotoc_md131',1,'Motivation']]] ]; diff --git a/search/all_11.js b/search/all_11.js index df8d0ae4c..4d7fb6c62 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -2,21 +2,22 @@ var searchData= [ ['n_5fatom_5ferror_0',['N_ATOM_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4e161f7bd0b3ca10f41a220a75de8cde',1,'simdjson']]], ['name_1',['name',['../classsimdjson_1_1implementation.html#aa1d1e04f5471283ab9b2071ea36adf00',1,'simdjson::implementation']]], - ['ndebug_20macro_2',['NDEBUG macro',['../md_doc_2performance.html#autotoc_md113',1,'']]], - ['ndjson_20and_20json_20lines_3',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md29',1,'']]], - ['newline_20delimited_20json_20ndjson_20and_20json_20lines_4',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md29',1,'']]], + ['ndebug_20macro_2',['NDEBUG macro',['../md_doc_2performance.html#autotoc_md142',1,'']]], + ['ndjson_20and_20json_20lines_3',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md32',1,'']]], + ['newline_20delimited_20json_20ndjson_20and_20json_20lines_4',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md32',1,'']]], ['no_5fsuch_5ffield_5',['NO_SUCH_FIELD',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4a2c71f8eca438b3f0553a2811bdab9a',1,'simdjson']]], - ['node_6',['Root node',['../md_doc_2tape.html#autotoc_md128',1,'']]], - ['notes_7',['Performance Notes',['../md_doc_2performance.html',1,'']]], - ['null_8',['null',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330a37a6259cc0c1dae299a7866489dff0bd',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], - ['null_5fvalue_9',['NULL_VALUE',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa9f0aff2067f91437e50e4872b229e6a',1,'simdjson::dom']]], - ['num_5ferror_5fcodes_10',['NUM_ERROR_CODES',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a69f1b9e7b9970fbb60416ebce2f894c3',1,'simdjson']]], - ['number_11',['number',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330ab1bc248a7ff2b2e95569f56de68615df',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['number_20parsing_12',['Number parsing',['../md_doc_2performance.html#autotoc_md118',1,'']]], - ['number_20types_13',['Dynamic Number Types',['../md_doc_2basics.html#autotoc_md31',1,'']]], - ['number_5ferror_14',['NUMBER_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9adfcabbbd1ddb0843a0f320e062866ae8',1,'simdjson']]], - ['number_5fof_5fslots_15',['number_of_slots',['../classsimdjson_1_1dom_1_1array.html#a26e66312190e016c22093292974490ff',1,'simdjson::dom::array']]], - ['number_5fout_5fof_5frange_16',['NUMBER_OUT_OF_RANGE',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8c779dcc8fb73a4eb8891af3ef65eebb',1,'simdjson']]], - ['number_5ftype_17',['number_type',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a6a2b39df6a1ac51d9fbb7b39a1fcf89c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], - ['numbers_20inside_20strings_18',['Parsing numbers inside strings',['../md_doc_2basics.html#autotoc_md30',1,'']]] + ['node_6',['Root node',['../md_doc_2tape.html#autotoc_md157',1,'']]], + ['non_20validated_20access_7',['Example 2: Non-Validated Access',['../md_doc_2compile__time__accessors.html#autotoc_md72',1,'']]], + ['notes_8',['Performance Notes',['../md_doc_2performance.html',1,'']]], + ['null_9',['null',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330a37a6259cc0c1dae299a7866489dff0bd',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], + ['null_5fvalue_10',['NULL_VALUE',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa9f0aff2067f91437e50e4872b229e6a',1,'simdjson::dom']]], + ['num_5ferror_5fcodes_11',['NUM_ERROR_CODES',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a69f1b9e7b9970fbb60416ebce2f894c3',1,'simdjson']]], + ['number_12',['number',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330ab1bc248a7ff2b2e95569f56de68615df',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], + ['number_20parsing_13',['Number parsing',['../md_doc_2performance.html#autotoc_md147',1,'']]], + ['number_20types_14',['Dynamic Number Types',['../md_doc_2basics.html#autotoc_md34',1,'']]], + ['number_5ferror_15',['NUMBER_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9adfcabbbd1ddb0843a0f320e062866ae8',1,'simdjson']]], + ['number_5fof_5fslots_16',['number_of_slots',['../classsimdjson_1_1dom_1_1array.html#a26e66312190e016c22093292974490ff',1,'simdjson::dom::array']]], + ['number_5fout_5fof_5frange_17',['NUMBER_OUT_OF_RANGE',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8c779dcc8fb73a4eb8891af3ef65eebb',1,'simdjson']]], + ['number_5ftype_18',['number_type',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a6a2b39df6a1ac51d9fbb7b39a1fcf89c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], + ['numbers_20inside_20strings_19',['Parsing numbers inside strings',['../md_doc_2basics.html#autotoc_md33',1,'']]] ]; diff --git a/search/all_12.js b/search/all_12.js index 5f423147d..67c286f1a 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -4,14 +4,14 @@ var searchData= ['object_20iteration_1',['Object iteration',['../group__object.html',1,'']]], ['object_20model_20dom_20front_20end_2',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], ['object_5fiterator_3',['object_iterator',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object_iterator'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html#a9fce67dabeb5dcccd16fa531febec666',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object_iterator::object_iterator()']]], - ['objects_4',['Objects',['../md_doc_2tape.html#autotoc_md131',1,'']]], - ['objects_20and_20arrays_5',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md34',1,'']]], - ['of_20the_20dom_20api_6',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md66',1,'']]], - ['of_20the_20on_20demand_20approach_7',['of the on demand approach',['../md_doc_2ondemand__design.html#autotoc_md99',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md97',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md98',1,'Limitations of the On-Demand Approach']]], - ['of_20the_20tape_20elements_8',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md125',1,'']]], - ['on_20demand_9',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md50',1,'']]], - ['on_20demand_20approach_10',['on demand approach',['../md_doc_2ondemand__design.html#autotoc_md99',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md97',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md98',1,'Limitations of the On-Demand Approach']]], - ['on_20your_20system_11',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], + ['objects_4',['Objects',['../md_doc_2tape.html#autotoc_md160',1,'']]], + ['objects_20and_20arrays_5',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md37',1,'']]], + ['of_20the_20dom_20api_6',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md95',1,'']]], + ['of_20the_20on_20demand_20approach_7',['of the on demand approach',['../md_doc_2ondemand__design.html#autotoc_md128',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md126',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md127',1,'Limitations of the On-Demand Approach']]], + ['of_20the_20tape_20elements_8',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md154',1,'']]], + ['on_20demand_9',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md79',1,'']]], + ['on_20demand_20approach_10',['on demand approach',['../md_doc_2ondemand__design.html#autotoc_md128',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md126',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md127',1,'Limitations of the On-Demand Approach']]], + ['on_20your_20system_11',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], ['open_5fcontainer_12',['open_container',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], ['open_5fcontainers_13',['open_containers',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9c67c6c782f1296319a58ec1586f2329',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation']]], ['operator_20array_14',['operator array',['../classsimdjson_1_1dom_1_1element.html#a71d6bfa627dd66e202f8b402f91a44ac',1,'simdjson::dom::element::operator array()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a08307c0a5552cf8cb06613ed1de48eac',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::operator array()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a93756146a65e835b9358cc652dc53396',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::operator array()']]], @@ -34,13 +34,13 @@ var searchData= ['operator_2b_2b_31',['operator++',['../classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a7b05ed75aa2b2a6d3a17204b9863956a',1,'simdjson::dom::document_stream::iterator::operator++()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a03e0c8d93b86a18b10370d51b99548ef',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::operator++()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a55e0ae33e5e5835c841fd082edab5937',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::operator++()'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a83b3c467632c017400f95ff05d2367b3',1,'simdjson::dom::object::iterator::operator++(int) noexcept'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html#aa26738ad08b7de3be4621a75863118ab',1,'simdjson::dom::object::iterator::operator++() noexcept'],['../classsimdjson_1_1dom_1_1array_1_1iterator.html#a46454681bd5e3a938c04eb89210e7966',1,'simdjson::dom::array::iterator::operator++(int) noexcept'],['../classsimdjson_1_1dom_1_1array_1_1iterator.html#a6ec91111a2bcc9e378d30b47b613fac5',1,'simdjson::dom::array::iterator::operator++() noexcept']]], ['operator_2d_3e_32',['operator->',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af167f69543e1834ffbb57b20839d7365',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base']]], ['operator_3c_33',['operator<',['../classsimdjson_1_1dom_1_1element.html#a2f9448091caf47e5ecc325956e14ed73',1,'simdjson::dom::element']]], - ['operator_3c_3c_34',['operator<<',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ae52a82c2f754a47eb9dac12223b3311d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<()'],['../namespacesimdjson.html#a667605c4c36cfa45bf111d6c76d39284',1,'simdjson::operator<<(std::ostream &out, simdjson_result< padded_string_view > &s) noexcept(false)'],['../namespacesimdjson.html#a73aaf38a36c010a6c5421dbe747c5736',1,'simdjson::operator<<(std::ostream &out, simdjson_result< padded_string > &s) noexcept(false)'],['../namespacesimdjson.html#a2ad10bace3d523b188415e609640536a',1,'simdjson::operator<<(std::ostream &out, const padded_string &s)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a6f753d5e1bc479321c51b54392a96a65',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document &value)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac3a4f6af474f2b5f6d749f7452bb5477',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value x)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a24f9bbfe8b5a3017b4dd4b72dbccec4d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array value)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a386f80798c223c5fdbfc4dd9066a6b99',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson_result< json_type > &type) noexcept(false)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ab10943c6107de5337f376a6939f817af',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, json_type type) noexcept'],['../namespacesimdjson.html#a43514fe76c3095e45f30a050a9551d27',1,'simdjson::operator<<()'],['../namespacesimdjson_1_1dom.html#abdab607221c423b08344548fa442a45a',1,'simdjson::dom::operator<<(std::ostream &out, simdjson::dom::element value)'],['../namespacesimdjson_1_1dom.html#a1c26d3ab6fcbbb3ecb69add4236f0a4d',1,'simdjson::dom::operator<<(std::ostream &out, simdjson::dom::object value)'],['../namespacesimdjson_1_1dom.html#a34e6f2a4920f4dcb683f5730f8d8601b',1,'simdjson::dom::operator<<(std::ostream &out, simdjson::dom::array value)']]], + ['operator_3c_3c_34',['operator<<',['../namespacesimdjson.html#a2ad10bace3d523b188415e609640536a',1,'simdjson::operator<<(std::ostream &out, const padded_string &s)'],['../namespacesimdjson.html#a667605c4c36cfa45bf111d6c76d39284',1,'simdjson::operator<<(std::ostream &out, simdjson_result< padded_string_view > &s) noexcept(false)'],['../namespacesimdjson.html#a73aaf38a36c010a6c5421dbe747c5736',1,'simdjson::operator<<(std::ostream &out, simdjson_result< padded_string > &s) noexcept(false)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ae52a82c2f754a47eb9dac12223b3311d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object value)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a6f753d5e1bc479321c51b54392a96a65',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document &value)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac3a4f6af474f2b5f6d749f7452bb5477',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value x)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a386f80798c223c5fdbfc4dd9066a6b99',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson_result< json_type > &type) noexcept(false)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#a24f9bbfe8b5a3017b4dd4b72dbccec4d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array value)'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ab10943c6107de5337f376a6939f817af',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator<<(std::ostream &out, json_type type) noexcept'],['../namespacesimdjson.html#a43514fe76c3095e45f30a050a9551d27',1,'simdjson::operator<<()'],['../namespacesimdjson_1_1dom.html#abdab607221c423b08344548fa442a45a',1,'simdjson::dom::operator<<(std::ostream &out, simdjson::dom::element value)'],['../namespacesimdjson_1_1dom.html#a1c26d3ab6fcbbb3ecb69add4236f0a4d',1,'simdjson::dom::operator<<(std::ostream &out, simdjson::dom::object value)'],['../namespacesimdjson_1_1dom.html#a34e6f2a4920f4dcb683f5730f8d8601b',1,'simdjson::dom::operator<<(std::ostream &out, simdjson::dom::array value)']]], ['operator_3d_35',['operator=',['../classsimdjson_1_1dom_1_1document__stream.html#abd3e3d38eb32c0cb1a124f89978607a5',1,'simdjson::dom::document_stream::operator=()'],['../classsimdjson_1_1dom_1_1parser.html#af5b61dda345cef1feba7c4529dfe0259',1,'simdjson::dom::parser::operator=()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a6ec32f4aceb19fc554f04f6951979df4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::operator=()'],['../structsimdjson_1_1padded__string.html#aa43b3a8e0df4edcf960f04441dd9b930',1,'simdjson::padded_string::operator=()'],['../classsimdjson_1_1dom_1_1document.html#aeb1930eabfeb1b1ad38102bda81f8ca2',1,'simdjson::dom::document::operator=()']]], ['operator_3d_3d_36',['operator==',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a20cd55e63cf5bdc1561f771b4db1ac1b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::operator==()'],['../classsimdjson_1_1dom_1_1element.html#afbe1c01508f1cc39b41b79596cb5717b',1,'simdjson::dom::element::operator==()'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#aab771b17058b0c93bdd0a8679c2c4d84',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::operator==()']]], ['operator_5b_5d_37',['operator[]',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#ae35cf7c026285a1108e85dd2cc7fd109',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::operator[]()'],['../classsimdjson_1_1dom_1_1object.html#a2691ceae488be203aac2d5ef5b67347f',1,'simdjson::dom::object::operator[](const char *key) const noexcept'],['../classsimdjson_1_1dom_1_1object.html#acc66a2f2eb74fbe359d4064531764f50',1,'simdjson::dom::object::operator[](std::string_view key) const noexcept'],['../classsimdjson_1_1dom_1_1element.html#a367d22eeabc1881a8eb18bae2f2ba3b8',1,'simdjson::dom::element::operator[](const char *key) const noexcept'],['../classsimdjson_1_1dom_1_1element.html#aca693f57d73a5ce95d1f7bedf67289b7',1,'simdjson::dom::element::operator[](std::string_view key) const noexcept']]], ['out_5fof_5fbounds_38',['OUT_OF_BOUNDS',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a3f94172e04ae52a978ea62157140b0de',1,'simdjson']]], ['out_5fof_5fcapacity_39',['OUT_OF_CAPACITY',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a3efa5cb684eb31639e2e36cda195e2d7',1,'simdjson']]], ['out_5fof_5forder_5fiteration_40',['OUT_OF_ORDER_ITERATION',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a351bcafefbbc80a6dadc1ea6c27a35e6',1,'simdjson']]], - ['overview_41',['Overview',['../md_doc_2implementation-selection.html#autotoc_md69',1,'']]], - ['overview_3a_20string_5fbuilder_42',['Overview: string_builder',['../md_doc_2builder.html#autotoc_md42',1,'']]] + ['overview_41',['overview',['../md_doc_2compile__time__accessors.html#autotoc_md54',1,'Overview'],['../md_doc_2implementation-selection.html#autotoc_md98',1,'Overview']]], + ['overview_3a_20string_5fbuilder_42',['Overview: string_builder',['../md_doc_2builder.html#autotoc_md45',1,'']]] ]; diff --git a/search/all_13.js b/search/all_13.js index 1579223f4..a7a538694 100644 --- a/search/all_13.js +++ b/search/all_13.js @@ -4,38 +4,42 @@ var searchData= ['pad_1',['pad',['../namespacesimdjson.html#ac4131fd8cef9c8046d0bc9aee8d44d16',1,'simdjson']]], ['pad_5fwith_5freserve_2',['pad_with_reserve',['../namespacesimdjson.html#a687e6510cd2f94c7dc8a31a6db83d278',1,'simdjson']]], ['padded_5fstring_3',['padded_string',['../structsimdjson_1_1padded__string.html',1,'simdjson::padded_string'],['../structsimdjson_1_1padded__string.html#a8e10a3a5a46a4d58459b052975b0bf66',1,'simdjson::padded_string::padded_string() noexcept'],['../structsimdjson_1_1padded__string.html#ac06ec74c78934565cdf50df163d35476',1,'simdjson::padded_string::padded_string(size_t length) noexcept'],['../structsimdjson_1_1padded__string.html#a1b15f9345c0215e7548df1aa0105de98',1,'simdjson::padded_string::padded_string(const char *data, size_t length) noexcept'],['../structsimdjson_1_1padded__string.html#a44fb0f219f05528e606f79dab7c32482',1,'simdjson::padded_string::padded_string(const std::string &str_) noexcept'],['../structsimdjson_1_1padded__string.html#a6199f5bf259fcac114addeef569cf5a5',1,'simdjson::padded_string::padded_string(std::string_view sv_) noexcept'],['../structsimdjson_1_1padded__string.html#a952eaf7ff8ddf252d9c00a693978a4da',1,'simdjson::padded_string::padded_string(padded_string &&o) noexcept']]], - ['padded_5fstring_5fview_4',['padded_string_view',['../classsimdjson_1_1padded__string__view.html',1,'simdjson::padded_string_view'],['../classsimdjson_1_1padded__string__view.html#a12b33830793e7ab1953b961088a83c3d',1,'simdjson::padded_string_view::padded_string_view(std::string_view s, size_t capacity) noexcept'],['../classsimdjson_1_1padded__string__view.html#aae57856a217294ac218b6372a5e37d9a',1,'simdjson::padded_string_view::padded_string_view(const std::string &s) noexcept'],['../classsimdjson_1_1padded__string__view.html#a47ac0063f7dd0ffd832c5e4439f2de30',1,'simdjson::padded_string_view::padded_string_view(const char *s, size_t len, size_t capacity) noexcept'],['../classsimdjson_1_1padded__string__view.html#aa338ad56304bc79e6ca1fab64af41de0',1,'simdjson::padded_string_view::padded_string_view() noexcept=default'],['../classsimdjson_1_1padded__string__view.html#a184b54acd28046a9c4f2a6cfa5419779',1,'simdjson::padded_string_view::padded_string_view(const uint8_t *s, size_t len, size_t capacity) noexcept']]], - ['padding_5',['padding',['../md_doc_2performance.html#autotoc_md121',1,'Free Padding'],['../classsimdjson_1_1padded__string__view.html#a934e7272d22d6024383eafe07b06773c',1,'simdjson::padded_string_view::padding()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md153',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md147',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md137',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md157',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md160',1,'REQUIRED: Buffer Padding']]], - ['padding_20and_20temporary_20copies_6',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md67',1,'']]], - ['page_20support_7',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md117',1,'']]], + ['padded_5fstring_5fview_4',['padded_string_view',['../classsimdjson_1_1padded__string__view.html#aae57856a217294ac218b6372a5e37d9a',1,'simdjson::padded_string_view::padded_string_view(const std::string &s) noexcept'],['../classsimdjson_1_1padded__string__view.html#a12b33830793e7ab1953b961088a83c3d',1,'simdjson::padded_string_view::padded_string_view(std::string_view s, size_t capacity) noexcept'],['../classsimdjson_1_1padded__string__view.html#a184b54acd28046a9c4f2a6cfa5419779',1,'simdjson::padded_string_view::padded_string_view(const uint8_t *s, size_t len, size_t capacity) noexcept'],['../classsimdjson_1_1padded__string__view.html#a47ac0063f7dd0ffd832c5e4439f2de30',1,'simdjson::padded_string_view::padded_string_view(const char *s, size_t len, size_t capacity) noexcept'],['../classsimdjson_1_1padded__string__view.html#aa338ad56304bc79e6ca1fab64af41de0',1,'simdjson::padded_string_view::padded_string_view() noexcept=default'],['../classsimdjson_1_1padded__string__view.html',1,'simdjson::padded_string_view']]], + ['padding_5',['padding',['../md_doc_2performance.html#autotoc_md150',1,'Free Padding'],['../classsimdjson_1_1padded__string__view.html#a934e7272d22d6024383eafe07b06773c',1,'simdjson::padded_string_view::padding()'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md176',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md184',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md166',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md191',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md188',1,'REQUIRED: Buffer Padding']]], + ['padding_20and_20temporary_20copies_6',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md96',1,'']]], + ['page_20support_7',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md146',1,'']]], ['parse_8',['parse',['../classsimdjson_1_1dom_1_1parser.html#a16c7d1e28125ef7d5703244483f70984',1,'simdjson::dom::parser']]], ['parse_20documents_9',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], ['parse_5finto_5fdocument_10',['parse_into_document',['../classsimdjson_1_1dom_1_1parser.html#a1afc4d3b429363b503a5605d66081e30',1,'simdjson::dom::parser']]], ['parse_5fmany_11',['parse_many',['../classsimdjson_1_1dom_1_1parser.html#a5c658556dd9e9396e9ce44ba4b01f2d1',1,'simdjson::dom::parser::parse_many()'],['../md_doc_2parse__many.html',1,'parse_many']]], - ['parsed_20json_12',['parsed json',['../md_doc_2dom.html#autotoc_md52',1,'Using the Parsed JSON'],['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON']]], + ['parsed_20json_12',['parsed json',['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON'],['../md_doc_2dom.html#autotoc_md81',1,'Using the Parsed JSON']]], ['parsed_20json_3a_20additional_20examples_13',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], - ['parser_14',['parser',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a76abd4d78f0c26d80d3bf436ce212e00',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::parser()'],['../classsimdjson_1_1dom_1_1parser.html',1,'simdjson::dom::parser'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser'],['../classsimdjson_1_1dom_1_1parser.html#a09370efac9e1b7d9b4a8349332e026c3',1,'simdjson::dom::parser::parser(size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept'],['../classsimdjson_1_1dom_1_1parser.html#a3f3c80565fe63857e2901c48e7bed64d',1,'simdjson::dom::parser::parser(parser &&other) noexcept']]], - ['parser_20capacity_15',['parser capacity',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md162',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md133',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md139',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md144',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md149',1,'Parser Capacity']]], + ['parser_14',['parser',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a76abd4d78f0c26d80d3bf436ce212e00',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::parser()'],['../classsimdjson_1_1dom_1_1parser.html#a3f3c80565fe63857e2901c48e7bed64d',1,'simdjson::dom::parser::parser(parser &&other) noexcept'],['../classsimdjson_1_1dom_1_1parser.html#a09370efac9e1b7d9b4a8349332e026c3',1,'simdjson::dom::parser::parser(size_t max_capacity=SIMDJSON_MAXSIZE_BYTES) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser'],['../classsimdjson_1_1dom_1_1parser.html',1,'simdjson::dom::parser']]], + ['parser_20capacity_15',['parser capacity',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md173',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md178',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md168',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md162',1,'Parser Capacity'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md193',1,'Parser Capacity']]], ['parser_20document_20and_20json_20scope_16',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], - ['parser_20for_20maximum_20efficiency_17',['parser for maximum efficiency',['../md_doc_2dom.html#autotoc_md64',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md114',1,'Reusing the parser for maximum efficiency']]], - ['parser_20generators_18',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md90',1,'']]], + ['parser_20for_20maximum_20efficiency_17',['parser for maximum efficiency',['../md_doc_2dom.html#autotoc_md93',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md143',1,'Reusing the parser for maximum efficiency']]], + ['parser_20generators_18',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md119',1,'']]], ['parser_5fin_5fuse_19',['PARSER_IN_USE',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae9067bb5cb6283141b1c66466005ac0d',1,'simdjson']]], - ['parsers_20',['DOM Parsers',['../md_doc_2ondemand__design.html#autotoc_md88',1,'']]], - ['parsers_20sax_20saj_20etc_21',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md89',1,'']]], - ['parsing_22',['parsing',['../md_doc_2basics.html#autotoc_md18',1,'Minifying JSON strings without parsing'],['../md_doc_2performance.html#autotoc_md118',1,'Number parsing'],['../md_doc_2ondemand__design.html#autotoc_md95',1,'String Parsing']]], + ['parsers_20',['DOM Parsers',['../md_doc_2ondemand__design.html#autotoc_md117',1,'']]], + ['parsers_20sax_20saj_20etc_21',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md118',1,'']]], + ['parsing_22',['parsing',['../md_doc_2basics.html#autotoc_md18',1,'Minifying JSON strings without parsing'],['../md_doc_2performance.html#autotoc_md147',1,'Number parsing'],['../md_doc_2ondemand__design.html#autotoc_md124',1,'String Parsing']]], ['parsing_20json_20documents_23',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], - ['parsing_20json_20documents_20using_20the_20dom_20front_20end_24',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['parsing_20numbers_20inside_20strings_25',['Parsing numbers inside strings',['../md_doc_2basics.html#autotoc_md30',1,'']]], + ['parsing_20json_20documents_20using_20the_20dom_20front_20end_24',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['parsing_20numbers_20inside_20strings_25',['Parsing numbers inside strings',['../md_doc_2basics.html#autotoc_md33',1,'']]], ['payload_26',['payload',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa17e81138859bcef934d9502a9852049',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['performance_27',['Performance',['../md_doc_2parse__many.html#autotoc_md103',1,'']]], + ['performance_27',['performance',['../md_doc_2parse__many.html#autotoc_md132',1,'Performance'],['../md_doc_2compile__time__accessors.html#autotoc_md75',1,'Performance']]], ['performance_20notes_28',['Performance Notes',['../md_doc_2performance.html',1,'']]], - ['performance_20tips_29',['performance tips',['../md_doc_2dom.html#autotoc_md68',1,'Performance Tips'],['../md_doc_2basics.html#autotoc_md40',1,'Performance tips']]], + ['performance_20tips_29',['performance tips',['../md_doc_2dom.html#autotoc_md97',1,'Performance Tips'],['../md_doc_2basics.html#autotoc_md43',1,'Performance tips']]], ['pitfalls_3a_20enable_20development_20checks_30',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]], - ['pointer_31',['pointer',['../md_doc_2dom.html#autotoc_md56',1,'JSON Pointer'],['../md_doc_2basics.html#autotoc_md20',1,'JSON Pointer']]], - ['position_32',['position',['../md_doc_2parse__many.html#autotoc_md111',1,'Tracking your position'],['../md_doc_2iterate__many.html#autotoc_md84',1,'Tracking your position']]], - ['power_20usage_20and_20downclocking_33',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md120',1,'']]], - ['pre_20c_2020_34',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['prettify_35',['prettify',['../namespacesimdjson.html#aed443864cc94c09c3f88eea39f8ce645',1,'simdjson']]], - ['process_5fjson_5fpath_5fof_5fchild_5felements_36',['process_json_path_of_child_elements',['../classsimdjson_1_1dom_1_1array.html#aee39c0fbcf1f7f6b75e9a31d86bedfe8',1,'simdjson::dom::array::process_json_path_of_child_elements()'],['../classsimdjson_1_1dom_1_1object.html#a3674739ae68d1e3d7071551a1aad7c4d',1,'simdjson::dom::object::process_json_path_of_child_elements()']]], - ['processes_20and_20memory_20capacity_37',['processes and memory capacity',['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity']]] + ['pointer_31',['pointer',['../md_doc_2dom.html#autotoc_md85',1,'JSON Pointer'],['../md_doc_2basics.html#autotoc_md20',1,'JSON Pointer']]], + ['pointer_20accessors_32',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['pointer_20c_2026_20reflection_33',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['pointer_20functions_34',['JSON Pointer Functions',['../md_doc_2compile__time__accessors.html#autotoc_md68',1,'']]], + ['pointer_20syntax_35',['JSON Pointer Syntax',['../md_doc_2compile__time__accessors.html#autotoc_md63',1,'']]], + ['position_36',['position',['../md_doc_2parse__many.html#autotoc_md140',1,'Tracking your position'],['../md_doc_2iterate__many.html#autotoc_md113',1,'Tracking your position']]], + ['power_20usage_20and_20downclocking_37',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md149',1,'']]], + ['pre_20c_2020_38',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], + ['prettify_39',['prettify',['../namespacesimdjson.html#aed443864cc94c09c3f88eea39f8ce645',1,'simdjson']]], + ['process_5fjson_5fpath_5fof_5fchild_5felements_40',['process_json_path_of_child_elements',['../classsimdjson_1_1dom_1_1object.html#a3674739ae68d1e3d7071551a1aad7c4d',1,'simdjson::dom::object::process_json_path_of_child_elements()'],['../classsimdjson_1_1dom_1_1array.html#aee39c0fbcf1f7f6b75e9a31d86bedfe8',1,'simdjson::dom::array::process_json_path_of_child_elements()']]], + ['processes_20and_20memory_20capacity_41',['processes and memory capacity',['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity']]] ]; diff --git a/search/all_14.js b/search/all_14.js index 653c39d09..9ba5fc9bf 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -1,5 +1,5 @@ var searchData= [ - ['queries_0',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md58',1,'']]], - ['querying_20available_20implementations_1',['Querying Available Implementations',['../md_doc_2implementation-selection.html#autotoc_md72',1,'']]] + ['queries_0',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md87',1,'']]], + ['querying_20available_20implementations_1',['Querying Available Implementations',['../md_doc_2implementation-selection.html#autotoc_md101',1,'']]] ]; diff --git a/search/all_15.js b/search/all_15.js index 6290252c0..bed8b02c2 100644 --- a/search/all_15.js +++ b/search/all_15.js @@ -1,29 +1,32 @@ var searchData= [ ['raw_0',['raw',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a8736f5e397a3e0a55090aadee0596214',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string']]], - ['raw_20json_20string_1',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], - ['raw_20json_20string_20for_20objects_20and_20arrays_2',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md34',1,'']]], - ['raw_20strings_20from_20keys_3',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md32',1,'']]], - ['raw_5fjson_4',['raw_json',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad8a7f0b418fae60160e403f71a5a8088',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::raw_json()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa3a27654a19c386ad0c775cff258cf0c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::raw_json()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a71600033791f9c6bbc9f40fb2f82fdc8',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::raw_json()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9271a0be9a741a34c3a63f77363963a6',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::raw_json()']]], - ['raw_5fjson_5fstring_5',['raw_json_string',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a78b420ddb8a0570ee973cdfbccd31c9a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw_json_string() noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#acf64001cc9961cd01712211b778e760b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw_json_string(const uint8_t *_buf) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string']]], - ['raw_5fjson_5ftoken_6',['raw_json_token',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html#ac1bcd8afb10742d6f18b8f2f07ba0392',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::document_reference >::raw_json_token()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a442b2e5803e69d4845b5b7f7bd51a0ed',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::raw_json_token()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a37427e768435aafef5af097b8cc3cfec',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::raw_json_token()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a58802e77b6fb25a3d2ec8a4d2482f9bf',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::raw_json_token()']]], - ['reading_7',['Further reading',['../md_doc_2basics.html#autotoc_md41',1,'']]], - ['references_8',['references',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md154',1,'std::string references'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md138',1,'std::string references']]], - ['reflection_9',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md45',1,'']]], - ['reflection_20c_2026_10',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], - ['release_5fparser_11',['release_parser',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a1479bc4313e7a9cc0fd44ddf3dba70a8',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser']]], - ['remove_5futf8_5fbom_12',['remove_utf8_bom',['../classsimdjson_1_1padded__string__view.html#a572beea549bf5a58d62ffe4e768c1e82',1,'simdjson::padded_string_view']]], - ['required_3a_20buffer_20padding_13',['required: buffer padding',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md147',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md137',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md153',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md157',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md160',1,'REQUIRED: Buffer Padding']]], - ['requirements_14',['Requirements',['../md_doc_2basics.html#autotoc_md0',1,'']]], - ['reset_15',['reset',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae0bc6b9803e0c989e9defaf3edcaaae4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::reset()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae7248918b09cb4cb1d866605c641679d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::reset()']]], - ['resume_16',['resume',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a970f5c3f3e668a399765d52c7426764d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value']]], - ['reusing_20string_20buffers_17',['Reusing string buffers',['../md_doc_2performance.html#autotoc_md115',1,'']]], - ['reusing_20the_20parser_20for_20maximum_20efficiency_18',['reusing the parser for maximum efficiency',['../md_doc_2dom.html#autotoc_md64',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md114',1,'Reusing the parser for maximum efficiency']]], - ['rewind_19',['rewind',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9cc053001e8246e6e65bbcbf3db035c4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], - ['rewinding_20',['Rewinding',['../md_doc_2basics.html#autotoc_md28',1,'']]], - ['root_21',['root',['../classsimdjson_1_1dom_1_1document.html#ae19dced0eee5f63b9d1591ef51dcda4e',1,'simdjson::dom::document']]], - ['root_20node_22',['Root node',['../md_doc_2tape.html#autotoc_md128',1,'']]], - ['run_20on_20your_20system_23',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], - ['running_20processes_20and_20memory_20capacity_24',['running processes and memory capacity',['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity']]], - ['runtime_20cpu_20detection_25',['Runtime CPU Detection',['../md_doc_2implementation-selection.html#autotoc_md70',1,'']]] + ['raw_20json_20string_1',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['raw_20json_20string_20for_20objects_20and_20arrays_2',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md37',1,'']]], + ['raw_20strings_20from_20keys_3',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md35',1,'']]], + ['raw_5fjson_4',['raw_json',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9271a0be9a741a34c3a63f77363963a6',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::raw_json()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad8a7f0b418fae60160e403f71a5a8088',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::raw_json()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa3a27654a19c386ad0c775cff258cf0c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::raw_json()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a71600033791f9c6bbc9f40fb2f82fdc8',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::raw_json()']]], + ['raw_5fjson_5fstring_5',['raw_json_string',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#acf64001cc9961cd01712211b778e760b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw_json_string(const uint8_t *_buf) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a78b420ddb8a0570ee973cdfbccd31c9a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::raw_json_string() noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string']]], + ['raw_5fjson_5ftoken_6',['raw_json_token',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a58802e77b6fb25a3d2ec8a4d2482f9bf',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::raw_json_token()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html#ac1bcd8afb10742d6f18b8f2f07ba0392',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::document_reference >::raw_json_token()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a37427e768435aafef5af097b8cc3cfec',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::raw_json_token()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a442b2e5803e69d4845b5b7f7bd51a0ed',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::raw_json_token()']]], + ['reading_7',['Further reading',['../md_doc_2basics.html#autotoc_md44',1,'']]], + ['recommended_8',['Mode 1: With Type Validation (Recommended)',['../md_doc_2compile__time__accessors.html#autotoc_md58',1,'']]], + ['reference_9',['API Reference',['../md_doc_2compile__time__accessors.html#autotoc_md66',1,'']]], + ['references_10',['references',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md185',1,'std::string references'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md167',1,'std::string references']]], + ['reflection_11',['reflection',['../md_doc_2builder.html#autotoc_md48',1,'C++26 static reflection'],['../md_doc_2basics.html#autotoc_md24',1,'Compile-Time JSONPath and JSON Pointer (C++26 Reflection)']]], + ['reflection_20apis_12',['Key Reflection APIs',['../compile__time__accessors_8h.html#autotoc_md180',1,'']]], + ['reflection_20c_2026_13',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], + ['release_5fparser_14',['release_parser',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a1479bc4313e7a9cc0fd44ddf3dba70a8',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser']]], + ['remove_5futf8_5fbom_15',['remove_utf8_bom',['../classsimdjson_1_1padded__string__view.html#a572beea549bf5a58d62ffe4e768c1e82',1,'simdjson::padded_string_view']]], + ['required_3a_20buffer_20padding_16',['required: buffer padding',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md188',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md191',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md184',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md176',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md166',1,'REQUIRED: Buffer Padding']]], + ['requirements_17',['requirements',['../md_doc_2compile__time__accessors.html#autotoc_md55',1,'Requirements'],['../md_doc_2basics.html#autotoc_md0',1,'Requirements']]], + ['reset_18',['reset',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae0bc6b9803e0c989e9defaf3edcaaae4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::reset()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae7248918b09cb4cb1d866605c641679d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::reset()']]], + ['resume_19',['resume',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a970f5c3f3e668a399765d52c7426764d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value']]], + ['reusing_20string_20buffers_20',['Reusing string buffers',['../md_doc_2performance.html#autotoc_md144',1,'']]], + ['reusing_20the_20parser_20for_20maximum_20efficiency_21',['reusing the parser for maximum efficiency',['../md_doc_2dom.html#autotoc_md93',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md143',1,'Reusing the parser for maximum efficiency']]], + ['rewind_22',['rewind',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9cc053001e8246e6e65bbcbf3db035c4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], + ['rewinding_23',['Rewinding',['../md_doc_2basics.html#autotoc_md31',1,'']]], + ['root_24',['root',['../classsimdjson_1_1dom_1_1document.html#ae19dced0eee5f63b9d1591ef51dcda4e',1,'simdjson::dom::document']]], + ['root_20node_25',['Root node',['../md_doc_2tape.html#autotoc_md157',1,'']]], + ['run_20on_20your_20system_26',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], + ['running_20processes_20and_20memory_20capacity_27',['running processes and memory capacity',['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]], + ['runtime_20cpu_20detection_28',['Runtime CPU Detection',['../md_doc_2implementation-selection.html#autotoc_md99',1,'']]] ]; diff --git a/search/all_16.js b/search/all_16.js index 94540c911..47237f84b 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -1,104 +1,107 @@ var searchData= [ - ['safety_0',['safety',['../md_doc_2ondemand__design.html#autotoc_md96',1,'Iteration Safety'],['../md_doc_2basics.html#autotoc_md36',1,'Thread safety']]], - ['saj_20etc_1',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md89',1,'']]], - ['sax_20saj_20etc_2',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md89',1,'']]], + ['safety_0',['safety',['../md_doc_2ondemand__design.html#autotoc_md125',1,'Iteration Safety'],['../md_doc_2basics.html#autotoc_md39',1,'Thread safety']]], + ['saj_20etc_1',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md118',1,'']]], + ['sax_20saj_20etc_2',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md118',1,'']]], ['scalar_20values_3',['Scalar values',['../group__scalar.html',1,'']]], ['scalar_5fdocument_5fas_5fvalue_4',['SCALAR_DOCUMENT_AS_VALUE',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a00d7c038f551d9527ba8897f3cee907d',1,'simdjson']]], - ['schema_20based_20parser_20generators_5',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md90',1,'']]], + ['schema_20based_20parser_20generators_5',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md119',1,'']]], ['scope_6',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], ['second_7',['second',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a25289df3eaabd14f029e9872a6db3dfb',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base']]], - ['selecting_20the_20implementation_8',['Manually Selecting the Implementation',['../md_doc_2implementation-selection.html#autotoc_md73',1,'']]], - ['selection_20x64_20systems_9',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md100',1,'']]], - ['separated_20documents_10',['Comma-separated documents',['../md_doc_2iterate__many.html#autotoc_md86',1,'']]], - ['server_20loops_3a_20long_20running_20processes_20and_20memory_20capacity_11',['server loops: long running processes and memory capacity',['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity']]], - ['set_5fmax_5fcapacity_12',['set_max_capacity',['../classsimdjson_1_1dom_1_1parser.html#a6977b4586bc601070cf100e2973a4cbc',1,'simdjson::dom::parser']]], - ['shortcut_20experimental_20c_2020_13',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], - ['simdjson_14',['simdjson',['../md_doc_2basics.html#autotoc_md1',1,'Including simdjson'],['../namespacesimdjson.html',1,'simdjson'],['../index.html',1,'simdjson'],['../md_doc_2tape.html',1,'Tape structure in simdjson']]], - ['simdjson_20as_20a_20cmake_20dependency_15',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], - ['simdjson_20with_20package_20managers_16',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], - ['simdjson_2eh_17',['simdjson.h',['../simdjson_8h.html',1,'']]], - ['simdjson_3a_3aarm64_18',['arm64',['../namespacesimdjson_1_1arm64.html',1,'simdjson']]], - ['simdjson_3a_3adom_19',['dom',['../namespacesimdjson_1_1dom.html',1,'simdjson']]], - ['simdjson_3a_3afallback_20',['fallback',['../namespacesimdjson_1_1fallback.html',1,'simdjson']]], - ['simdjson_3a_3afrom_20shortcut_20experimental_20c_2020_21',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], - ['simdjson_3a_3ahaswell_22',['haswell',['../namespacesimdjson_1_1haswell.html',1,'simdjson']]], - ['simdjson_3a_3aicelake_23',['icelake',['../namespacesimdjson_1_1icelake.html',1,'simdjson']]], - ['simdjson_3a_3alasx_24',['lasx',['../namespacesimdjson_1_1lasx.html',1,'simdjson']]], - ['simdjson_3a_3alsx_25',['lsx',['../namespacesimdjson_1_1lsx.html',1,'simdjson']]], - ['simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_26',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['simdjson_3a_3appc64_27',['ppc64',['../namespacesimdjson_1_1ppc64.html',1,'simdjson']]], - ['simdjson_3a_3asimdjson_5fimplementation_3a_3aondemand_28',['ondemand',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], - ['simdjson_3a_3awestmere_29',['westmere',['../namespacesimdjson_1_1westmere.html',1,'simdjson']]], - ['simdjson_5ferror_30',['simdjson_error',['../structsimdjson_1_1simdjson__error.html#af5355b65f85b897251b3665086075f39',1,'simdjson::simdjson_error::simdjson_error()'],['../structsimdjson_1_1simdjson__error.html',1,'simdjson::simdjson_error']]], - ['simdjson_5fmaxsize_5fbytes_31',['SIMDJSON_MAXSIZE_BYTES',['../namespacesimdjson.html#ad0bad3783275be4012bd5cfd0327875a',1,'simdjson']]], - ['simdjson_5fpadding_32',['SIMDJSON_PADDING',['../namespacesimdjson.html#aecdd750132f0eb123a6d61113b4197bf',1,'simdjson']]], - ['simdjson_5fresult_33',['simdjson_result',['../structsimdjson_1_1simdjson__result.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20dom_3a_3aarray_20_3e_34',['simdjson_result< dom::array >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20dom_3a_3adocument_5fstream_20_3e_35',['simdjson_result< dom::document_stream >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20dom_3a_3aelement_20_3e_36',['simdjson_result< dom::element >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20dom_3a_3aobject_20_3e_37',['simdjson_result< dom::object >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3aarray_20_3e_38',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::array >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3adocument_5freference_20_3e_39',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::document_reference >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3afield_20_3e_40',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::field >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3ajson_5fiterator_20_3e_41',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::json_iterator >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3ajson_5ftype_20_3e_42',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::json_type >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3aobject_20_3e_43',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::object >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3atoken_5fiterator_20_3e_44',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::token_iterator >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3avalue_20_3e_45',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html',1,'simdjson']]], - ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3avalue_5fiterator_20_3e_46',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value_iterator >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html',1,'simdjson']]], - ['simdjson_5fversion_5fmajor_47',['SIMDJSON_VERSION_MAJOR',['../namespacesimdjson.html#a44beb117a12abd0d8d18589dbc3dbe97ae36fce138c6f2f7a25e9ee06e7ed37ae',1,'simdjson']]], - ['simdjson_5fversion_5fminor_48',['SIMDJSON_VERSION_MINOR',['../namespacesimdjson.html#a44beb117a12abd0d8d18589dbc3dbe97ab442d4c66052c2f30b72a0d6f8dc8814',1,'simdjson']]], - ['simdjson_5fversion_5frevision_49',['SIMDJSON_VERSION_REVISION',['../namespacesimdjson.html#a44beb117a12abd0d8d18589dbc3dbe97a5537fa0bdb6b7345ea789c51f74b10ee',1,'simdjson']]], - ['simple_20json_20values_50',['Simple JSON values',['../md_doc_2tape.html#autotoc_md126',1,'']]], - ['size_51',['size',['../structsimdjson_1_1padded__string.html#a07d50795f042119ab848c37cb8911db4',1,'simdjson::padded_string::size()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8e4e7328f1d40078710853cb732d29fc',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::size()'],['../classsimdjson_1_1dom_1_1object.html#a93ec5c36aae913f266f533b2e02bc873',1,'simdjson::dom::object::size()'],['../classsimdjson_1_1dom_1_1array.html#a698f2f984d1a78a68962c06b2f047686',1,'simdjson::dom::array::size()']]], - ['size_5fin_5fbytes_52',['size_in_bytes',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a43723c86c43ee3533a3278b5cd2fe2d0',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::size_in_bytes()'],['../classsimdjson_1_1dom_1_1document__stream.html#a2a08525ae815167b73b6393a8999e46b',1,'simdjson::dom::document_stream::size_in_bytes()']]], - ['skip_53',['skip',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ae75aa0d09a10682fd30dc4e8e25d0a73',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value']]], - ['skip_5fdouble_54',['skip_double',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ac6b75b1d1af73c9ef8958e573c367e1c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['some_20fields_55',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md47',1,'']]], - ['special_20cases_56',['Special cases',['../md_doc_2basics.html#autotoc_md16',1,'']]], - ['specialize_20tt_20simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_57',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['specific_20implementations_58',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], - ['stage1_5fmode_59',['stage1_mode',['../namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811',1,'simdjson']]], - ['standard_20compliance_60',['Standard compliance',['../md_doc_2basics.html#autotoc_md37',1,'']]], - ['start_61',['start',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a0126e4a8e02fa0a02481d3bdfd3965f7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::start()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a760c4d01ad03f18e09a93387de5de60e',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::start()']]], - ['start_5farray_62',['start_array',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a987e3f57fc1124f0a67fef5ea6c06c82',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::start_array()'],['../group__array.html#ga14e69f9c4949805695e30a576bd9c964',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_array() noexcept']]], - ['start_5fobject_63',['start_object',['../group__object.html#ga46e677764da46ebbe4b0e4dea6672a5f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_object()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a7f094bab497d4939adbe7196ec646068',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::start_object()']]], - ['start_5for_5fresume_5fobject_64',['start_or_resume_object',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a821e11bc3b6b3f16fa7d6b15c77c17d3',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value']]], - ['start_5froot_65',['start_root',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aac11a5e300a49531b3600a019cd89304',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array']]], - ['start_5froot_5farray_66',['start_root_array',['../group__array.html#ga334481c295286d926bb3bb912232e225',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['start_5froot_5fobject_67',['start_root_object',['../group__object.html#gab9563a58e164e9f5f75805cffb3582ec',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['started_68',['started',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aca1c364caedac11edc78c64734013ce0',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array']]], - ['started_5farray_69',['started_array',['../group__array.html#ga136e508ce46622b86cc901490c807578',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['started_5fobject_70',['started_object',['../group__object.html#ga192424d19b12648eea73e3d073d5fcac',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['started_5froot_5farray_71',['started_root_array',['../group__array.html#gaa3428f6c87e63d8a2ba93a3816721066',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['started_5froot_5fobject_72',['started_root_object',['../group__object.html#gaa0c31077aeadb6fc627d4c5750e58ecb',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['starting_20the_20iteration_73',['Starting the iteration',['../md_doc_2ondemand__design.html#autotoc_md93',1,'']]], - ['static_20reflection_74',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md45',1,'']]], - ['static_20reflection_20c_2026_75',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], - ['std_3a_3astring_20references_76',['std::string references',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md138',1,'std::string references'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md154',1,'std::string references']]], - ['storing_20directly_20into_20an_20existing_20string_20instance_77',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md35',1,'']]], - ['streams_78',['streams',['../md_doc_2parse__many.html#autotoc_md112',1,'Incomplete streams'],['../md_doc_2iterate__many.html#autotoc_md85',1,'Incomplete streams']]], - ['string_79',['string',['../md_doc_2basics.html#autotoc_md33',1,'General direct access to the raw JSON string'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330ab45cffe084dd3d20d928bee85e7b0f21',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::string'],['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa63b588d5559f64f89a416e656880b949',1,'simdjson::dom::STRING']]], - ['string_20buffers_80',['Reusing string buffers',['../md_doc_2performance.html#autotoc_md115',1,'']]], - ['string_20for_20objects_20and_20arrays_81',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md34',1,'']]], - ['string_20instance_82',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md35',1,'']]], - ['string_20parsing_83',['String Parsing',['../md_doc_2ondemand__design.html#autotoc_md95',1,'']]], - ['string_5fbuffer_20tt_20instance_84',['Without <tt>string_buffer</tt> instance',['../md_doc_2builder.html#autotoc_md46',1,'']]], - ['string_5fbuffer_20tt_20instance_20but_20with_20explicit_20error_20handling_85',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]], - ['string_5fbuilder_86',['string_builder',['../md_doc_2builder.html#autotoc_md43',1,'Example: string_builder'],['../md_doc_2builder.html#autotoc_md42',1,'Overview: string_builder'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['string_5ferror_87',['STRING_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8ef9cfdd78dd92d2b304249917638d12',1,'simdjson']]], - ['string_5fview_88',['string_view',['../md_doc_2basics.html#autotoc_md8',1,'']]], - ['string_5fview_20lifetime_89',['string_view lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md166',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md165',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md164',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md163',1,'IMPORTANT: string_view lifetime']]], - ['strings_90',['strings',['../md_doc_2basics.html#autotoc_md30',1,'Parsing numbers inside strings'],['../md_doc_2tape.html#autotoc_md129',1,'Strings']]], - ['strings_20from_20keys_91',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md32',1,'']]], - ['strings_20without_20parsing_92',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], - ['structure_20in_20simdjson_93',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]], - ['studio_94',['Visual Studio',['../md_doc_2performance.html#autotoc_md119',1,'']]], - ['success_95',['SUCCESS',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa4ffc800804829a88c5b52ac3c4c6681',1,'simdjson']]], - ['support_96',['support',['../md_doc_2dom.html#autotoc_md54',1,'C++17 Support'],['../md_doc_2dom.html#autotoc_md55',1,'C++20 Support'],['../md_doc_2performance.html#autotoc_md117',1,'Large files and huge page support'],['../md_doc_2parse__many.html#autotoc_md108',1,'Support'],['../md_doc_2iterate__many.html#autotoc_md81',1,'Support']]], - ['support_20for_20custom_20types_97',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], - ['supported_5fby_5fruntime_5fsystem_98',['supported_by_runtime_system',['../classsimdjson_1_1implementation.html#adf77c9bc0869eff8fd46e942c4532135',1,'simdjson::implementation']]], - ['system_99',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], - ['systems_100',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md100',1,'']]] + ['see_20also_8',['See Also',['../md_doc_2compile__time__accessors.html#autotoc_md78',1,'']]], + ['selecting_20the_20implementation_9',['Manually Selecting the Implementation',['../md_doc_2implementation-selection.html#autotoc_md102',1,'']]], + ['selection_20x64_20systems_10',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md129',1,'']]], + ['separated_20documents_11',['Comma-separated documents',['../md_doc_2iterate__many.html#autotoc_md115',1,'']]], + ['server_20loops_3a_20long_20running_20processes_20and_20memory_20capacity_12',['server loops: long running processes and memory capacity',['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]], + ['set_5fmax_5fcapacity_13',['set_max_capacity',['../classsimdjson_1_1dom_1_1parser.html#a6977b4586bc601070cf100e2973a4cbc',1,'simdjson::dom::parser']]], + ['shortcut_20experimental_20c_2020_14',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], + ['simdjson_15',['simdjson',['../md_doc_2basics.html#autotoc_md1',1,'Including simdjson'],['../index.html',1,'simdjson'],['../namespacesimdjson.html',1,'simdjson'],['../md_doc_2tape.html',1,'Tape structure in simdjson']]], + ['simdjson_20as_20a_20cmake_20dependency_16',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], + ['simdjson_20with_20package_20managers_17',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], + ['simdjson_2eh_18',['simdjson.h',['../simdjson_8h.html',1,'']]], + ['simdjson_3a_3aarm64_19',['arm64',['../namespacesimdjson_1_1arm64.html',1,'simdjson']]], + ['simdjson_3a_3adom_20',['dom',['../namespacesimdjson_1_1dom.html',1,'simdjson']]], + ['simdjson_3a_3afallback_21',['fallback',['../namespacesimdjson_1_1fallback.html',1,'simdjson']]], + ['simdjson_3a_3afrom_20shortcut_20experimental_20c_2020_22',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], + ['simdjson_3a_3ahaswell_23',['haswell',['../namespacesimdjson_1_1haswell.html',1,'simdjson']]], + ['simdjson_3a_3aicelake_24',['icelake',['../namespacesimdjson_1_1icelake.html',1,'simdjson']]], + ['simdjson_3a_3alasx_25',['lasx',['../namespacesimdjson_1_1lasx.html',1,'simdjson']]], + ['simdjson_3a_3alsx_26',['lsx',['../namespacesimdjson_1_1lsx.html',1,'simdjson']]], + ['simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_27',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], + ['simdjson_3a_3appc64_28',['ppc64',['../namespacesimdjson_1_1ppc64.html',1,'simdjson']]], + ['simdjson_3a_3asimdjson_5fimplementation_3a_3aondemand_29',['ondemand',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], + ['simdjson_3a_3awestmere_30',['westmere',['../namespacesimdjson_1_1westmere.html',1,'simdjson']]], + ['simdjson_5ferror_31',['simdjson_error',['../structsimdjson_1_1simdjson__error.html#af5355b65f85b897251b3665086075f39',1,'simdjson::simdjson_error::simdjson_error()'],['../structsimdjson_1_1simdjson__error.html',1,'simdjson::simdjson_error']]], + ['simdjson_5fmaxsize_5fbytes_32',['SIMDJSON_MAXSIZE_BYTES',['../namespacesimdjson.html#ad0bad3783275be4012bd5cfd0327875a',1,'simdjson']]], + ['simdjson_5fpadding_33',['SIMDJSON_PADDING',['../namespacesimdjson.html#aecdd750132f0eb123a6d61113b4197bf',1,'simdjson']]], + ['simdjson_5fresult_34',['simdjson_result',['../structsimdjson_1_1simdjson__result.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20dom_3a_3aarray_20_3e_35',['simdjson_result< dom::array >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20dom_3a_3adocument_5fstream_20_3e_36',['simdjson_result< dom::document_stream >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20dom_3a_3aelement_20_3e_37',['simdjson_result< dom::element >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20dom_3a_3aobject_20_3e_38',['simdjson_result< dom::object >',['../structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3aarray_20_3e_39',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::array >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3adocument_5freference_20_3e_40',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::document_reference >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3afield_20_3e_41',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::field >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3ajson_5fiterator_20_3e_42',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::json_iterator >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3ajson_5ftype_20_3e_43',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::json_type >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3aobject_20_3e_44',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::object >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3atoken_5fiterator_20_3e_45',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::token_iterator >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3avalue_20_3e_46',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html',1,'simdjson']]], + ['simdjson_5fresult_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3avalue_5fiterator_20_3e_47',['simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value_iterator >',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html',1,'simdjson']]], + ['simdjson_5fversion_5fmajor_48',['SIMDJSON_VERSION_MAJOR',['../namespacesimdjson.html#a44beb117a12abd0d8d18589dbc3dbe97ae36fce138c6f2f7a25e9ee06e7ed37ae',1,'simdjson']]], + ['simdjson_5fversion_5fminor_49',['SIMDJSON_VERSION_MINOR',['../namespacesimdjson.html#a44beb117a12abd0d8d18589dbc3dbe97ab442d4c66052c2f30b72a0d6f8dc8814',1,'simdjson']]], + ['simdjson_5fversion_5frevision_50',['SIMDJSON_VERSION_REVISION',['../namespacesimdjson.html#a44beb117a12abd0d8d18589dbc3dbe97a5537fa0bdb6b7345ea789c51f74b10ee',1,'simdjson']]], + ['simple_20json_20values_51',['Simple JSON values',['../md_doc_2tape.html#autotoc_md155',1,'']]], + ['size_52',['size',['../classsimdjson_1_1dom_1_1array.html#a698f2f984d1a78a68962c06b2f047686',1,'simdjson::dom::array::size()'],['../classsimdjson_1_1dom_1_1object.html#a93ec5c36aae913f266f533b2e02bc873',1,'simdjson::dom::object::size()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8e4e7328f1d40078710853cb732d29fc',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::size()'],['../structsimdjson_1_1padded__string.html#a07d50795f042119ab848c37cb8911db4',1,'simdjson::padded_string::size()']]], + ['size_5fin_5fbytes_53',['size_in_bytes',['../classsimdjson_1_1dom_1_1document__stream.html#a2a08525ae815167b73b6393a8999e46b',1,'simdjson::dom::document_stream::size_in_bytes()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a43723c86c43ee3533a3278b5cd2fe2d0',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::size_in_bytes()']]], + ['skip_54',['skip',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ae75aa0d09a10682fd30dc4e8e25d0a73',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value']]], + ['skip_5fdouble_55',['skip_double',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ac6b75b1d1af73c9ef8958e573c367e1c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], + ['some_20fields_56',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md50',1,'']]], + ['special_20cases_57',['Special cases',['../md_doc_2basics.html#autotoc_md16',1,'']]], + ['specialize_20tt_20simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_58',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], + ['specific_20implementations_59',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], + ['stage1_5fmode_60',['stage1_mode',['../namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811',1,'simdjson']]], + ['standard_20compliance_61',['Standard compliance',['../md_doc_2basics.html#autotoc_md40',1,'']]], + ['start_62',['start',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a0126e4a8e02fa0a02481d3bdfd3965f7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::start()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a760c4d01ad03f18e09a93387de5de60e',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::start()']]], + ['start_5farray_63',['start_array',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a987e3f57fc1124f0a67fef5ea6c06c82',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::start_array()'],['../group__array.html#ga14e69f9c4949805695e30a576bd9c964',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_array() noexcept']]], + ['start_5fobject_64',['start_object',['../group__object.html#ga46e677764da46ebbe4b0e4dea6672a5f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::start_object()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a7f094bab497d4939adbe7196ec646068',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::start_object()']]], + ['start_5for_5fresume_5fobject_65',['start_or_resume_object',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a821e11bc3b6b3f16fa7d6b15c77c17d3',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value']]], + ['start_5froot_66',['start_root',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aac11a5e300a49531b3600a019cd89304',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array']]], + ['start_5froot_5farray_67',['start_root_array',['../group__array.html#ga334481c295286d926bb3bb912232e225',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['start_5froot_5fobject_68',['start_root_object',['../group__object.html#gab9563a58e164e9f5f75805cffb3582ec',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['started_69',['started',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aca1c364caedac11edc78c64734013ce0',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array']]], + ['started_5farray_70',['started_array',['../group__array.html#ga136e508ce46622b86cc901490c807578',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['started_5fobject_71',['started_object',['../group__object.html#ga192424d19b12648eea73e3d073d5fcac',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['started_5froot_5farray_72',['started_root_array',['../group__array.html#gaa3428f6c87e63d8a2ba93a3816721066',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['started_5froot_5fobject_73',['started_root_object',['../group__object.html#gaa0c31077aeadb6fc627d4c5750e58ecb',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['starting_20the_20iteration_74',['Starting the iteration',['../md_doc_2ondemand__design.html#autotoc_md122',1,'']]], + ['static_20reflection_75',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md48',1,'']]], + ['static_20reflection_20c_2026_76',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], + ['std_3a_3astring_20references_77',['std::string references',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md167',1,'std::string references'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md185',1,'std::string references']]], + ['storing_20directly_20into_20an_20existing_20string_20instance_78',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md38',1,'']]], + ['streams_79',['streams',['../md_doc_2iterate__many.html#autotoc_md114',1,'Incomplete streams'],['../md_doc_2parse__many.html#autotoc_md141',1,'Incomplete streams']]], + ['string_80',['string',['../md_doc_2basics.html#autotoc_md36',1,'General direct access to the raw JSON string'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330ab45cffe084dd3d20d928bee85e7b0f21',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::string'],['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa63b588d5559f64f89a416e656880b949',1,'simdjson::dom::STRING']]], + ['string_20buffers_81',['Reusing string buffers',['../md_doc_2performance.html#autotoc_md144',1,'']]], + ['string_20for_20objects_20and_20arrays_82',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md37',1,'']]], + ['string_20instance_83',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md38',1,'']]], + ['string_20parsing_84',['String Parsing',['../md_doc_2ondemand__design.html#autotoc_md124',1,'']]], + ['string_5fbuffer_20tt_20instance_85',['Without <tt>string_buffer</tt> instance',['../md_doc_2builder.html#autotoc_md49',1,'']]], + ['string_5fbuffer_20tt_20instance_20but_20with_20explicit_20error_20handling_86',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]], + ['string_5fbuilder_87',['string_builder',['../md_doc_2builder.html#autotoc_md46',1,'Example: string_builder'],['../md_doc_2builder.html#autotoc_md45',1,'Overview: string_builder'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['string_5ferror_88',['STRING_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8ef9cfdd78dd92d2b304249917638d12',1,'simdjson']]], + ['string_5fview_89',['string_view',['../md_doc_2basics.html#autotoc_md8',1,'']]], + ['string_5fview_20lifetime_90',['string_view lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md194',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md195',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md197',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md196',1,'IMPORTANT: string_view lifetime']]], + ['strings_91',['strings',['../md_doc_2basics.html#autotoc_md33',1,'Parsing numbers inside strings'],['../md_doc_2tape.html#autotoc_md158',1,'Strings']]], + ['strings_20from_20keys_92',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md35',1,'']]], + ['strings_20without_20parsing_93',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], + ['structure_20in_20simdjson_94',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]], + ['studio_95',['Visual Studio',['../md_doc_2performance.html#autotoc_md148',1,'']]], + ['success_96',['SUCCESS',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa4ffc800804829a88c5b52ac3c4c6681',1,'simdjson']]], + ['support_97',['support',['../md_doc_2dom.html#autotoc_md83',1,'C++17 Support'],['../md_doc_2dom.html#autotoc_md84',1,'C++20 Support'],['../md_doc_2performance.html#autotoc_md146',1,'Large files and huge page support'],['../md_doc_2parse__many.html#autotoc_md137',1,'Support'],['../md_doc_2iterate__many.html#autotoc_md110',1,'Support']]], + ['support_20for_20custom_20types_98',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], + ['supported_20syntax_99',['supported syntax',['../md_doc_2compile__time__accessors.html#autotoc_md64',1,'Supported Syntax'],['../md_doc_2compile__time__accessors.html#autotoc_md61',1,'Supported Syntax']]], + ['supported_5fby_5fruntime_5fsystem_100',['supported_by_runtime_system',['../classsimdjson_1_1implementation.html#adf77c9bc0869eff8fd46e942c4532135',1,'simdjson::implementation']]], + ['syntax_101',['syntax',['../md_doc_2compile__time__accessors.html#autotoc_md63',1,'JSON Pointer Syntax'],['../md_doc_2compile__time__accessors.html#autotoc_md60',1,'JSONPath Syntax'],['../md_doc_2compile__time__accessors.html#autotoc_md64',1,'Supported Syntax'],['../md_doc_2compile__time__accessors.html#autotoc_md61',1,'Supported Syntax']]], + ['system_102',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], + ['systems_103',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md129',1,'']]] ]; diff --git a/search/all_17.js b/search/all_17.js index 1ca5be3b1..e512b00ad 100644 --- a/search/all_17.js +++ b/search/all_17.js @@ -3,53 +3,58 @@ var searchData= ['t_5fatom_5ferror_0',['T_ATOM_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab6e8bfc242f7bea38657eaf61400077f',1,'simdjson']]], ['tag_5finvoke_20tt_20for_20custom_20types_20c_2020_1',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], ['take_5fvalue_2',['take_value',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#affadf1e1f762248d60950e333b739820',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::take_value()'],['../structsimdjson_1_1simdjson__result.html#a815368a9e09fa675d0b6672595f5ad19',1,'simdjson::simdjson_result::take_value()']]], - ['tape_3',['The Tape',['../md_doc_2tape.html#autotoc_md124',1,'']]], - ['tape_20elements_4',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md125',1,'']]], + ['tape_3',['The Tape',['../md_doc_2tape.html#autotoc_md153',1,'']]], + ['tape_20elements_4',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md154',1,'']]], ['tape_20structure_20in_20simdjson_5',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]], ['tape_5ferror_6',['TAPE_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4005fbda56edc47e077e5cfd4e68cda9',1,'simdjson']]], - ['temporary_20copies_7',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md67',1,'']]], - ['that_20an_20implementation_20can_20run_20on_20your_20system_8',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], + ['temporary_20copies_7',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md96',1,'']]], + ['that_20an_20implementation_20can_20run_20on_20your_20system_8',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], ['the_20basics_9',['The Basics',['../md_doc_2basics.html',1,'']]], ['the_20basics_3a_20loading_20and_20parsing_20json_20documents_10',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], - ['the_20basics_3a_20loading_20and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_11',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['the_20detected_20implementation_12',['Inspecting the Detected Implementation',['../md_doc_2implementation-selection.html#autotoc_md71',1,'']]], + ['the_20basics_3a_20loading_20and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_11',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['the_20detected_20implementation_12',['Inspecting the Detected Implementation',['../md_doc_2implementation-selection.html#autotoc_md100',1,'']]], ['the_20document_20object_20model_20dom_20front_20end_13',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], - ['the_20dom_20api_14',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md66',1,'']]], - ['the_20dom_20front_20end_15',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['the_20implementation_16',['Manually Selecting the Implementation',['../md_doc_2implementation-selection.html#autotoc_md73',1,'']]], - ['the_20iteration_17',['Starting the iteration',['../md_doc_2ondemand__design.html#autotoc_md93',1,'']]], - ['the_20on_20demand_20approach_18',['the on demand approach',['../md_doc_2ondemand__design.html#autotoc_md99',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md97',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md98',1,'Limitations of the On-Demand Approach']]], - ['the_20parsed_20json_19',['the parsed json',['../md_doc_2dom.html#autotoc_md52',1,'Using the Parsed JSON'],['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON']]], + ['the_20dom_20api_14',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md95',1,'']]], + ['the_20dom_20front_20end_15',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['the_20implementation_16',['Manually Selecting the Implementation',['../md_doc_2implementation-selection.html#autotoc_md102',1,'']]], + ['the_20iteration_17',['Starting the iteration',['../md_doc_2ondemand__design.html#autotoc_md122',1,'']]], + ['the_20on_20demand_20approach_18',['the on demand approach',['../md_doc_2ondemand__design.html#autotoc_md128',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md126',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md127',1,'Limitations of the On-Demand Approach']]], + ['the_20parsed_20json_19',['the parsed json',['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON'],['../md_doc_2dom.html#autotoc_md81',1,'Using the Parsed JSON']]], ['the_20parsed_20json_3a_20additional_20examples_20',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], - ['the_20parser_20for_20maximum_20efficiency_21',['the parser for maximum efficiency',['../md_doc_2performance.html#autotoc_md114',1,'Reusing the parser for maximum efficiency'],['../md_doc_2dom.html#autotoc_md64',1,'Reusing the parser for maximum efficiency']]], - ['the_20raw_20json_20string_22',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], + ['the_20parser_20for_20maximum_20efficiency_21',['the parser for maximum efficiency',['../md_doc_2performance.html#autotoc_md143',1,'Reusing the parser for maximum efficiency'],['../md_doc_2dom.html#autotoc_md93',1,'Reusing the parser for maximum efficiency']]], + ['the_20raw_20json_20string_22',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], ['the_20simdjson_3a_3afrom_20shortcut_20experimental_20c_2020_23',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], - ['the_20tape_24',['The Tape',['../md_doc_2tape.html#autotoc_md124',1,'']]], - ['the_20tape_20elements_25',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md125',1,'']]], - ['thread_20safety_26',['Thread safety',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['the_20tape_24',['The Tape',['../md_doc_2tape.html#autotoc_md153',1,'']]], + ['the_20tape_20elements_25',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md154',1,'']]], + ['thread_20safety_26',['Thread safety',['../md_doc_2basics.html#autotoc_md39',1,'']]], ['threaded_27',['threaded',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#aae981142ef15c75893ecc09ce897ed60',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::threaded'],['../classsimdjson_1_1dom_1_1parser.html#a63fe2363db0d3acf458519698beaacf4',1,'simdjson::dom::parser::threaded']]], - ['threads_28',['threads',['../md_doc_2iterate__many.html#autotoc_md80',1,'Threads'],['../md_doc_2parse__many.html#autotoc_md107',1,'Threads'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md143',1,'Threads'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md148',1,'Threads'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md159',1,'Threads'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md161',1,'Threads']]], + ['threads_28',['threads',['../md_doc_2iterate__many.html#autotoc_md109',1,'Threads'],['../md_doc_2parse__many.html#autotoc_md136',1,'Threads'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md172',1,'Threads'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md177',1,'Threads'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md190',1,'Threads'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md192',1,'Threads']]], ['tie_29',['tie',['../classsimdjson_1_1dom_1_1element.html#a5342161b8c52c78b2f5edac10e9d05ca',1,'simdjson::dom::element::tie()'],['../structsimdjson_1_1simdjson__result.html#a86dbcba063713c0e284dbde9fae17568',1,'simdjson::simdjson_result::tie()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#acd950d432e76a0bc1a7f3236cc7a1894',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::tie()']]], - ['tips_30',['tips',['../md_doc_2basics.html#autotoc_md40',1,'Performance tips'],['../md_doc_2dom.html#autotoc_md68',1,'Performance Tips']]], - ['to_20get_20custom_20types_20pre_20c_2020_31',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['to_20parse_20documents_32',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], - ['to_20the_20raw_20json_20string_33',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], - ['to_5fdebug_5fstring_34',['to_debug_string',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9afdfb30ac2aacabce09a5c9d7fd375a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], - ['to_5fjson_5fstring_35',['to_json_string',['../namespacesimdjson.html#a2cda17221b852e5c398bad5bf350d270',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::document &x) noexcept'],['../namespacesimdjson.html#a4c998fcc6bf2bca2196b45a5c3e1967a',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::value &x) noexcept'],['../namespacesimdjson.html#afc529e3bcacb5b3c747b525fb443771f',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::object &x) noexcept'],['../namespacesimdjson.html#a598dd79ec46726de8a6d409ba1bae034',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::array &x) noexcept']]], - ['to_5fstring_36',['to_string',['../namespacesimdjson.html#ade4516933f53705eacfaed65ed14962d',1,'simdjson']]], - ['tracking_20your_20position_37',['tracking your position',['../md_doc_2parse__many.html#autotoc_md111',1,'Tracking your position'],['../md_doc_2iterate__many.html#autotoc_md84',1,'Tracking your position']]], - ['trailing_20content_38',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md27',1,'']]], - ['trailing_5fcontent_39',['TRAILING_CONTENT',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab70f5a6f0ac798d482e95a0fcc528676',1,'simdjson']]], - ['tree_20walking_20and_20json_20element_20types_40',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md63',1,'']]], - ['truncated_5fbytes_41',['truncated_bytes',['../classsimdjson_1_1dom_1_1document__stream.html#a6c2a07e08213dc9a51754940942f9e69',1,'simdjson::dom::document_stream::truncated_bytes()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#acd3fd372dfd30fcce1d6a103c6682d0e',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::truncated_bytes()']]], - ['tt_20at_5fpath_5fwith_5fwildcard_20tt_20for_20jsonpath_20queries_42',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md58',1,'']]], - ['tt_20simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_43',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['tt_20string_5fbuffer_20tt_20instance_44',['Without <tt>string_buffer</tt> instance',['../md_doc_2builder.html#autotoc_md46',1,'']]], - ['tt_20string_5fbuffer_20tt_20instance_20but_20with_20explicit_20error_20handling_45',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]], - ['tt_20tag_5finvoke_20tt_20for_20custom_20types_20c_2020_46',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], - ['type_47',['type',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#af3d0d03752d5e96d7ee5b83f29136b1b',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::type()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ac39965b3006b8f19ed576ce99b7534c5',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::type()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a77bdebf4d2105efdd123cbf0a4906b1e',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::type()'],['../classsimdjson_1_1dom_1_1element.html#a19162bf6d94fb6c21bb2bf2e9b78ff0d',1,'simdjson::dom::element::type()']]], - ['type_20blindness_20and_20branch_20misprediction_48',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md91',1,'']]], - ['types_49',['types',['../md_doc_2basics.html#autotoc_md12',1,'Adding support for custom types'],['../md_doc_2basics.html#autotoc_md31',1,'Dynamic Number Types'],['../md_doc_2dom.html#autotoc_md63',1,'Tree Walking and JSON Element Types']]], - ['types_20c_2020_50',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], - ['types_20pre_20c_2020_51',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]] + ['time_20jsonpath_20and_20json_20pointer_20accessors_30',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['time_20jsonpath_20and_20json_20pointer_20c_2026_20reflection_31',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['tips_32',['tips',['../md_doc_2basics.html#autotoc_md43',1,'Performance tips'],['../md_doc_2dom.html#autotoc_md97',1,'Performance Tips']]], + ['to_20get_20custom_20types_20pre_20c_2020_33',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], + ['to_20parse_20documents_34',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], + ['to_20the_20raw_20json_20string_35',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['to_20use_36',['When to Use',['../md_doc_2compile__time__accessors.html#autotoc_md77',1,'']]], + ['to_5fdebug_5fstring_37',['to_debug_string',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9afdfb30ac2aacabce09a5c9d7fd375a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], + ['to_5fjson_5fstring_38',['to_json_string',['../namespacesimdjson.html#a2cda17221b852e5c398bad5bf350d270',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::document &x) noexcept'],['../namespacesimdjson.html#a4c998fcc6bf2bca2196b45a5c3e1967a',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::value &x) noexcept'],['../namespacesimdjson.html#afc529e3bcacb5b3c747b525fb443771f',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::object &x) noexcept'],['../namespacesimdjson.html#a598dd79ec46726de8a6d409ba1bae034',1,'simdjson::to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::array &x) noexcept']]], + ['to_5fstring_39',['to_string',['../namespacesimdjson.html#ade4516933f53705eacfaed65ed14962d',1,'simdjson']]], + ['tracking_20your_20position_40',['tracking your position',['../md_doc_2parse__many.html#autotoc_md140',1,'Tracking your position'],['../md_doc_2iterate__many.html#autotoc_md113',1,'Tracking your position']]], + ['trailing_20content_41',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md30',1,'']]], + ['trailing_5fcontent_42',['TRAILING_CONTENT',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab70f5a6f0ac798d482e95a0fcc528676',1,'simdjson']]], + ['tree_20walking_20and_20json_20element_20types_43',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md92',1,'']]], + ['truncated_5fbytes_44',['truncated_bytes',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#acd3fd372dfd30fcce1d6a103c6682d0e',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::truncated_bytes()'],['../classsimdjson_1_1dom_1_1document__stream.html#a6c2a07e08213dc9a51754940942f9e69',1,'simdjson::dom::document_stream::truncated_bytes()']]], + ['tt_20at_5fpath_5fwith_5fwildcard_20tt_20for_20jsonpath_20queries_45',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md87',1,'']]], + ['tt_20simdjson_3a_3aondemand_3a_3avalue_3a_3aget_20tt_20to_20get_20custom_20types_20pre_20c_2020_46',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], + ['tt_20string_5fbuffer_20tt_20instance_47',['Without <tt>string_buffer</tt> instance',['../md_doc_2builder.html#autotoc_md49',1,'']]], + ['tt_20string_5fbuffer_20tt_20instance_20but_20with_20explicit_20error_20handling_48',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]], + ['tt_20tag_5finvoke_20tt_20for_20custom_20types_20c_2020_49',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], + ['two_20usage_20modes_50',['Two Usage Modes',['../md_doc_2compile__time__accessors.html#autotoc_md57',1,'']]], + ['type_51',['type',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#af3d0d03752d5e96d7ee5b83f29136b1b',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::type()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ac39965b3006b8f19ed576ce99b7534c5',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::type()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a77bdebf4d2105efdd123cbf0a4906b1e',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::type()'],['../classsimdjson_1_1dom_1_1element.html#a19162bf6d94fb6c21bb2bf2e9b78ff0d',1,'simdjson::dom::element::type()']]], + ['type_20blindness_20and_20branch_20misprediction_52',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md120',1,'']]], + ['type_20validation_20recommended_53',['Mode 1: With Type Validation (Recommended)',['../md_doc_2compile__time__accessors.html#autotoc_md58',1,'']]], + ['types_54',['types',['../md_doc_2basics.html#autotoc_md12',1,'Adding support for custom types'],['../md_doc_2basics.html#autotoc_md34',1,'Dynamic Number Types'],['../md_doc_2dom.html#autotoc_md92',1,'Tree Walking and JSON Element Types']]], + ['types_20c_2020_55',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], + ['types_20pre_20c_2020_56',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]] ]; diff --git a/search/all_18.js b/search/all_18.js index 6976f73e8..eef42a0df 100644 --- a/search/all_18.js +++ b/search/all_18.js @@ -7,23 +7,24 @@ var searchData= ['unescaped_5fchars_4',['UNESCAPED_CHARS',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aca57917fc85c421aab3f2dd451519fa5',1,'simdjson']]], ['unescaped_5fkey_5',['unescaped_key',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a421d8339349ee4f2618231f6106d24fa',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::unescaped_key(bool allow_replacement=false) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a2a86abd90e539324f097674fb66e1520',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::unescaped_key(string_type &receiver, bool allow_replacement=false) noexcept']]], ['unexpected_5ferror_6',['UNEXPECTED_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9abdd3905c91a152a01637a2946066db6b',1,'simdjson']]], - ['unicode_7',['unicode',['../structsimdjson_1_1padded__string.html#autotoc_md167',1,'Windows and Unicode'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md134',1,'Windows and Unicode']]], + ['unicode_7',['unicode',['../structsimdjson_1_1padded__string.html#autotoc_md198',1,'Windows and Unicode'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md163',1,'Windows and Unicode']]], ['uninitialized_8',['UNINITIALIZED',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ac2aef8f0fc33187cc118c95fade925d2',1,'simdjson']]], ['unsafe_5fis_5fequal_9',['unsafe_is_equal',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#affa14023a66c65f906ee3e673443d943',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal(size_t length, std::string_view target) const noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a3d8f15d3b004acd695b6fff5ba94b515',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal(const char *target) const noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a11bccba8ede5e7dff56e2737fcb853c7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::unsafe_is_equal(std::string_view target) const noexcept']]], ['unsupported_5farchitecture_10',['UNSUPPORTED_ARCHITECTURE',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4d768ac107473bceb91f8a0d1a824bc2',1,'simdjson']]], - ['usage_11',['Example Usage',['../md_doc_2dom.html#autotoc_md59',1,'']]], - ['usage_20and_20downclocking_12',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md120',1,'']]], - ['use_13',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md150',1,'']]], - ['use_20cases_14',['use cases',['../md_doc_2parse__many.html#autotoc_md110',1,'Use cases'],['../md_doc_2iterate__many.html#autotoc_md83',1,'Use cases']]], - ['use_20of_20the_20dom_20api_15',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md66',1,'']]], - ['use_20tt_20tag_5finvoke_20tt_20for_20custom_20types_20c_2020_16',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], - ['using_20simdjson_20as_20a_20cmake_20dependency_17',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], - ['using_20simdjson_20with_20package_20managers_18',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], - ['using_20static_20reflection_20c_2026_19',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], - ['using_20the_20dom_20front_20end_20',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['using_20the_20parsed_20json_21',['using the parsed json',['../md_doc_2dom.html#autotoc_md52',1,'Using the Parsed JSON'],['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON']]], - ['using_20the_20parsed_20json_3a_20additional_20examples_22',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], - ['using_20tt_20at_5fpath_5fwith_5fwildcard_20tt_20for_20jsonpath_20queries_23',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md58',1,'']]], - ['utf_208_20validation_20alone_24',['UTF-8 validation (alone)',['../md_doc_2basics.html#autotoc_md19',1,'']]], - ['utf8_5ferror_25',['UTF8_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a398a5389d6e20c39e8880b0101b66f56',1,'simdjson']]] + ['usage_11',['Example Usage',['../md_doc_2dom.html#autotoc_md88',1,'']]], + ['usage_20and_20downclocking_12',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md149',1,'']]], + ['usage_20modes_13',['Two Usage Modes',['../md_doc_2compile__time__accessors.html#autotoc_md57',1,'']]], + ['use_14',['use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md181',1,'IMPORTANT: Validate what you use'],['../md_doc_2compile__time__accessors.html#autotoc_md77',1,'When to Use']]], + ['use_20cases_15',['use cases',['../md_doc_2parse__many.html#autotoc_md139',1,'Use cases'],['../md_doc_2iterate__many.html#autotoc_md112',1,'Use cases']]], + ['use_20of_20the_20dom_20api_16',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md95',1,'']]], + ['use_20tt_20tag_5finvoke_20tt_20for_20custom_20types_20c_2020_17',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], + ['using_20simdjson_20as_20a_20cmake_20dependency_18',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], + ['using_20simdjson_20with_20package_20managers_19',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], + ['using_20static_20reflection_20c_2026_20',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], + ['using_20the_20dom_20front_20end_21',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['using_20the_20parsed_20json_22',['using the parsed json',['../md_doc_2dom.html#autotoc_md81',1,'Using the Parsed JSON'],['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON']]], + ['using_20the_20parsed_20json_3a_20additional_20examples_23',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], + ['using_20tt_20at_5fpath_5fwith_5fwildcard_20tt_20for_20jsonpath_20queries_24',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md87',1,'']]], + ['utf_208_20validation_20alone_25',['UTF-8 validation (alone)',['../md_doc_2basics.html#autotoc_md19',1,'']]], + ['utf8_5ferror_26',['UTF8_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a398a5389d6e20c39e8880b0101b66f56',1,'simdjson']]] ]; diff --git a/search/all_19.js b/search/all_19.js index 1e332604a..fe6c77e19 100644 --- a/search/all_19.js +++ b/search/all_19.js @@ -1,14 +1,17 @@ var searchData= [ - ['validate_20what_20you_20use_0',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md150',1,'']]], + ['validate_20what_20you_20use_0',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md181',1,'']]], ['validate_5funicode_1',['validate_unicode',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#abd3705658ebcf9442677f4a34a102975',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], ['validate_5futf8_2',['validate_utf8',['../classsimdjson_1_1implementation.html#aa3a7b818d56a54cca272191ec176f8f1',1,'simdjson::implementation::validate_utf8()'],['../namespacesimdjson.html#a04edabca6d128b8b31592e1e2e331ae0',1,'simdjson::validate_utf8(const std::string &s) noexcept'],['../namespacesimdjson.html#a28a847c4b31fc804bec2987b171dbd07',1,'simdjson::validate_utf8(const std::string_view sv) noexcept'],['../namespacesimdjson.html#a53546f3af0ed6840ffbeefcbefd305a1',1,'simdjson::validate_utf8(const char *buf, size_t len) noexcept']]], - ['validation_20alone_3',['UTF-8 validation (alone)',['../md_doc_2basics.html#autotoc_md19',1,'']]], - ['value_4',['value',['../classsimdjson_1_1dom_1_1key__value__pair.html#af7e38d9eb63a40256c9f936e45edf703',1,'simdjson::dom::key_value_pair::value'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a7188b9843c2b3b3050c54b52d5b6886f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::value()'],['../structsimdjson_1_1simdjson__result.html#a67ba566f7561173cdcfe8ceb99ee1126',1,'simdjson::simdjson_result::value()'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a2049ae539dca6999cc33300d212a5014',1,'simdjson::dom::object::iterator::value()'],['../structsimdjson_1_1simdjson__result.html#a58753296caf9ec6e03116161519aaed7',1,'simdjson::simdjson_result::value()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab96f6c19a1866863a110e8bcc93e0392',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::value()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#aa70f44114c55574f111deee115eac900',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#ad5f688629f86f80dff49cab2270b1967',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::value()']]], - ['value_5funsafe_5',['value_unsafe',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a7ae043cecbabaaaa11b8bb1c1f7b3fd7',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value_unsafe() &&noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ab37ffa449eaeb55020440de39bf5654f',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value_unsafe() &noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a69649cb039a0b7a0dbdb453b3b4903a9',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value_unsafe() const &noexcept'],['../structsimdjson_1_1simdjson__result.html#aeb935568c37351a9ae907662f90d2f45',1,'simdjson::simdjson_result::value_unsafe() &&noexcept'],['../structsimdjson_1_1simdjson__result.html#abb562d9f25241605a9ca8e110259c2c4',1,'simdjson::simdjson_result::value_unsafe() const &noexcept']]], - ['values_6',['values',['../md_doc_2tape.html#autotoc_md127',1,'Integer and Double values'],['../group__scalar.html',1,'Scalar values'],['../md_doc_2tape.html#autotoc_md126',1,'Simple JSON values']]], - ['versions_7',['Versions',['../md_doc_2basics.html#autotoc_md4',1,'']]], - ['view_8',['view',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8426e0339357dead16fa272590abc705',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['visual_20studio_9',['Visual Studio',['../md_doc_2performance.html#autotoc_md119',1,'']]], - ['vs_20on_20demand_10',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md50',1,'']]] + ['validated_20access_3',['validated access',['../md_doc_2compile__time__accessors.html#autotoc_md71',1,'Example 1: Validated Access'],['../md_doc_2compile__time__accessors.html#autotoc_md72',1,'Example 2: Non-Validated Access']]], + ['validation_4',['Mode 2: Without Validation',['../md_doc_2compile__time__accessors.html#autotoc_md59',1,'']]], + ['validation_20alone_5',['UTF-8 validation (alone)',['../md_doc_2basics.html#autotoc_md19',1,'']]], + ['validation_20recommended_6',['Mode 1: With Type Validation (Recommended)',['../md_doc_2compile__time__accessors.html#autotoc_md58',1,'']]], + ['value_7',['value',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#ad5f688629f86f80dff49cab2270b1967',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::value()'],['../classsimdjson_1_1dom_1_1key__value__pair.html#af7e38d9eb63a40256c9f936e45edf703',1,'simdjson::dom::key_value_pair::value'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a2049ae539dca6999cc33300d212a5014',1,'simdjson::dom::object::iterator::value()'],['../structsimdjson_1_1simdjson__result.html#a58753296caf9ec6e03116161519aaed7',1,'simdjson::simdjson_result::value() &noexcept(false)'],['../structsimdjson_1_1simdjson__result.html#a67ba566f7561173cdcfe8ceb99ee1126',1,'simdjson::simdjson_result::value() &&noexcept(false)'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#aa70f44114c55574f111deee115eac900',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab96f6c19a1866863a110e8bcc93e0392',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::value() noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a7188b9843c2b3b3050c54b52d5b6886f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::value(const value_iterator &iter) noexcept']]], + ['value_5funsafe_8',['value_unsafe',['../structsimdjson_1_1simdjson__result.html#aeb935568c37351a9ae907662f90d2f45',1,'simdjson::simdjson_result::value_unsafe() &&noexcept'],['../structsimdjson_1_1simdjson__result.html#abb562d9f25241605a9ca8e110259c2c4',1,'simdjson::simdjson_result::value_unsafe() const &noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a7ae043cecbabaaaa11b8bb1c1f7b3fd7',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value_unsafe() &&noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ab37ffa449eaeb55020440de39bf5654f',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value_unsafe() &noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a69649cb039a0b7a0dbdb453b3b4903a9',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::value_unsafe() const &noexcept']]], + ['values_9',['values',['../md_doc_2tape.html#autotoc_md156',1,'Integer and Double values'],['../group__scalar.html',1,'Scalar values'],['../md_doc_2tape.html#autotoc_md155',1,'Simple JSON values']]], + ['versions_10',['Versions',['../md_doc_2basics.html#autotoc_md4',1,'']]], + ['view_11',['view',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8426e0339357dead16fa272590abc705',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['visual_20studio_12',['Visual Studio',['../md_doc_2performance.html#autotoc_md148',1,'']]], + ['vs_20on_20demand_13',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md79',1,'']]] ]; diff --git a/search/all_1a.js b/search/all_1a.js index 3942ffe96..a02e35356 100644 --- a/search/all_1a.js +++ b/search/all_1a.js @@ -1,15 +1,18 @@ var searchData= [ - ['walking_20and_20json_20element_20types_0',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md63',1,'']]], + ['walking_20and_20json_20element_20types_0',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md92',1,'']]], ['way_20to_20parse_20documents_1',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], ['what_2',['what',['../structsimdjson_1_1simdjson__error.html#a0bfb7b6beaf33fae13cc16dc9b5dc168',1,'simdjson::simdjson_error']]], - ['what_20you_20use_3',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md150',1,'']]], - ['windows_20and_20unicode_4',['windows and unicode',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md134',1,'Windows and Unicode'],['../structsimdjson_1_1padded__string.html#autotoc_md167',1,'Windows and Unicode']]], - ['with_20explicit_20error_20handling_5',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]], - ['with_20package_20managers_6',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], - ['without_20exceptions_7',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md23',1,'']]], - ['without_20parsing_8',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], - ['without_20tt_20string_5fbuffer_20tt_20instance_9',['Without <tt>string_buffer</tt> instance',['../md_doc_2builder.html#autotoc_md46',1,'']]], - ['without_20tt_20string_5fbuffer_20tt_20instance_20but_20with_20explicit_20error_20handling_10',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]], - ['works_11',['works',['../md_doc_2iterate__many.html#autotoc_md77',1,'How it works'],['../md_doc_2parse__many.html#autotoc_md104',1,'How it works']]] + ['what_20you_20use_3',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md181',1,'']]], + ['when_20to_20use_4',['When to Use',['../md_doc_2compile__time__accessors.html#autotoc_md77',1,'']]], + ['windows_20and_20unicode_5',['windows and unicode',['../structsimdjson_1_1padded__string.html#autotoc_md198',1,'Windows and Unicode'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md163',1,'Windows and Unicode']]], + ['with_20explicit_20error_20handling_6',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]], + ['with_20package_20managers_7',['Using simdjson with package managers',['../md_doc_2basics.html#autotoc_md2',1,'']]], + ['with_20type_20validation_20recommended_8',['Mode 1: With Type Validation (Recommended)',['../md_doc_2compile__time__accessors.html#autotoc_md58',1,'']]], + ['without_20exceptions_9',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md26',1,'']]], + ['without_20parsing_10',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], + ['without_20tt_20string_5fbuffer_20tt_20instance_11',['Without <tt>string_buffer</tt> instance',['../md_doc_2builder.html#autotoc_md49',1,'']]], + ['without_20tt_20string_5fbuffer_20tt_20instance_20but_20with_20explicit_20error_20handling_12',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]], + ['without_20validation_13',['Mode 2: Without Validation',['../md_doc_2compile__time__accessors.html#autotoc_md59',1,'']]], + ['works_14',['works',['../md_doc_2compile__time__accessors.html#autotoc_md56',1,'How It Works'],['../md_doc_2iterate__many.html#autotoc_md106',1,'How it works'],['../md_doc_2parse__many.html#autotoc_md133',1,'How it works'],['../compile__time__accessors_8h.html#autotoc_md179',1,'How It Works']]] ]; diff --git a/search/all_1b.js b/search/all_1b.js index ac01013dd..e0f074885 100644 --- a/search/all_1b.js +++ b/search/all_1b.js @@ -1,4 +1,4 @@ var searchData= [ - ['x64_20systems_0',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md100',1,'']]] + ['x64_20systems_0',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md129',1,'']]] ]; diff --git a/search/all_1c.js b/search/all_1c.js index b2a7db2a8..0cb3184a1 100644 --- a/search/all_1c.js +++ b/search/all_1c.js @@ -1,7 +1,7 @@ var searchData= [ - ['you_20use_0',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md150',1,'']]], - ['your_20cpu_20selection_20x64_20systems_1',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md100',1,'']]], - ['your_20position_2',['your position',['../md_doc_2iterate__many.html#autotoc_md84',1,'Tracking your position'],['../md_doc_2parse__many.html#autotoc_md111',1,'Tracking your position']]], - ['your_20system_3',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]] + ['you_20use_0',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md181',1,'']]], + ['your_20cpu_20selection_20x64_20systems_1',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md129',1,'']]], + ['your_20position_2',['your position',['../md_doc_2iterate__many.html#autotoc_md113',1,'Tracking your position'],['../md_doc_2parse__many.html#autotoc_md140',1,'Tracking your position']]], + ['your_20system_3',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]] ]; diff --git a/search/all_2.js b/search/all_2.js index 84b30ffa6..3a2a488d4 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -1,4 +1,5 @@ var searchData= [ - ['3_20using_20static_20reflection_20c_2026_0',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]] + ['3_20using_20static_20reflection_20c_2026_0',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], + ['3_3a_20direct_20extraction_1',['Example 3: Direct Extraction',['../md_doc_2compile__time__accessors.html#autotoc_md73',1,'']]] ]; diff --git a/search/all_4.js b/search/all_4.js index 9e6259ac0..dc67b3b6d 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -2,55 +2,62 @@ var searchData= [ ['a_20better_20way_20to_20parse_20documents_0',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], ['a_20cmake_20dependency_1',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], - ['access_20to_20the_20raw_20json_20string_2',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], - ['adding_20support_20for_20custom_20types_3',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], - ['additional_20examples_4',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], - ['algorithm_5',['Algorithm',['../md_doc_2ondemand__design.html#autotoc_md92',1,'']]], - ['allocate_6',['allocate',['../classsimdjson_1_1dom_1_1parser.html#af8f49755a335bc269cb02d24badfcdf9',1,'simdjson::dom::parser::allocate()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#ab6201f2eab41026e722a237d280b8fe1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::allocate()']]], - ['alone_7',['UTF-8 validation (alone)',['../md_doc_2basics.html#autotoc_md19',1,'']]], - ['an_20existing_20string_20instance_8',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md35',1,'']]], - ['an_20implementation_20can_20run_20on_20your_20system_9',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], - ['and_20arrays_10',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md34',1,'']]], - ['and_20branch_20misprediction_11',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md91',1,'']]], - ['and_20double_20values_12',['Integer and Double values',['../md_doc_2tape.html#autotoc_md127',1,'']]], - ['and_20downclocking_13',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md120',1,'']]], - ['and_20huge_20page_20support_14',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md117',1,'']]], - ['and_20json_20element_20types_15',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md63',1,'']]], - ['and_20json_20lines_16',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md29',1,'']]], - ['and_20json_20scope_17',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], - ['and_20memory_20capacity_18',['and memory capacity',['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity']]], - ['and_20parsing_20json_20documents_19',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], - ['and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_20',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['and_20temporary_20copies_21',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md67',1,'']]], - ['and_20unicode_22',['and unicode',['../structsimdjson_1_1padded__string.html#autotoc_md167',1,'Windows and Unicode'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md134',1,'Windows and Unicode']]], - ['api_23',['api',['../md_doc_2parse__many.html#autotoc_md109',1,'API'],['../md_doc_2iterate__many.html#autotoc_md82',1,'API'],['../md_doc_2dom.html#autotoc_md66',1,'Best Use of the DOM API']]], - ['append_24',['append',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a3221a8b59ab2c9a08b6530026ad202b1',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append(number_type v) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab05b1076615819d523e3dadba9431891',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append(char c) noexcept']]], - ['append_5fcolon_25',['append_colon',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab9ef09e54ad1ca9e44d21ce7a3d70d9a',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['append_5fcomma_26',['append_comma',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a02fa5e731a90339bb72052a8aa0822ab',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['append_5fdouble_27',['append_double',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ae5b327f855878cba9b026059a1fc8a1b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['append_5fkey_5fvalue_28',['append_key_value',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a190089808a84fcfe133b529455ec951e',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['append_5fnull_29',['append_null',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab8271f4c85aa4e54cecb58ec2c4758ff',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['append_5fraw_30',['append_raw',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8ef2d52b7d6099cff5c69165edd8a7ef',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append_raw(const char *c) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#aba3c308bc23e73cd4fe0c154a7e2a22a',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append_raw(std::string_view input) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9ee1806825fd7b1fcf64725d783421d7',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append_raw(const char *str, size_t len) noexcept']]], - ['append_5fs64_31',['append_s64',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#adb931b17ba9d4d41dd8111ad9288256c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['append_5fu64_32',['append_u64',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa3481ec0d0726a732688b7fc64372049',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['applicability_20of_20the_20on_20demand_20approach_33',['Applicability of the On-Demand Approach',['../md_doc_2ondemand__design.html#autotoc_md99',1,'']]], - ['approach_34',['approach',['../md_doc_2ondemand__design.html#autotoc_md99',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md97',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md98',1,'Limitations of the On-Demand Approach']]], - ['architecture_20specific_20implementations_35',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], - ['are_20iterators_36',['Documents are iterators',['../md_doc_2basics.html#autotoc_md6',1,'']]], - ['array_37',['array',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330af1f713c9e000f5d3f280adbd124df4f5',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array'],['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aacb4fb1757fb37c43cded35d3eb857c43',1,'simdjson::dom::ARRAY'],['../classsimdjson_1_1dom_1_1array.html',1,'simdjson::dom::array'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a240a8118a5b6f76962425134cc284764',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::array(const value_iterator &iter) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cc89dada9999c2ecc319954cc3fc90a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::array() noexcept=default'],['../classsimdjson_1_1dom_1_1array.html#a8b3d6eaec52a2b44965e53d874e367e9',1,'simdjson::dom::array::array()']]], - ['array_20iteration_38',['Array iteration',['../group__array.html',1,'']]], - ['array_5fiterator_39',['array_iterator',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#aa330b23feb572f33d77516431572b643',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::array_iterator()']]], - ['arrays_40',['arrays',['../md_doc_2tape.html#autotoc_md130',1,'Arrays'],['../md_doc_2basics.html#autotoc_md34',1,'Raw JSON string for objects and arrays']]], - ['as_20a_20cmake_20dependency_41',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], - ['as_5fdouble_42',['as_double',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a41dc1bfd660e0b9c86cb5a5171fd7c02',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], - ['at_43',['at',['../classsimdjson_1_1dom_1_1element.html#aa8b5798004a859bf922778226b8c1cce',1,'simdjson::dom::element::at(const std::string_view json_pointer) const noexcept'],['../classsimdjson_1_1dom_1_1element.html#aeb155c47ef7bebcad79e1b7449734030',1,'simdjson::dom::element::at(size_t index) const noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a1c97143f7637414d737d58daeec2eb84',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::at()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a01c6bde0574654dc22ea219c3b3dbf51',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acc369e813e7cf4a97564bb0d85f76db3',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::at()'],['../classsimdjson_1_1dom_1_1array.html#a6a6373cc1542a7137b79978680a93d18',1,'simdjson::dom::array::at()']]], - ['at_5fend_44',['at_end',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#ae7629ba7c3cec3be3bc61d5d79c154c1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::at_end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#ab6e957b9c6f9c15d6869be3642db0e6b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::at_end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae896ac465551b036763e4465b3a16c7b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_end()']]], - ['at_5fkey_45',['at_key',['../classsimdjson_1_1dom_1_1object.html#a4fb3e04e0ea591132da90341bf9ed819',1,'simdjson::dom::object::at_key()'],['../classsimdjson_1_1dom_1_1element.html#a686a21f39c755dcbf95116757d2193bd',1,'simdjson::dom::element::at_key()']]], - ['at_5fkey_5fcase_5finsensitive_46',['at_key_case_insensitive',['../classsimdjson_1_1dom_1_1object.html#ab075da9eb7678f6321cecf4cbd196039',1,'simdjson::dom::object::at_key_case_insensitive()'],['../classsimdjson_1_1dom_1_1element.html#a5185447e6bf8949e7c5e9c22711e8764',1,'simdjson::dom::element::at_key_case_insensitive()']]], - ['at_5fpath_47',['at_path',['../classsimdjson_1_1dom_1_1object.html#aa9d243605183d484a797cc06ac32a0ee',1,'simdjson::dom::object::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6f6c6d98a3605c8e04cad16fce05c16c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae1bb196ae5f2aeabd8d95accdcd73498',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a87b1fb46555fdf69761966e49ffaa9d7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aa9ec8526ef892cb3766faccf1a674e03',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::at_path()'],['../classsimdjson_1_1dom_1_1array.html#aa9d596ea0c2e0a6732866d5d9c1fa3ec',1,'simdjson::dom::array::at_path()'],['../classsimdjson_1_1dom_1_1element.html#ae63f42ca3ef7d7eda92b4366db200782',1,'simdjson::dom::element::at_path()']]], - ['at_5fpath_5fwith_5fwildcard_48',['at_path_with_wildcard',['../classsimdjson_1_1dom_1_1array.html#a1ad9d74fd73844ca1ebcaaa88025860a',1,'simdjson::dom::array::at_path_with_wildcard()'],['../classsimdjson_1_1dom_1_1object.html#a80e5180422078f1adadd467508993c41',1,'simdjson::dom::object::at_path_with_wildcard()']]], - ['at_5fpath_5fwith_5fwildcard_20tt_20for_20jsonpath_20queries_49',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md58',1,'']]], - ['at_5fpointer_50',['at_pointer',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aadd2f646a3231d407948bf5f3da46528',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::at_pointer()'],['../classsimdjson_1_1dom_1_1array.html#a8141c7d98672bc3ab69fea7b63afcfb2',1,'simdjson::dom::array::at_pointer()'],['../classsimdjson_1_1dom_1_1element.html#a3777fed88f37555f2d090aeb604a117c',1,'simdjson::dom::element::at_pointer()'],['../classsimdjson_1_1dom_1_1object.html#ace84581be0fee46d5128c49710522aba',1,'simdjson::dom::object::at_pointer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a73c2fc4db0c0b4083fafe706412d3b26',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::at_pointer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a74484485f4a3d8dce5943b0cb60ac815',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_pointer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae3d80f8e7f31c319fe6ee09c0860df83',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::at_pointer()']]], - ['available_20implementations_51',['Querying Available Implementations',['../md_doc_2implementation-selection.html#autotoc_md72',1,'']]], - ['avoiding_20pitfalls_3a_20enable_20development_20checks_52',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]] + ['access_2',['access',['../md_doc_2compile__time__accessors.html#autotoc_md71',1,'Example 1: Validated Access'],['../md_doc_2compile__time__accessors.html#autotoc_md72',1,'Example 2: Non-Validated Access']]], + ['access_20to_20the_20raw_20json_20string_3',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['accessors_4',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['adding_20support_20for_20custom_20types_5',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], + ['additional_20examples_6',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], + ['algorithm_7',['Algorithm',['../md_doc_2ondemand__design.html#autotoc_md121',1,'']]], + ['allocate_8',['allocate',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#ab6201f2eab41026e722a237d280b8fe1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::allocate()'],['../classsimdjson_1_1dom_1_1parser.html#af8f49755a335bc269cb02d24badfcdf9',1,'simdjson::dom::parser::allocate()']]], + ['alone_9',['UTF-8 validation (alone)',['../md_doc_2basics.html#autotoc_md19',1,'']]], + ['also_10',['See Also',['../md_doc_2compile__time__accessors.html#autotoc_md78',1,'']]], + ['an_20existing_20string_20instance_11',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md38',1,'']]], + ['an_20implementation_20can_20run_20on_20your_20system_12',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], + ['and_20arrays_13',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md37',1,'']]], + ['and_20branch_20misprediction_14',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md120',1,'']]], + ['and_20double_20values_15',['Integer and Double values',['../md_doc_2tape.html#autotoc_md156',1,'']]], + ['and_20downclocking_16',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md149',1,'']]], + ['and_20huge_20page_20support_17',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md146',1,'']]], + ['and_20json_20element_20types_18',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md92',1,'']]], + ['and_20json_20lines_19',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md32',1,'']]], + ['and_20json_20pointer_20accessors_20',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['and_20json_20pointer_20c_2026_20reflection_21',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['and_20json_20scope_22',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], + ['and_20memory_20capacity_23',['and memory capacity',['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]], + ['and_20parsing_20json_20documents_24',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], + ['and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_25',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['and_20temporary_20copies_26',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md96',1,'']]], + ['and_20unicode_27',['and unicode',['../structsimdjson_1_1padded__string.html#autotoc_md198',1,'Windows and Unicode'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md163',1,'Windows and Unicode']]], + ['api_28',['api',['../md_doc_2iterate__many.html#autotoc_md111',1,'API'],['../md_doc_2parse__many.html#autotoc_md138',1,'API'],['../md_doc_2dom.html#autotoc_md95',1,'Best Use of the DOM API']]], + ['api_20reference_29',['API Reference',['../md_doc_2compile__time__accessors.html#autotoc_md66',1,'']]], + ['apis_30',['Key Reflection APIs',['../compile__time__accessors_8h.html#autotoc_md180',1,'']]], + ['append_31',['append',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a3221a8b59ab2c9a08b6530026ad202b1',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append(number_type v) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab05b1076615819d523e3dadba9431891',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append(char c) noexcept']]], + ['append_5fcolon_32',['append_colon',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab9ef09e54ad1ca9e44d21ce7a3d70d9a',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['append_5fcomma_33',['append_comma',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a02fa5e731a90339bb72052a8aa0822ab',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['append_5fdouble_34',['append_double',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ae5b327f855878cba9b026059a1fc8a1b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], + ['append_5fkey_5fvalue_35',['append_key_value',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a190089808a84fcfe133b529455ec951e',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['append_5fnull_36',['append_null',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab8271f4c85aa4e54cecb58ec2c4758ff',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['append_5fraw_37',['append_raw',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9ee1806825fd7b1fcf64725d783421d7',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append_raw(const char *str, size_t len) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#aba3c308bc23e73cd4fe0c154a7e2a22a',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append_raw(std::string_view input) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8ef2d52b7d6099cff5c69165edd8a7ef',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::append_raw(const char *c) noexcept']]], + ['append_5fs64_38',['append_s64',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#adb931b17ba9d4d41dd8111ad9288256c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], + ['append_5fu64_39',['append_u64',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa3481ec0d0726a732688b7fc64372049',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], + ['applicability_20of_20the_20on_20demand_20approach_40',['Applicability of the On-Demand Approach',['../md_doc_2ondemand__design.html#autotoc_md128',1,'']]], + ['approach_41',['approach',['../md_doc_2ondemand__design.html#autotoc_md128',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md126',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md127',1,'Limitations of the On-Demand Approach']]], + ['architecture_20specific_20implementations_42',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], + ['are_20iterators_43',['Documents are iterators',['../md_doc_2basics.html#autotoc_md6',1,'']]], + ['array_44',['array',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array'],['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330af1f713c9e000f5d3f280adbd124df4f5',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array'],['../classsimdjson_1_1dom_1_1array.html',1,'simdjson::dom::array'],['../classsimdjson_1_1dom_1_1array.html#a8b3d6eaec52a2b44965e53d874e367e9',1,'simdjson::dom::array::array()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cc89dada9999c2ecc319954cc3fc90a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::array() noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a240a8118a5b6f76962425134cc284764',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::array(const value_iterator &iter) noexcept'],['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aacb4fb1757fb37c43cded35d3eb857c43',1,'simdjson::dom::ARRAY']]], + ['array_20iteration_45',['Array iteration',['../group__array.html',1,'']]], + ['array_5fiterator_46',['array_iterator',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#aa330b23feb572f33d77516431572b643',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::array_iterator()']]], + ['arrays_47',['arrays',['../md_doc_2tape.html#autotoc_md159',1,'Arrays'],['../md_doc_2basics.html#autotoc_md37',1,'Raw JSON string for objects and arrays']]], + ['as_20a_20cmake_20dependency_48',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], + ['as_5fdouble_49',['as_double',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a41dc1bfd660e0b9c86cb5a5171fd7c02',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number']]], + ['at_50',['at',['../classsimdjson_1_1dom_1_1element.html#aa8b5798004a859bf922778226b8c1cce',1,'simdjson::dom::element::at()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acc369e813e7cf4a97564bb0d85f76db3',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::at()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a01c6bde0574654dc22ea219c3b3dbf51',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a1c97143f7637414d737d58daeec2eb84',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::at()'],['../classsimdjson_1_1dom_1_1element.html#aeb155c47ef7bebcad79e1b7449734030',1,'simdjson::dom::element::at()'],['../classsimdjson_1_1dom_1_1array.html#a6a6373cc1542a7137b79978680a93d18',1,'simdjson::dom::array::at()']]], + ['at_5fend_51',['at_end',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#ae7629ba7c3cec3be3bc61d5d79c154c1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array_iterator::at_end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae896ac465551b036763e4465b3a16c7b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#ab6e957b9c6f9c15d6869be3642db0e6b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::at_end()']]], + ['at_5fkey_52',['at_key',['../classsimdjson_1_1dom_1_1object.html#a4fb3e04e0ea591132da90341bf9ed819',1,'simdjson::dom::object::at_key()'],['../classsimdjson_1_1dom_1_1element.html#a686a21f39c755dcbf95116757d2193bd',1,'simdjson::dom::element::at_key(std::string_view key) const noexcept']]], + ['at_5fkey_5fcase_5finsensitive_53',['at_key_case_insensitive',['../classsimdjson_1_1dom_1_1element.html#a5185447e6bf8949e7c5e9c22711e8764',1,'simdjson::dom::element::at_key_case_insensitive()'],['../classsimdjson_1_1dom_1_1object.html#ab075da9eb7678f6321cecf4cbd196039',1,'simdjson::dom::object::at_key_case_insensitive()']]], + ['at_5fpath_54',['at_path',['../classsimdjson_1_1dom_1_1array.html#aa9d596ea0c2e0a6732866d5d9c1fa3ec',1,'simdjson::dom::array::at_path()'],['../classsimdjson_1_1dom_1_1element.html#ae63f42ca3ef7d7eda92b4366db200782',1,'simdjson::dom::element::at_path()'],['../classsimdjson_1_1dom_1_1object.html#aa9d243605183d484a797cc06ac32a0ee',1,'simdjson::dom::object::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aa9ec8526ef892cb3766faccf1a674e03',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a87b1fb46555fdf69761966e49ffaa9d7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae1bb196ae5f2aeabd8d95accdcd73498',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::at_path()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6f6c6d98a3605c8e04cad16fce05c16c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::at_path()']]], + ['at_5fpath_5fwith_5fwildcard_55',['at_path_with_wildcard',['../classsimdjson_1_1dom_1_1array.html#a1ad9d74fd73844ca1ebcaaa88025860a',1,'simdjson::dom::array::at_path_with_wildcard()'],['../classsimdjson_1_1dom_1_1object.html#a80e5180422078f1adadd467508993c41',1,'simdjson::dom::object::at_path_with_wildcard()']]], + ['at_5fpath_5fwith_5fwildcard_20tt_20for_20jsonpath_20queries_56',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md87',1,'']]], + ['at_5fpointer_57',['at_pointer',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a74484485f4a3d8dce5943b0cb60ac815',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::at_pointer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a73c2fc4db0c0b4083fafe706412d3b26',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::at_pointer()'],['../classsimdjson_1_1dom_1_1object.html#ace84581be0fee46d5128c49710522aba',1,'simdjson::dom::object::at_pointer()'],['../classsimdjson_1_1dom_1_1element.html#a3777fed88f37555f2d090aeb604a117c',1,'simdjson::dom::element::at_pointer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aadd2f646a3231d407948bf5f3da46528',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::at_pointer()'],['../classsimdjson_1_1dom_1_1array.html#a8141c7d98672bc3ab69fea7b63afcfb2',1,'simdjson::dom::array::at_pointer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae3d80f8e7f31c319fe6ee09c0860df83',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::at_pointer()']]], + ['available_20implementations_58',['Querying Available Implementations',['../md_doc_2implementation-selection.html#autotoc_md101',1,'']]], + ['avoiding_20pitfalls_3a_20enable_20development_20checks_59',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]] ]; diff --git a/search/all_5.js b/search/all_5.js index eb4884ff3..82a4d8875 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,25 +1,25 @@ var searchData= [ - ['backwards_20compatibility_0',['Backwards compatibility',['../md_doc_2basics.html#autotoc_md38',1,'']]], - ['based_20parser_20generators_1',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md90',1,'']]], - ['based_20parsers_20sax_20saj_20etc_2',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md89',1,'']]], + ['backwards_20compatibility_0',['Backwards compatibility',['../md_doc_2basics.html#autotoc_md41',1,'']]], + ['based_20parser_20generators_1',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md119',1,'']]], + ['based_20parsers_20sax_20saj_20etc_2',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md118',1,'']]], ['basics_3',['The Basics',['../md_doc_2basics.html',1,'']]], ['basics_3a_20loading_20and_20parsing_20json_20documents_4',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], - ['basics_3a_20loading_20and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_5',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], + ['basics_3a_20loading_20and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_5',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], ['begin_6',['begin',['../classsimdjson_1_1dom_1_1document__stream.html#a9a51df3d81c9b7849bbbc8ae42096b76',1,'simdjson::dom::document_stream::begin()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a88d1cdc3124965d707754af4fcfae7f9',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::begin()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#ae88253d9f6cef0dfc0bd05c45cdfc06f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::begin()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1a450826deb3ba982c9f0ec6208cb246',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::begin()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cb4bf0ca1890a4a3c86f69be40f17f2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::begin()'],['../classsimdjson_1_1dom_1_1object.html#afe127a7e9ec8dab9ec76160525a68a83',1,'simdjson::dom::object::begin()'],['../classsimdjson_1_1dom_1_1element.html#aa59ecf8e9ac7b1a9e977d2cd3f03aa7f',1,'simdjson::dom::element::begin()'],['../classsimdjson_1_1dom_1_1array.html#aebd2b7ca5e1d87476ea2cd4fc9239a74',1,'simdjson::dom::array::begin()']]], - ['benefits_20of_20the_20on_20demand_20approach_7',['Benefits of the On-Demand Approach',['../md_doc_2ondemand__design.html#autotoc_md97',1,'']]], - ['best_20use_20of_20the_20dom_20api_8',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md66',1,'']]], + ['benefits_20of_20the_20on_20demand_20approach_7',['Benefits of the On-Demand Approach',['../md_doc_2ondemand__design.html#autotoc_md126',1,'']]], + ['best_20use_20of_20the_20dom_20api_8',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md95',1,'']]], ['better_20way_20to_20parse_20documents_9',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], ['bigint_5ferror_10',['BIGINT_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae5acac431888aeadfef98bee7d66957e',1,'simdjson']]], - ['blindness_20and_20branch_20misprediction_11',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md91',1,'']]], + ['blindness_20and_20branch_20misprediction_11',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md120',1,'']]], ['bool_12',['BOOL',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa97b2c144243b2b9d2c593ec268b62f5',1,'simdjson::dom']]], ['boolean_13',['boolean',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330a84e2c64f38f78ba3ea5c905ab5a2da27',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], - ['branch_20misprediction_14',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md91',1,'']]], + ['branch_20misprediction_14',['Type Blindness and Branch Misprediction',['../md_doc_2ondemand__design.html#autotoc_md120',1,'']]], ['buf_15',['buf',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a961b4870710d5ee1da938c4923d6f68d',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation']]], - ['buffer_20lifetime_16',['buffer lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md151',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md155',1,'IMPORTANT: Buffer Lifetime']]], - ['buffer_20padding_17',['buffer padding',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md137',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md147',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md153',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md157',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md160',1,'REQUIRED: Buffer Padding']]], - ['buffers_18',['Reusing string buffers',['../md_doc_2performance.html#autotoc_md115',1,'']]], + ['buffer_20lifetime_16',['buffer lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md182',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md186',1,'IMPORTANT: Buffer Lifetime']]], + ['buffer_20padding_17',['buffer padding',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md166',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md176',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md184',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md188',1,'REQUIRED: Buffer Padding'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md191',1,'REQUIRED: Buffer Padding']]], + ['buffers_18',['Reusing string buffers',['../md_doc_2performance.html#autotoc_md144',1,'']]], ['builder_19',['Builder',['../md_doc_2builder.html',1,'']]], ['builtin_5fimplementation_20',['builtin_implementation',['../namespacesimdjson.html#a27d0ec4db7cb0197fa90096703a13e25',1,'simdjson']]], - ['but_20with_20explicit_20error_20handling_21',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]] + ['but_20with_20explicit_20error_20handling_21',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]] ]; diff --git a/search/all_6.js b/search/all_6.js index b41f254bf..db5d9515b 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,42 +1,46 @@ var searchData= [ - ['c_2017_20support_0',['C++17 Support',['../md_doc_2dom.html#autotoc_md54',1,'']]], - ['c_2020_1',['c 20',['../md_doc_2basics.html#autotoc_md13',1,'1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)'],['../md_doc_2basics.html#autotoc_md14',1,'2. Use <tt>tag_invoke</tt> for custom types (C++20)'],['../md_doc_2builder.html#autotoc_md44',1,'C++20'],['../md_doc_2basics.html#autotoc_md17',1,'The simdjson::from shortcut (experimental, C++20)']]], - ['c_2020_20features_2',['C++20 features',['../md_doc_2iterate__many.html#autotoc_md87',1,'']]], - ['c_2020_20support_3',['C++20 Support',['../md_doc_2dom.html#autotoc_md55',1,'']]], - ['c_2026_4',['3. Using static reflection (C++26)',['../md_doc_2basics.html#autotoc_md15',1,'']]], - ['c_2026_20static_20reflection_5',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md45',1,'']]], - ['c_5fstr_6',['c_str',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a914d1fe0740448804f18be301e712da0',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['can_20run_20on_20your_20system_7',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], - ['capacity_8',['capacity',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a2d50048bbe409023df4e88f6ffe3bc71',1,'simdjson::CAPACITY'],['../classsimdjson_1_1padded__string__view.html#a9d98e1984b893116d8bb7123d84d75b8',1,'simdjson::padded_string_view::capacity()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a6c471139dab5371a25021158a7f07d17',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::capacity()'],['../classsimdjson_1_1dom_1_1parser.html#aedf495a6e090929be23473e8a29f2fe2',1,'simdjson::dom::parser::capacity()'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md133',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md139',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md144',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md149',1,'Parser Capacity'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md162',1,'Parser Capacity'],['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity']]], - ['cases_9',['cases',['../md_doc_2basics.html#autotoc_md16',1,'Special cases'],['../md_doc_2iterate__many.html#autotoc_md83',1,'Use cases'],['../md_doc_2parse__many.html#autotoc_md110',1,'Use cases']]], - ['check_5froot_5farray_10',['check_root_array',['../group__array.html#ga1e023cb72adae168dc7157776976ad75',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['check_5froot_5fobject_11',['check_root_object',['../group__object.html#ga262c7a1f9320fefb1711fec7b69ef6b1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['checking_20for_20trailing_20content_12',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md27',1,'']]], - ['checking_20that_20an_20implementation_20can_20run_20on_20your_20system_13',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], - ['checking_20your_20cpu_20selection_20x64_20systems_14',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md100',1,'']]], - ['checks_15',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]], - ['child_16',['child',['../group__array.html#gaba7c4e5787c7295da3a0d73b0db1c890',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['clear_17',['clear',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9aaa18471e8b69c9dce68fdc48c6af0b',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['cmake_20dependency_18',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], - ['comma_20separated_20documents_19',['Comma-separated documents',['../md_doc_2iterate__many.html#autotoc_md86',1,'']]], - ['compatibility_20',['Backwards compatibility',['../md_doc_2basics.html#autotoc_md38',1,'']]], - ['compliance_21',['Standard compliance',['../md_doc_2basics.html#autotoc_md37',1,'']]], - ['consume_22',['consume',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad00dfe364f8f9c97a2e0e8bb309a00b7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::consume()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a7eead0332d195ce78559dac428ae027d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::consume()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a15159e4995ec7c9dd9e4eb295699c593',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::consume()']]], - ['content_23',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md27',1,'']]], - ['contents_24',['contents',['../md_doc_2iterate__many.html#autotoc_md75',1,'Contents'],['../md_doc_2parse__many.html#autotoc_md101',1,'Contents']]], - ['context_25',['context',['../md_doc_2iterate__many.html#autotoc_md78',1,'Context'],['../md_doc_2parse__many.html#autotoc_md105',1,'Context']]], - ['copies_26',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md67',1,'']]], - ['count_5felements_27',['count_elements',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab408c2ea4be8874e3514b389c70a5667',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::count_elements()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a9f23e6ab13ad93c43e705ce7fe6134c9',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::count_elements()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a481e2b0b216d29038ddca3242a7047ad',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::count_elements()']]], - ['count_5ffields_28',['count_fields',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a24fd6a8aa158b80d851e3a57c9fef642',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::count_fields()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a55f04607ee4e718294a572f9b6ad94cc',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::count_fields()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aef6872e07743217fe2e2abe790a21d4c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::count_fields()']]], - ['cpu_20architecture_20specific_20implementations_29',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], - ['cpu_20detection_30',['Runtime CPU Detection',['../md_doc_2implementation-selection.html#autotoc_md70',1,'']]], - ['cpu_20selection_20x64_20systems_31',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md100',1,'']]], - ['current_20location_20in_20document_32',['Current location in document',['../md_doc_2basics.html#autotoc_md26',1,'']]], - ['current_5fdepth_33',['current_depth',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1919a4ca6418c94ed54f026fbbda6f1d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_depth()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8bcd64ae6b4d204c4b6b2a8420e0270c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_depth()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a3bfd36dafc82c212f165b434ab5378b3',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::current_depth()']]], - ['current_5flocation_34',['current_location',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af4c151ba820f579e149b4bf98e644a49',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_location()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a78b9e4e22a89050c9f911f1878165e88',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::current_location()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a06258e49f2dbb910beeaf6814ff7e071',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_location()']]], - ['custom_20types_35',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], - ['custom_20types_20c_2020_36',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], - ['custom_20types_20pre_20c_2020_37',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], - ['customization_38',['Customization',['../md_doc_2builder.html#autotoc_md49',1,'']]] + ['c_2017_20support_0',['C++17 Support',['../md_doc_2dom.html#autotoc_md83',1,'']]], + ['c_2020_1',['c 20',['../md_doc_2basics.html#autotoc_md13',1,'1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)'],['../md_doc_2basics.html#autotoc_md14',1,'2. Use <tt>tag_invoke</tt> for custom types (C++20)'],['../md_doc_2builder.html#autotoc_md47',1,'C++20'],['../md_doc_2basics.html#autotoc_md17',1,'The simdjson::from shortcut (experimental, C++20)']]], + ['c_2020_20features_2',['C++20 features',['../md_doc_2iterate__many.html#autotoc_md116',1,'']]], + ['c_2020_20support_3',['C++20 Support',['../md_doc_2dom.html#autotoc_md84',1,'']]], + ['c_2026_4',['c 26',['../md_doc_2basics.html#autotoc_md15',1,'3. Using static reflection (C++26)'],['../md_doc_2basics.html#autotoc_md23',1,'C++26'],['../md_doc_2basics.html#autotoc_md22',1,'C++26']]], + ['c_2026_20reflection_5',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['c_2026_20static_20reflection_6',['C++26 static reflection',['../md_doc_2builder.html#autotoc_md48',1,'']]], + ['c_5fstr_7',['c_str',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a914d1fe0740448804f18be301e712da0',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['can_20run_20on_20your_20system_8',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], + ['capacity_9',['capacity',['../classsimdjson_1_1dom_1_1parser.html#aedf495a6e090929be23473e8a29f2fe2',1,'simdjson::dom::parser::capacity()'],['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a2d50048bbe409023df4e88f6ffe3bc71',1,'simdjson::CAPACITY'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a6c471139dab5371a25021158a7f07d17',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::capacity()'],['../classsimdjson_1_1padded__string__view.html#a9d98e1984b893116d8bb7123d84d75b8',1,'simdjson::padded_string_view::capacity()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md193',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md178',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md173',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md168',1,'Parser Capacity'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md162',1,'Parser Capacity'],['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]], + ['cases_10',['cases',['../md_doc_2basics.html#autotoc_md16',1,'Special cases'],['../md_doc_2parse__many.html#autotoc_md139',1,'Use cases'],['../md_doc_2iterate__many.html#autotoc_md112',1,'Use cases']]], + ['check_5froot_5farray_11',['check_root_array',['../group__array.html#ga1e023cb72adae168dc7157776976ad75',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['check_5froot_5fobject_12',['check_root_object',['../group__object.html#ga262c7a1f9320fefb1711fec7b69ef6b1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['checking_20for_20trailing_20content_13',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md30',1,'']]], + ['checking_20that_20an_20implementation_20can_20run_20on_20your_20system_14',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], + ['checking_20your_20cpu_20selection_20x64_20systems_15',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md129',1,'']]], + ['checks_16',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]], + ['child_17',['child',['../group__array.html#gaba7c4e5787c7295da3a0d73b0db1c890',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['clear_18',['clear',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9aaa18471e8b69c9dce68fdc48c6af0b',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], + ['cmake_20dependency_19',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], + ['comma_20separated_20documents_20',['Comma-separated documents',['../md_doc_2iterate__many.html#autotoc_md115',1,'']]], + ['compatibility_21',['Backwards compatibility',['../md_doc_2basics.html#autotoc_md41',1,'']]], + ['compile_20time_20jsonpath_20and_20json_20pointer_20accessors_22',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['compile_20time_20jsonpath_20and_20json_20pointer_20c_2026_20reflection_23',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['complete_20examples_24',['Complete Examples',['../md_doc_2compile__time__accessors.html#autotoc_md70',1,'']]], + ['compliance_25',['Standard compliance',['../md_doc_2basics.html#autotoc_md40',1,'']]], + ['consume_26',['consume',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad00dfe364f8f9c97a2e0e8bb309a00b7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::consume()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a7eead0332d195ce78559dac428ae027d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::consume()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a15159e4995ec7c9dd9e4eb295699c593',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::consume()']]], + ['content_27',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md30',1,'']]], + ['contents_28',['contents',['../md_doc_2iterate__many.html#autotoc_md104',1,'Contents'],['../md_doc_2parse__many.html#autotoc_md130',1,'Contents']]], + ['context_29',['context',['../md_doc_2parse__many.html#autotoc_md134',1,'Context'],['../md_doc_2iterate__many.html#autotoc_md107',1,'Context']]], + ['copies_30',['Padding and Temporary Copies',['../md_doc_2dom.html#autotoc_md96',1,'']]], + ['count_5felements_31',['count_elements',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a9f23e6ab13ad93c43e705ce7fe6134c9',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::count_elements()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab408c2ea4be8874e3514b389c70a5667',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::count_elements()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a481e2b0b216d29038ddca3242a7047ad',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::count_elements() &noexcept']]], + ['count_5ffields_32',['count_fields',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a55f04607ee4e718294a572f9b6ad94cc',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::count_fields()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aef6872e07743217fe2e2abe790a21d4c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::count_fields()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a24fd6a8aa158b80d851e3a57c9fef642',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::count_fields()']]], + ['cpu_20architecture_20specific_20implementations_33',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], + ['cpu_20detection_34',['Runtime CPU Detection',['../md_doc_2implementation-selection.html#autotoc_md99',1,'']]], + ['cpu_20selection_20x64_20systems_35',['Checking Your CPU Selection (x64 systems)',['../md_doc_2ondemand__design.html#autotoc_md129',1,'']]], + ['current_20location_20in_20document_36',['Current location in document',['../md_doc_2basics.html#autotoc_md29',1,'']]], + ['current_5fdepth_37',['current_depth',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a3bfd36dafc82c212f165b434ab5378b3',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::current_depth()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8bcd64ae6b4d204c4b6b2a8420e0270c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_depth()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1919a4ca6418c94ed54f026fbbda6f1d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_depth()']]], + ['current_5flocation_38',['current_location',['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a78b9e4e22a89050c9f911f1878165e88',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::current_location()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a06258e49f2dbb910beeaf6814ff7e071',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::current_location()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af4c151ba820f579e149b4bf98e644a49',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::current_location()']]], + ['custom_20types_39',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], + ['custom_20types_20c_2020_40',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], + ['custom_20types_20pre_20c_2020_41',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], + ['customization_42',['Customization',['../md_doc_2builder.html#autotoc_md52',1,'']]] ]; diff --git a/search/all_7.js b/search/all_7.js index 865676c1e..8cff15ac6 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -2,40 +2,42 @@ var searchData= [ ['data_0',['data',['../structsimdjson_1_1padded__string.html#aadd3bb268cbba43012c5d17a8c1ab7ef',1,'simdjson::padded_string::data() const noexcept'],['../structsimdjson_1_1padded__string.html#aa833ecdbe40c220c5baf7a29c472c972',1,'simdjson::padded_string::data() noexcept']]], ['default_5fmax_5fdepth_1',['DEFAULT_MAX_DEPTH',['../namespacesimdjson.html#a6df2598eb1d4e1ea669c41831cc7325d',1,'simdjson']]], - ['delimited_20json_20ndjson_20and_20json_20lines_2',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md29',1,'']]], - ['demand_3',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md50',1,'']]], - ['demand_20approach_4',['demand approach',['../md_doc_2ondemand__design.html#autotoc_md99',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md97',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md98',1,'Limitations of the On-Demand Approach']]], + ['delimited_20json_20ndjson_20and_20json_20lines_2',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md32',1,'']]], + ['demand_3',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md79',1,'']]], + ['demand_20approach_4',['demand approach',['../md_doc_2ondemand__design.html#autotoc_md128',1,'Applicability of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md126',1,'Benefits of the On-Demand Approach'],['../md_doc_2ondemand__design.html#autotoc_md127',1,'Limitations of the On-Demand Approach']]], ['dependency_5',['Using simdjson as a CMake dependency',['../md_doc_2basics.html#autotoc_md3',1,'']]], ['deprecated_20list_6',['Deprecated List',['../deprecated.html',1,'']]], ['depth_5ferror_7',['DEPTH_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a0c6b4af181d3d5f40a09182522c88681',1,'simdjson']]], ['depth_5ft_8',['depth_t',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#af941be7ff0cfaeb30d15d2fb52e76dd1',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], ['description_9',['description',['../classsimdjson_1_1implementation.html#ab170b9fed9cab0daaff878472f339c40',1,'simdjson::implementation']]], - ['design_10',['design',['../md_doc_2parse__many.html#autotoc_md106',1,'Design'],['../md_doc_2iterate__many.html#autotoc_md79',1,'Design']]], - ['design_20features_11',['Design Features',['../md_doc_2ondemand__design.html#autotoc_md94',1,'']]], - ['detected_20implementation_12',['Inspecting the Detected Implementation',['../md_doc_2implementation-selection.html#autotoc_md71',1,'']]], - ['detection_13',['Runtime CPU Detection',['../md_doc_2implementation-selection.html#autotoc_md70',1,'']]], + ['design_10',['design',['../md_doc_2iterate__many.html#autotoc_md108',1,'Design'],['../md_doc_2parse__many.html#autotoc_md135',1,'Design']]], + ['design_20features_11',['Design Features',['../md_doc_2ondemand__design.html#autotoc_md123',1,'']]], + ['detected_20implementation_12',['Inspecting the Detected Implementation',['../md_doc_2implementation-selection.html#autotoc_md100',1,'']]], + ['detection_13',['Runtime CPU Detection',['../md_doc_2implementation-selection.html#autotoc_md99',1,'']]], ['development_20checks_14',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]], - ['direct_20access_20to_20the_20raw_20json_20string_15',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], - ['directly_20into_20an_20existing_20string_20instance_16',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md35',1,'']]], - ['disabling_20exceptions_17',['Disabling exceptions',['../md_doc_2basics.html#autotoc_md24',1,'']]], - ['doc_18',['doc',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a4089d6265ec845fd85acd2db0973b858',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation']]], - ['document_19',['document',['../md_doc_2basics.html#autotoc_md26',1,'Current location in document'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document'],['../classsimdjson_1_1dom_1_1document.html',1,'simdjson::dom::document'],['../classsimdjson_1_1dom_1_1document.html#a6947c9d79453071ca73d06e398bcdd2a',1,'simdjson::dom::document::document() noexcept=default'],['../classsimdjson_1_1dom_1_1document.html#af34f108b46f82428bfe4ea33869358f0',1,'simdjson::dom::document::document(document &&other) noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a54cd729a715a09bc9e706b7640233427',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::document()']]], - ['document_20and_20json_20scope_20',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], - ['document_20lifetime_21',['document lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md156',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md152',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md140',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md136',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md135',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md132',1,'IMPORTANT: Document Lifetime']]], - ['document_20object_20model_20dom_20front_20end_22',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], - ['document_5fdepth_23',['DOCUMENT_DEPTH',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a18847ef30e5800f1c628a344c23ec968',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], - ['document_5freference_24',['document_reference',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], - ['document_5fstream_25',['document_stream',['../classsimdjson_1_1dom_1_1document__stream.html#ae6ee894790448145e11a456f12253364',1,'simdjson::dom::document_stream::document_stream()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0ac2a6ad0393eb4330b440c8c09290f2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::document_stream()'],['../classsimdjson_1_1dom_1_1document__stream.html#a9d6bb44a7d8f818c401d65fb80f6a523',1,'simdjson::dom::document_stream::document_stream()'],['../classsimdjson_1_1dom_1_1document__stream.html',1,'simdjson::dom::document_stream'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#af12dc14d4d16b9f4f4602c738678cb0c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::document_stream()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream']]], - ['documents_26',['documents',['../md_doc_2ondemand__design.html',1,'A Better Way to Parse Documents?'],['../md_doc_2iterate__many.html#autotoc_md86',1,'Comma-separated documents'],['../md_doc_2basics.html#autotoc_md5',1,'The basics: loading and parsing JSON documents']]], - ['documents_20are_20iterators_27',['Documents are iterators',['../md_doc_2basics.html#autotoc_md6',1,'']]], - ['documents_20using_20the_20dom_20front_20end_28',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['dom_20api_29',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md66',1,'']]], - ['dom_20front_20end_30',['dom front end',['../md_doc_2dom.html#autotoc_md51',1,'The Basics: Loading and Parsing JSON Documents using the DOM front-end'],['../md_doc_2dom.html',1,'The Document-Object-Model (DOM) front-end']]], - ['dom_20parsers_31',['DOM Parsers',['../md_doc_2ondemand__design.html#autotoc_md88',1,'']]], - ['dom_20vs_20on_20demand_32',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md50',1,'']]], - ['dom_5fparser_5fimplementation_33',['dom_parser_implementation',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], - ['double_34',['DOUBLE',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aafd3e4ece78a7d422280d5ed379482229',1,'simdjson::dom']]], - ['double_20values_35',['Integer and Double values',['../md_doc_2tape.html#autotoc_md127',1,'']]], - ['downclocking_36',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md120',1,'']]], - ['dynamic_20number_20types_37',['Dynamic Number Types',['../md_doc_2basics.html#autotoc_md31',1,'']]] + ['direct_20access_20to_20the_20raw_20json_20string_15',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['direct_20extraction_16',['Example 3: Direct Extraction',['../md_doc_2compile__time__accessors.html#autotoc_md73',1,'']]], + ['direct_20field_20extraction_17',['Direct Field Extraction',['../md_doc_2compile__time__accessors.html#autotoc_md69',1,'']]], + ['directly_20into_20an_20existing_20string_20instance_18',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md38',1,'']]], + ['disabling_20exceptions_19',['Disabling exceptions',['../md_doc_2basics.html#autotoc_md27',1,'']]], + ['doc_20',['doc',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a4089d6265ec845fd85acd2db0973b858',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation']]], + ['document_21',['document',['../md_doc_2basics.html#autotoc_md29',1,'Current location in document'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document'],['../classsimdjson_1_1dom_1_1document.html',1,'simdjson::dom::document'],['../classsimdjson_1_1dom_1_1document.html#a6947c9d79453071ca73d06e398bcdd2a',1,'simdjson::dom::document::document() noexcept=default'],['../classsimdjson_1_1dom_1_1document.html#af34f108b46f82428bfe4ea33869358f0',1,'simdjson::dom::document::document(document &&other) noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a54cd729a715a09bc9e706b7640233427',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::document()']]], + ['document_20and_20json_20scope_22',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], + ['document_20lifetime_23',['document lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md187',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md183',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md169',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md165',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md164',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md161',1,'IMPORTANT: Document Lifetime']]], + ['document_20object_20model_20dom_20front_20end_24',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], + ['document_5fdepth_25',['DOCUMENT_DEPTH',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a18847ef30e5800f1c628a344c23ec968',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], + ['document_5freference_26',['document_reference',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], + ['document_5fstream_27',['document_stream',['../classsimdjson_1_1dom_1_1document__stream.html#ae6ee894790448145e11a456f12253364',1,'simdjson::dom::document_stream::document_stream() noexcept'],['../classsimdjson_1_1dom_1_1document__stream.html#a9d6bb44a7d8f818c401d65fb80f6a523',1,'simdjson::dom::document_stream::document_stream(document_stream &&other) noexcept=default'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#af12dc14d4d16b9f4f4602c738678cb0c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::document_stream() noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0ac2a6ad0393eb4330b440c8c09290f2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::document_stream(document_stream &&other) noexcept=default'],['../classsimdjson_1_1dom_1_1document__stream.html',1,'simdjson::dom::document_stream'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream']]], + ['documents_28',['documents',['../md_doc_2ondemand__design.html',1,'A Better Way to Parse Documents?'],['../md_doc_2iterate__many.html#autotoc_md115',1,'Comma-separated documents'],['../md_doc_2basics.html#autotoc_md5',1,'The basics: loading and parsing JSON documents']]], + ['documents_20are_20iterators_29',['Documents are iterators',['../md_doc_2basics.html#autotoc_md6',1,'']]], + ['documents_20using_20the_20dom_20front_20end_30',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['dom_20api_31',['Best Use of the DOM API',['../md_doc_2dom.html#autotoc_md95',1,'']]], + ['dom_20front_20end_32',['dom front end',['../md_doc_2dom.html#autotoc_md80',1,'The Basics: Loading and Parsing JSON Documents using the DOM front-end'],['../md_doc_2dom.html',1,'The Document-Object-Model (DOM) front-end']]], + ['dom_20parsers_33',['DOM Parsers',['../md_doc_2ondemand__design.html#autotoc_md117',1,'']]], + ['dom_20vs_20on_20demand_34',['DOM vs On-Demand',['../md_doc_2dom.html#autotoc_md79',1,'']]], + ['dom_5fparser_5fimplementation_35',['dom_parser_implementation',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], + ['double_36',['DOUBLE',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aafd3e4ece78a7d422280d5ed379482229',1,'simdjson::dom']]], + ['double_20values_37',['Integer and Double values',['../md_doc_2tape.html#autotoc_md156',1,'']]], + ['downclocking_38',['Power Usage and Downclocking',['../md_doc_2performance.html#autotoc_md149',1,'']]], + ['dynamic_20number_20types_39',['Dynamic Number Types',['../md_doc_2basics.html#autotoc_md34',1,'']]] ]; diff --git a/search/all_8.js b/search/all_8.js index fabe08096..eadf3eee6 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -1,35 +1,39 @@ var searchData= [ - ['efficiency_0',['efficiency',['../md_doc_2dom.html#autotoc_md64',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md114',1,'Reusing the parser for maximum efficiency']]], + ['efficiency_0',['efficiency',['../md_doc_2dom.html#autotoc_md93',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md143',1,'Reusing the parser for maximum efficiency']]], ['element_1',['element',['../classsimdjson_1_1dom_1_1element.html#a9dbf81ad662ad32168025e8e08686935',1,'simdjson::dom::element::element()'],['../classsimdjson_1_1dom_1_1element.html',1,'simdjson::dom::element']]], - ['element_20types_2',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md63',1,'']]], + ['element_20types_2',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md92',1,'']]], ['element_5ftype_3',['element_type',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3a',1,'simdjson::dom']]], - ['elements_4',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md125',1,'']]], + ['elements_4',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md154',1,'']]], ['empty_5',['EMPTY',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a7aed571b420dcdfe59742e0df97b415a',1,'simdjson']]], ['enable_20development_20checks_6',['Avoiding pitfalls: enable development checks',['../md_doc_2basics.html#autotoc_md9',1,'']]], - ['end_7',['end',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6ed00f1588087b2d0de926c4599366d6',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::end()'],['../classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9',1,'simdjson::dom::array::end()'],['../classsimdjson_1_1dom_1_1document__stream.html#adec1e168e4188bf9c90ee87adbd72850',1,'simdjson::dom::document_stream::end()'],['../classsimdjson_1_1dom_1_1element.html#a846a790e93c9bad6c40641239bd77b28',1,'simdjson::dom::element::end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0a0d40ed80767c01232a6aacb6258b2b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::end()'],['../classsimdjson_1_1dom_1_1object.html#a79cf291477bcaa1bf2328411b411587d',1,'simdjson::dom::object::end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a7a79c0e85c9d40b53f0d4daeeb24111a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae482e8f5fa3233babbcb9ccc29db5a15',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::end()'],['../md_doc_2dom.html#autotoc_md51',1,'The Basics: Loading and Parsing JSON Documents using the DOM front-end'],['../md_doc_2dom.html',1,'The Document-Object-Model (DOM) front-end']]], + ['end_7',['end',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae482e8f5fa3233babbcb9ccc29db5a15',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a7a79c0e85c9d40b53f0d4daeeb24111a',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0a0d40ed80767c01232a6aacb6258b2b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::end()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6ed00f1588087b2d0de926c4599366d6',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::end()'],['../classsimdjson_1_1dom_1_1object.html#a79cf291477bcaa1bf2328411b411587d',1,'simdjson::dom::object::end()'],['../classsimdjson_1_1dom_1_1element.html#a846a790e93c9bad6c40641239bd77b28',1,'simdjson::dom::element::end()'],['../classsimdjson_1_1dom_1_1document__stream.html#adec1e168e4188bf9c90ee87adbd72850',1,'simdjson::dom::document_stream::end()'],['../classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9',1,'simdjson::dom::array::end()'],['../md_doc_2dom.html#autotoc_md80',1,'The Basics: Loading and Parsing JSON Documents using the DOM front-end'],['../md_doc_2dom.html',1,'The Document-Object-Model (DOM) front-end']]], ['end_5farray_8',['end_array',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a78f07884d55f4ed3e82c07daa0ec81f7',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], ['end_5fobject_9',['end_object',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9e60d7ef555280671f0196b21668f07c',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], ['error_10',['error',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a4111757108422ffaf647024319205d5c',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::error()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af433effbfc61f13dd00002b6ff7fa3dc',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::error()'],['../structsimdjson_1_1simdjson__result.html#a23470fcc7f01262019e96d3f3010b4a1',1,'simdjson::simdjson_result::error()'],['../structsimdjson_1_1simdjson__error.html#aa8143615e5f6f02474f6ab165682ab6e',1,'simdjson::simdjson_error::error()']]], - ['error_20handling_11',['error handling',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md142',1,'Error Handling'],['../md_doc_2dom.html#autotoc_md60',1,'Error Handling'],['../md_doc_2basics.html#autotoc_md22',1,'Error handling'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md146',1,'Error Handling'],['../md_doc_2builder.html#autotoc_md48',1,'Without <tt>string_buffer</tt> instance but with explicit error handling']]], - ['error_20handling_20example_12',['Error Handling Example',['../md_doc_2dom.html#autotoc_md61',1,'']]], - ['error_20handling_20examples_20without_20exceptions_13',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md23',1,'']]], + ['error_20handling_11',['error handling',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md171',1,'Error Handling'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md175',1,'Error Handling'],['../md_doc_2dom.html#autotoc_md89',1,'Error Handling'],['../md_doc_2compile__time__accessors.html#autotoc_md74',1,'Error Handling'],['../md_doc_2basics.html#autotoc_md25',1,'Error handling'],['../md_doc_2builder.html#autotoc_md51',1,'Without <tt>string_buffer</tt> instance but with explicit error handling']]], + ['error_20handling_20example_12',['Error Handling Example',['../md_doc_2dom.html#autotoc_md90',1,'']]], + ['error_20handling_20examples_20without_20exceptions_13',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md26',1,'']]], ['error_5fcode_14',['error_code',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9',1,'simdjson']]], - ['error_5fmessage_15',['error_message',['../namespacesimdjson.html#a65b00a7a7a9c8fafe9eb3b9b413a36fa',1,'simdjson::error_message(error_code error) noexcept'],['../namespacesimdjson.html#a56e8e2fa6798b9e0da80bc51ae4a5f29',1,'simdjson::error_message(int error) noexcept']]], + ['error_5fmessage_15',['error_message',['../namespacesimdjson.html#a56e8e2fa6798b9e0da80bc51ae4a5f29',1,'simdjson::error_message(int error) noexcept'],['../namespacesimdjson.html#a65b00a7a7a9c8fafe9eb3b9b413a36fa',1,'simdjson::error_message(error_code error) noexcept']]], ['errorvalues_16',['ErrorValues',['../namespacesimdjson.html#a63b494af834917af13120dcd57719bdb',1,'simdjson']]], ['escape_5fand_5fappend_17',['escape_and_append',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a5b8e2a3427e050ce4798c6bbbfb25154',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder']]], - ['escape_5fand_5fappend_5fwith_5fquotes_18',['escape_and_append_with_quotes',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a2440a83bb3a5d87599a1ced47bebbe37',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::escape_and_append_with_quotes(const char *input) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a00bf1c41d3c5e001895959c700b9c9a0',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::escape_and_append_with_quotes(char input) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a106387a1848af00d9434d206a6cb9126',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::escape_and_append_with_quotes(std::string_view input) noexcept']]], + ['escape_5fand_5fappend_5fwith_5fquotes_18',['escape_and_append_with_quotes',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a106387a1848af00d9434d206a6cb9126',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::escape_and_append_with_quotes(std::string_view input) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a00bf1c41d3c5e001895959c700b9c9a0',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::escape_and_append_with_quotes(char input) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a2440a83bb3a5d87599a1ced47bebbe37',1,'simdjson::SIMDJSON_IMPLEMENTATION::builder::string_builder::escape_and_append_with_quotes(const char *input) noexcept']]], ['escaped_5fkey_19',['escaped_key',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a598e64f8fff7f033b2e38057798799d9',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field']]], - ['etc_20',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md89',1,'']]], - ['event_20based_20parsers_20sax_20saj_20etc_21',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md89',1,'']]], - ['example_22',['example',['../md_doc_2dom.html#autotoc_md61',1,'Error Handling Example'],['../md_doc_2tape.html#autotoc_md123',1,'Example']]], - ['example_20usage_23',['Example Usage',['../md_doc_2dom.html#autotoc_md59',1,'']]], - ['example_3a_20string_5fbuilder_24',['Example: string_builder',['../md_doc_2builder.html#autotoc_md43',1,'']]], - ['examples_25',['examples',['../md_doc_2dom.html#autotoc_md53',1,'Examples'],['../md_doc_2basics.html#autotoc_md39',1,'Examples'],['../md_doc_2basics.html#autotoc_md11',1,'Using the parsed JSON: additional examples']]], - ['examples_20without_20exceptions_26',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md23',1,'']]], - ['exceptions_27',['exceptions',['../md_doc_2basics.html#autotoc_md24',1,'Disabling exceptions'],['../md_doc_2basics.html#autotoc_md23',1,'Error handling examples without exceptions'],['../md_doc_2dom.html#autotoc_md62',1,'Exceptions'],['../md_doc_2basics.html#autotoc_md25',1,'Exceptions']]], - ['existing_20string_20instance_28',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md35',1,'']]], - ['experimental_20c_2020_29',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], - ['explicit_20error_20handling_30',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]], - ['extracting_20just_20some_20fields_31',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md47',1,'']]] + ['etc_20',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md118',1,'']]], + ['event_20based_20parsers_20sax_20saj_20etc_21',['Event-Based Parsers (SAX, SAJ, etc.)',['../md_doc_2ondemand__design.html#autotoc_md118',1,'']]], + ['example_22',['example',['../md_doc_2dom.html#autotoc_md90',1,'Error Handling Example'],['../md_doc_2tape.html#autotoc_md152',1,'Example']]], + ['example_201_3a_20validated_20access_23',['Example 1: Validated Access',['../md_doc_2compile__time__accessors.html#autotoc_md71',1,'']]], + ['example_202_3a_20non_20validated_20access_24',['Example 2: Non-Validated Access',['../md_doc_2compile__time__accessors.html#autotoc_md72',1,'']]], + ['example_203_3a_20direct_20extraction_25',['Example 3: Direct Extraction',['../md_doc_2compile__time__accessors.html#autotoc_md73',1,'']]], + ['example_20usage_26',['Example Usage',['../md_doc_2dom.html#autotoc_md88',1,'']]], + ['example_3a_20string_5fbuilder_27',['Example: string_builder',['../md_doc_2builder.html#autotoc_md46',1,'']]], + ['examples_28',['examples',['../md_doc_2compile__time__accessors.html#autotoc_md70',1,'Complete Examples'],['../md_doc_2dom.html#autotoc_md82',1,'Examples'],['../md_doc_2compile__time__accessors.html#autotoc_md65',1,'Examples'],['../md_doc_2compile__time__accessors.html#autotoc_md62',1,'Examples'],['../md_doc_2basics.html#autotoc_md42',1,'Examples'],['../md_doc_2basics.html#autotoc_md11',1,'Using the parsed JSON: additional examples']]], + ['examples_20without_20exceptions_29',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md26',1,'']]], + ['exceptions_30',['exceptions',['../md_doc_2basics.html#autotoc_md27',1,'Disabling exceptions'],['../md_doc_2basics.html#autotoc_md26',1,'Error handling examples without exceptions'],['../md_doc_2dom.html#autotoc_md91',1,'Exceptions'],['../md_doc_2basics.html#autotoc_md28',1,'Exceptions']]], + ['existing_20string_20instance_31',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md38',1,'']]], + ['experimental_20c_2020_32',['The simdjson::from shortcut (experimental, C++20)',['../md_doc_2basics.html#autotoc_md17',1,'']]], + ['explicit_20error_20handling_33',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]], + ['extracting_20just_20some_20fields_34',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md50',1,'']]], + ['extraction_35',['extraction',['../md_doc_2compile__time__accessors.html#autotoc_md69',1,'Direct Field Extraction'],['../md_doc_2compile__time__accessors.html#autotoc_md73',1,'Example 3: Direct Extraction']]] ]; diff --git a/search/all_9.js b/search/all_9.js index 088d0f713..a10495e55 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,27 +1,29 @@ var searchData= [ ['f_5fatom_5ferror_0',['F_ATOM_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae726a74b8a99e4bf802f3078436a2394',1,'simdjson']]], - ['features_1',['features',['../md_doc_2iterate__many.html#autotoc_md87',1,'C++20 features'],['../md_doc_2ondemand__design.html#autotoc_md94',1,'Design Features']]], + ['features_1',['features',['../md_doc_2iterate__many.html#autotoc_md116',1,'C++20 features'],['../md_doc_2ondemand__design.html#autotoc_md123',1,'Design Features']]], ['field_2',['field',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a9415aecf3526ad6081be495c9be61b43',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::field()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field']]], - ['field_5fkey_3',['field_key',['../group__object.html#ga9fd0d39ec786f26b7ea86f9bc8380bdd',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['field_5fvalue_4',['field_value',['../group__object.html#gaaaf58bcf25e6d30a3469848d36c65a05',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['fields_5',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md47',1,'']]], - ['files_20and_20huge_20page_20support_6',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md117',1,'']]], - ['find_5ffield_7',['find_field',['../group__object.html#gacefcaf06811426a241ed97a6948a94ee',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a4ff908713e1eb6d6294706a235be8101',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::find_field()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a1588a173b15a20cacf77a24d07032d83',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::find_field()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aa25020165cc5a191026a243a10da6558',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::find_field()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab919032e611f7f4a1e8cc9eb47ad4dea',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::find_field()']]], - ['find_5ffield_5fraw_8',['find_field_raw',['../group__object.html#gab66bdaf2c97d2cbd2a94a5a3e67ffabc',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['find_5ffield_5funordered_9',['find_field_unordered',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa89d66d993d0bffcbb85e303ad3950c2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::find_field_unordered()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a55d8bd31e2f5e6b10986af2f48a544fc',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::find_field_unordered()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acb1514c00a87027c5eb3c81171a3b874',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::find_field_unordered()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a423064962ffe48495948c98afb0e556c',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::find_field_unordered()']]], - ['find_5ffield_5funordered_5fraw_10',['find_field_unordered_raw',['../group__object.html#ga678e53c38ebaf2323550e7f29e253df9',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], - ['first_11',['first',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ae51247dce4e77f1e6067cfd4654cca30',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base']]], - ['for_20custom_20types_12',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], - ['for_20custom_20types_20c_2020_13',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], - ['for_20jsonpath_20queries_14',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md58',1,'']]], - ['for_20maximum_20efficiency_15',['for maximum efficiency',['../md_doc_2dom.html#autotoc_md64',1,'Reusing the parser for maximum efficiency'],['../md_doc_2performance.html#autotoc_md114',1,'Reusing the parser for maximum efficiency']]], - ['for_20objects_20and_20arrays_16',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md34',1,'']]], - ['for_20trailing_20content_17',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md27',1,'']]], - ['formal_20of_20the_20tape_20elements_18',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md125',1,'']]], - ['format_19',['format',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md141',1,'Format'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md145',1,'Format'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md158',1,'Format']]], - ['free_20padding_20',['Free Padding',['../md_doc_2performance.html#autotoc_md121',1,'']]], - ['from_20keys_21',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md32',1,'']]], - ['front_20end_22',['front end',['../md_doc_2dom.html#autotoc_md51',1,'The Basics: Loading and Parsing JSON Documents using the DOM front-end'],['../md_doc_2dom.html',1,'The Document-Object-Model (DOM) front-end']]], - ['further_20reading_23',['Further reading',['../md_doc_2basics.html#autotoc_md41',1,'']]] + ['field_20extraction_3',['Direct Field Extraction',['../md_doc_2compile__time__accessors.html#autotoc_md69',1,'']]], + ['field_5fkey_4',['field_key',['../group__object.html#ga9fd0d39ec786f26b7ea86f9bc8380bdd',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['field_5fvalue_5',['field_value',['../group__object.html#gaaaf58bcf25e6d30a3469848d36c65a05',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['fields_6',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md50',1,'']]], + ['files_20and_20huge_20page_20support_7',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md146',1,'']]], + ['find_5ffield_8',['find_field',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aa25020165cc5a191026a243a10da6558',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::find_field()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a1588a173b15a20cacf77a24d07032d83',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::find_field()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a4ff908713e1eb6d6294706a235be8101',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::find_field()'],['../group__object.html#gacefcaf06811426a241ed97a6948a94ee',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator::find_field()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab919032e611f7f4a1e8cc9eb47ad4dea',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::find_field()']]], + ['find_5ffield_5fraw_9',['find_field_raw',['../group__object.html#gab66bdaf2c97d2cbd2a94a5a3e67ffabc',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['find_5ffield_5funordered_10',['find_field_unordered',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa89d66d993d0bffcbb85e303ad3950c2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::find_field_unordered()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a55d8bd31e2f5e6b10986af2f48a544fc',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::find_field_unordered()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acb1514c00a87027c5eb3c81171a3b874',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::find_field_unordered()'],['../structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a423064962ffe48495948c98afb0e556c',1,'simdjson::simdjson_result< SIMDJSON_IMPLEMENTATION::ondemand::value >::find_field_unordered()']]], + ['find_5ffield_5funordered_5fraw_11',['find_field_unordered_raw',['../group__object.html#ga678e53c38ebaf2323550e7f29e253df9',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], + ['first_12',['first',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ae51247dce4e77f1e6067cfd4654cca30',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base']]], + ['for_20custom_20types_13',['Adding support for custom types',['../md_doc_2basics.html#autotoc_md12',1,'']]], + ['for_20custom_20types_20c_2020_14',['2. Use <tt>tag_invoke</tt> for custom types (C++20)',['../md_doc_2basics.html#autotoc_md14',1,'']]], + ['for_20jsonpath_20queries_15',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md87',1,'']]], + ['for_20maximum_20efficiency_16',['for maximum efficiency',['../md_doc_2performance.html#autotoc_md143',1,'Reusing the parser for maximum efficiency'],['../md_doc_2dom.html#autotoc_md93',1,'Reusing the parser for maximum efficiency']]], + ['for_20objects_20and_20arrays_17',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md37',1,'']]], + ['for_20trailing_20content_18',['Checking for trailing content',['../md_doc_2basics.html#autotoc_md30',1,'']]], + ['formal_20of_20the_20tape_20elements_19',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md154',1,'']]], + ['format_20',['format',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md170',1,'Format'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md174',1,'Format'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md189',1,'Format']]], + ['free_20padding_21',['Free Padding',['../md_doc_2performance.html#autotoc_md150',1,'']]], + ['from_20keys_22',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md35',1,'']]], + ['front_20end_23',['front end',['../md_doc_2dom.html#autotoc_md80',1,'The Basics: Loading and Parsing JSON Documents using the DOM front-end'],['../md_doc_2dom.html',1,'The Document-Object-Model (DOM) front-end']]], + ['functions_24',['functions',['../md_doc_2compile__time__accessors.html#autotoc_md68',1,'JSON Pointer Functions'],['../md_doc_2compile__time__accessors.html#autotoc_md67',1,'JSONPath Functions']]], + ['further_20reading_25',['Further reading',['../md_doc_2basics.html#autotoc_md44',1,'']]] ]; diff --git a/search/all_a.js b/search/all_a.js index c9129f430..671dfdf5a 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,8 +1,8 @@ var searchData= [ - ['general_20direct_20access_20to_20the_20raw_20json_20string_0',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], - ['general_20formal_20of_20the_20tape_20elements_1',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md125',1,'']]], - ['generators_2',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md90',1,'']]], + ['general_20direct_20access_20to_20the_20raw_20json_20string_0',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['general_20formal_20of_20the_20tape_20elements_1',['General formal of the tape elements',['../md_doc_2tape.html#autotoc_md154',1,'']]], + ['generators_2',['Schema-Based Parser Generators',['../md_doc_2ondemand__design.html#autotoc_md119',1,'']]], ['get_3',['get',['../classsimdjson_1_1dom_1_1element.html#a3474c8fc1b1cb06625a50dcb9a2c5269',1,'simdjson::dom::element::get()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#abeb77b7f73cd6001d8c65f249901ece4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get(T &out) noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a15d0315e3a6b6975d57de5928263fbdf',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::get() noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html#a171191c8a51168aacb8159795ff97910',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference::get()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af689a9311baeed32bb4631b7cba05467',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get()'],['../classsimdjson_1_1dom_1_1element.html#a2428a280035930e432570fb08712c4de',1,'simdjson::dom::element::get()'],['../structsimdjson_1_1simdjson__result.html#ab0fafc6d63a14891788a9edaedff4b05',1,'simdjson::simdjson_result::get(T &value) &&noexcept'],['../structsimdjson_1_1simdjson__result.html#a0fd74413679274feb2557b412c057cea',1,'simdjson::simdjson_result::get(std::string &value) &&noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2fb5d36c429a48f039f4648dbf1ecf38',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::get()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a96c905c44f3c53cb6cdb23b760d323b8',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::get()']]], ['get_20custom_20types_20pre_20c_2020_4',['1. Specialize <tt>simdjson::ondemand::value::get</tt> to get custom types (pre-C++20)',['../md_doc_2basics.html#autotoc_md13',1,'']]], ['get_5factive_5fimplementation_5',['get_active_implementation',['../namespacesimdjson.html#a05cc0046bde46e606edca27b0f9b3e0c',1,'simdjson']]], diff --git a/search/all_b.js b/search/all_b.js index fefcfc5ad..908eeea63 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,13 +1,13 @@ var searchData= [ - ['handling_0',['handling',['../md_doc_2basics.html#autotoc_md22',1,'Error handling'],['../md_doc_2dom.html#autotoc_md60',1,'Error Handling'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md142',1,'Error Handling'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md146',1,'Error Handling'],['../md_doc_2builder.html#autotoc_md48',1,'Without <tt>string_buffer</tt> instance but with explicit error handling']]], - ['handling_20example_1',['Error Handling Example',['../md_doc_2dom.html#autotoc_md61',1,'']]], - ['handling_20examples_20without_20exceptions_2',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md23',1,'']]], + ['handling_0',['handling',['../classsimdjson_1_1dom_1_1parser.html#autotoc_md175',1,'Error Handling'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md171',1,'Error Handling'],['../md_doc_2basics.html#autotoc_md25',1,'Error handling'],['../md_doc_2dom.html#autotoc_md89',1,'Error Handling'],['../md_doc_2compile__time__accessors.html#autotoc_md74',1,'Error Handling'],['../md_doc_2builder.html#autotoc_md51',1,'Without <tt>string_buffer</tt> instance but with explicit error handling']]], + ['handling_20example_1',['Error Handling Example',['../md_doc_2dom.html#autotoc_md90',1,'']]], + ['handling_20examples_20without_20exceptions_2',['Error handling examples without exceptions',['../md_doc_2basics.html#autotoc_md26',1,'']]], ['has_5fcustom_5fserialization_3',['has_custom_serialization',['../structsimdjson_1_1has__custom__serialization.html',1,'simdjson']]], ['has_5fnext_5felement_4',['has_next_element',['../group__array.html#ga31b0a8ce8734db9413cce31c4d9c8c8d',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], ['has_5fnext_5ffield_5',['has_next_field',['../group__object.html#ga7956fe38cd8ecfbc8f709aa6f65c92b4',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value_iterator']]], ['has_5fsufficient_5fpadding_6',['has_sufficient_padding',['../classsimdjson_1_1padded__string__view.html#ae4aff182e0ed84ed5056c2d634ff134a',1,'simdjson::padded_string_view']]], ['has_5fvalue_7',['has_value',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a5bf4c42c2cf080f5a3e52586e0a6686c',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base']]], - ['how_20it_20works_8',['how it works',['../md_doc_2iterate__many.html#autotoc_md77',1,'How it works'],['../md_doc_2parse__many.html#autotoc_md104',1,'How it works']]], - ['huge_20page_20support_9',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md117',1,'']]] + ['how_20it_20works_8',['how it works',['../md_doc_2compile__time__accessors.html#autotoc_md56',1,'How It Works'],['../md_doc_2iterate__many.html#autotoc_md106',1,'How it works'],['../md_doc_2parse__many.html#autotoc_md133',1,'How it works'],['../compile__time__accessors_8h.html#autotoc_md179',1,'How It Works']]], + ['huge_20page_20support_9',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md146',1,'']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 765fe6869..cdb62c0e4 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -1,7 +1,7 @@ var searchData= [ - ['implementation_0',['implementation',['../classsimdjson_1_1implementation.html',1,'simdjson::implementation'],['../md_doc_2implementation-selection.html#autotoc_md71',1,'Inspecting the Detected Implementation'],['../md_doc_2implementation-selection.html#autotoc_md73',1,'Manually Selecting the Implementation']]], - ['implementation_20can_20run_20on_20your_20system_1',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md74',1,'']]], + ['implementation_0',['implementation',['../classsimdjson_1_1implementation.html',1,'simdjson::implementation'],['../md_doc_2implementation-selection.html#autotoc_md100',1,'Inspecting the Detected Implementation'],['../md_doc_2implementation-selection.html#autotoc_md102',1,'Manually Selecting the Implementation']]], + ['implementation_20can_20run_20on_20your_20system_1',['Checking that an Implementation can Run on your System',['../md_doc_2implementation-selection.html#autotoc_md103',1,'']]], ['implementation_5fsimdjson_5fresult_5fbase_2',['implementation_simdjson_result_base',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base< T >'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a44ff65b6194c7c1cb74180b43e438619',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value, error_code error) noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af8a436d40886a295f618311d3849d7e5',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::implementation_simdjson_result_base(T &&value) noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a4f59b204f1eddcdc2b36e6df0639a516',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::implementation_simdjson_result_base(error_code error) noexcept'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a108dd35fd49314820106a21afa0fb2ea',1,'simdjson::SIMDJSON_IMPLEMENTATION::implementation_simdjson_result_base::implementation_simdjson_result_base() noexcept=default']]], ['implementation_5fsimdjson_5fresult_5fbase_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3aarray_20_3e_3',['implementation_simdjson_result_base< SIMDJSON_IMPLEMENTATION::ondemand::array >',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], ['implementation_5fsimdjson_5fresult_5fbase_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3aarray_5fiterator_20_3e_4',['implementation_simdjson_result_base< SIMDJSON_IMPLEMENTATION::ondemand::array_iterator >',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], @@ -18,54 +18,54 @@ var searchData= ['implementation_5fsimdjson_5fresult_5fbase_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3atoken_5fiterator_20_3e_15',['implementation_simdjson_result_base< SIMDJSON_IMPLEMENTATION::ondemand::token_iterator >',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], ['implementation_5fsimdjson_5fresult_5fbase_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3avalue_20_3e_16',['implementation_simdjson_result_base< SIMDJSON_IMPLEMENTATION::ondemand::value >',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], ['implementation_5fsimdjson_5fresult_5fbase_3c_20simdjson_5fimplementation_3a_3aondemand_3a_3avalue_5fiterator_20_3e_17',['implementation_simdjson_result_base< SIMDJSON_IMPLEMENTATION::ondemand::value_iterator >',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html',1,'simdjson::SIMDJSON_IMPLEMENTATION']]], - ['implementations_18',['implementations',['../md_doc_2implementation-selection.html',1,'CPU Architecture-Specific Implementations'],['../md_doc_2implementation-selection.html#autotoc_md72',1,'Querying Available Implementations']]], - ['important_3a_20buffer_20lifetime_19',['important: buffer lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md155',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md151',1,'IMPORTANT: Buffer Lifetime']]], - ['important_3a_20document_20lifetime_20',['important: document lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md156',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md152',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md140',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md136',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md135',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md132',1,'IMPORTANT: Document Lifetime']]], - ['important_3a_20string_5fview_20lifetime_21',['important: string_view lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md163',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md164',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md165',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md166',1,'IMPORTANT: string_view lifetime']]], - ['important_3a_20validate_20what_20you_20use_22',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md150',1,'']]], - ['in_20document_23',['Current location in document',['../md_doc_2basics.html#autotoc_md26',1,'']]], + ['implementations_18',['implementations',['../md_doc_2implementation-selection.html',1,'CPU Architecture-Specific Implementations'],['../md_doc_2implementation-selection.html#autotoc_md101',1,'Querying Available Implementations']]], + ['important_3a_20buffer_20lifetime_19',['important: buffer lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md186',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md182',1,'IMPORTANT: Buffer Lifetime']]], + ['important_3a_20document_20lifetime_20',['important: document lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md187',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md183',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md169',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md165',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md164',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md161',1,'IMPORTANT: Document Lifetime']]], + ['important_3a_20string_5fview_20lifetime_21',['important: string_view lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md194',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md195',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md196',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md197',1,'IMPORTANT: string_view lifetime']]], + ['important_3a_20validate_20what_20you_20use_22',['IMPORTANT: Validate what you use',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md181',1,'']]], + ['in_20document_23',['Current location in document',['../md_doc_2basics.html#autotoc_md29',1,'']]], ['in_20simdjson_24',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]], ['including_20simdjson_25',['Including simdjson',['../md_doc_2basics.html#autotoc_md1',1,'']]], - ['incomplete_20streams_26',['incomplete streams',['../md_doc_2iterate__many.html#autotoc_md85',1,'Incomplete streams'],['../md_doc_2parse__many.html#autotoc_md112',1,'Incomplete streams']]], + ['incomplete_20streams_26',['incomplete streams',['../md_doc_2parse__many.html#autotoc_md141',1,'Incomplete streams'],['../md_doc_2iterate__many.html#autotoc_md114',1,'Incomplete streams']]], ['incomplete_5farray_5for_5fobject_27',['INCOMPLETE_ARRAY_OR_OBJECT',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab8a4df583110f900741d0b3f229f349a',1,'simdjson']]], ['incorrect_5ftype_28',['INCORRECT_TYPE',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a1de02af1d67e8350f612eee0dcf634b4',1,'simdjson']]], ['index_5fout_5fof_5fbounds_29',['INDEX_OUT_OF_BOUNDS',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a80bcf6820da38abe1a2e9abeaa0f0c49',1,'simdjson']]], - ['inside_20strings_30',['Parsing numbers inside strings',['../md_doc_2basics.html#autotoc_md30',1,'']]], - ['inspecting_20the_20detected_20implementation_31',['Inspecting the Detected Implementation',['../md_doc_2implementation-selection.html#autotoc_md71',1,'']]], - ['instance_32',['instance',['../md_doc_2basics.html#autotoc_md35',1,'Storing directly into an existing string instance'],['../md_doc_2builder.html#autotoc_md46',1,'Without <tt>string_buffer</tt> instance']]], - ['instance_20but_20with_20explicit_20error_20handling_33',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md48',1,'']]], + ['inside_20strings_30',['Parsing numbers inside strings',['../md_doc_2basics.html#autotoc_md33',1,'']]], + ['inspecting_20the_20detected_20implementation_31',['Inspecting the Detected Implementation',['../md_doc_2implementation-selection.html#autotoc_md100',1,'']]], + ['instance_32',['instance',['../md_doc_2basics.html#autotoc_md38',1,'Storing directly into an existing string instance'],['../md_doc_2builder.html#autotoc_md49',1,'Without <tt>string_buffer</tt> instance']]], + ['instance_20but_20with_20explicit_20error_20handling_33',['Without <tt>string_buffer</tt> instance but with explicit error handling',['../md_doc_2builder.html#autotoc_md51',1,'']]], ['insufficient_5fpadding_34',['INSUFFICIENT_PADDING',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aee3335b961f2d0f732e95b359c16a69a',1,'simdjson']]], ['int64_35',['INT64',['../namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa4e866b275c85fbb439f6484251cfb31c',1,'simdjson::dom']]], - ['integer_20and_20double_20values_36',['Integer and Double values',['../md_doc_2tape.html#autotoc_md127',1,'']]], - ['into_20an_20existing_20string_20instance_37',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md35',1,'']]], + ['integer_20and_20double_20values_36',['Integer and Double values',['../md_doc_2tape.html#autotoc_md156',1,'']]], + ['into_20an_20existing_20string_20instance_37',['Storing directly into an existing string instance',['../md_doc_2basics.html#autotoc_md38',1,'']]], ['invalid_5fjson_5fpointer_38',['INVALID_JSON_POINTER',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aeeaf930969566f76840224d64ee3a9a1',1,'simdjson']]], ['invalid_5furi_5ffragment_39',['INVALID_URI_FRAGMENT',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a7b0467451dc0cecb41d3ea46c4a0005b',1,'simdjson']]], ['io_5ferror_40',['IO_ERROR',['../namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9acaec8ffce84b1acf9e6833b0f930878e',1,'simdjson']]], ['is_41',['is',['../classsimdjson_1_1dom_1_1element.html#a4c77063d766c7db197f8674407b504d7',1,'simdjson::dom::element']]], ['is_5falive_42',['is_alive',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a3170300bc331577a1435bb238cf3faff',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document']]], - ['is_5farray_43',['is_array',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9b82f3273bb2f2f83b8e085b7d9c6613',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation::is_array'],['../classsimdjson_1_1dom_1_1element.html#afaaac6e2f58128a01a25b0a5f5abb856',1,'simdjson::dom::element::is_array() const noexcept']]], + ['is_5farray_43',['is_array',['../classsimdjson_1_1dom_1_1element.html#afaaac6e2f58128a01a25b0a5f5abb856',1,'simdjson::dom::element::is_array()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9b82f3273bb2f2f83b8e085b7d9c6613',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation::is_array']]], ['is_5fbool_44',['is_bool',['../classsimdjson_1_1dom_1_1element.html#afde562c5aae1b85a03ab6d4b040e7d13',1,'simdjson::dom::element']]], ['is_5fdouble_45',['is_double',['../classsimdjson_1_1dom_1_1element.html#a0d11f69ba87f55960be6f655e4e99aba',1,'simdjson::dom::element::is_double()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a48f9e54ebd40e1c060be0a4b1d4ff823',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_double()']]], ['is_5fempty_46',['is_empty',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a371cf8909f04019606063e8538fd7109',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::is_empty()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ad210f9115679a625ada433add55eff51',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object::is_empty()']]], - ['is_5fequal_47',['is_equal',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#aa3165ea813c4c15fb9cb282e67abe6af',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal(const char *target) const noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a0ddac0ab1c69022610d8051b989b5c95',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal(std::string_view target) const noexcept']]], + ['is_5fequal_47',['is_equal',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a0ddac0ab1c69022610d8051b989b5c95',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal(std::string_view target) const noexcept'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#aa3165ea813c4c15fb9cb282e67abe6af',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string::is_equal(const char *target) const noexcept']]], ['is_5ffatal_48',['is_fatal',['../namespacesimdjson.html#ab655c5e7cc4bead4faaca9f74ca94abe',1,'simdjson']]], ['is_5ffree_5ffrom_5funescaped_5fquote_49',['is_free_from_unescaped_quote',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a671923a53cc070f65029698afeb9be7f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string']]], ['is_5fint64_50',['is_int64',['../classsimdjson_1_1dom_1_1element.html#adadf66ec37675d5f3fac9816a8aacba2',1,'simdjson::dom::element::is_int64()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a38d6b4b4e91f30c8def71997d23454c2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_int64()']]], - ['is_5finteger_51',['is_integer',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af47e11e9925fd5d3d8a43cf0f7773992',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_integer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a5ab2c9c7d29a7a6c09f78930b0100836',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_integer()']]], + ['is_5finteger_51',['is_integer',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a5ab2c9c7d29a7a6c09f78930b0100836',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_integer()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af47e11e9925fd5d3d8a43cf0f7773992',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_integer() noexcept']]], ['is_5fnegative_52',['is_negative',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5083f65b71d7540ea785ec2b52604267',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_negative()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2701c283de019e56624e930e936e0df0',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_negative()']]], - ['is_5fnull_53',['is_null',['../classsimdjson_1_1dom_1_1element.html#ae38f84f4272ae3c32b32dd6d5007ffb9',1,'simdjson::dom::element::is_null()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5ed59f01a0d4ad253f0e1c1f995ed0a7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_null()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a04f1c591d93d834377a9cb916c90e09b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_null()']]], + ['is_5fnull_53',['is_null',['../classsimdjson_1_1dom_1_1element.html#ae38f84f4272ae3c32b32dd6d5007ffb9',1,'simdjson::dom::element::is_null()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a04f1c591d93d834377a9cb916c90e09b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_null()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5ed59f01a0d4ad253f0e1c1f995ed0a7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_null()']]], ['is_5fnumber_54',['is_number',['../classsimdjson_1_1dom_1_1element.html#a1e3f78b3bee5ec3f33cc4b03dcc87981',1,'simdjson::dom::element']]], ['is_5fobject_55',['is_object',['../classsimdjson_1_1dom_1_1element.html#a08c7dcebf9e96fe5e4dd6df2959c0024',1,'simdjson::dom::element']]], - ['is_5fscalar_56',['is_scalar',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ac2ea8f4340d02d9062f81419da47500b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_scalar()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8c2618e57ec26501dd93ff8fd5cc2191',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_scalar()']]], + ['is_5fscalar_56',['is_scalar',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8c2618e57ec26501dd93ff8fd5cc2191',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_scalar()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ac2ea8f4340d02d9062f81419da47500b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_scalar()']]], ['is_5fstreaming_57',['is_streaming',['../namespacesimdjson.html#a6f306690d6d088d80b0cc2717040b2d0',1,'simdjson']]], - ['is_5fstring_58',['is_string',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#afd4052d4ebe0a500a051f5048206a9c8',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_string()'],['../classsimdjson_1_1dom_1_1element.html#a65bd96042cc0f19dc3e0635937edded4',1,'simdjson::dom::element::is_string()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4af5ddd8fc929969a4bb1e2a6e1c4ba7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_string()']]], - ['is_5fuint64_59',['is_uint64',['../classsimdjson_1_1dom_1_1element.html#ac5017726a573f59c3494b92bb66a3beb',1,'simdjson::dom::element::is_uint64()'],['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#af0e89976b80a7a7dedaf8c1a7cfd64a2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_uint64()']]], - ['it_20works_60',['it works',['../md_doc_2iterate__many.html#autotoc_md77',1,'How it works'],['../md_doc_2parse__many.html#autotoc_md104',1,'How it works']]], - ['iter_61',['iter',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a2d84851f9e4fc07b3e518ea957e2d9b6',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::iter'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a969e1000319391cd2bee3aed88481500',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::iter']]], + ['is_5fstring_58',['is_string',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4af5ddd8fc929969a4bb1e2a6e1c4ba7',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::is_string()'],['../classsimdjson_1_1dom_1_1element.html#a65bd96042cc0f19dc3e0635937edded4',1,'simdjson::dom::element::is_string()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#afd4052d4ebe0a500a051f5048206a9c8',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value::is_string()']]], + ['is_5fuint64_59',['is_uint64',['../structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#af0e89976b80a7a7dedaf8c1a7cfd64a2',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_uint64()'],['../classsimdjson_1_1dom_1_1element.html#ac5017726a573f59c3494b92bb66a3beb',1,'simdjson::dom::element::is_uint64()']]], + ['it_20works_60',['it works',['../md_doc_2compile__time__accessors.html#autotoc_md56',1,'How It Works'],['../md_doc_2iterate__many.html#autotoc_md106',1,'How it works'],['../compile__time__accessors_8h.html#autotoc_md179',1,'How It Works'],['../md_doc_2parse__many.html#autotoc_md133',1,'How it works']]], + ['iter_61',['iter',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a969e1000319391cd2bee3aed88481500',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document::iter'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a2d84851f9e4fc07b3e518ea957e2d9b6',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array::iter']]], ['iterate_62',['iterate',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a0da712132ca4180a84907f2ca4ffbc5b',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser']]], ['iterate_5fmany_63',['iterate_many',['../md_doc_2iterate__many.html',1,'iterate_many'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#af996682250c05ca237fe6db234bb9179',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::parser::iterate_many()']]], - ['iteration_64',['iteration',['../group__array.html',1,'Array iteration'],['../group__object.html',1,'Object iteration'],['../md_doc_2ondemand__design.html#autotoc_md93',1,'Starting the iteration']]], - ['iteration_20safety_65',['Iteration Safety',['../md_doc_2ondemand__design.html#autotoc_md96',1,'']]], - ['iterator_66',['iterator',['../classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a6c3a5002801ab80b1c59422d7f3400d3',1,'simdjson::dom::document_stream::iterator::iterator()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a3b0ac5e3e64e53167a011afdd0b77345',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::iterator()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html',1,'simdjson::dom::object::iterator'],['../classsimdjson_1_1dom_1_1document__stream_1_1iterator.html',1,'simdjson::dom::document_stream::iterator'],['../classsimdjson_1_1dom_1_1array_1_1iterator.html',1,'simdjson::dom::array::iterator']]], + ['iteration_64',['iteration',['../group__array.html',1,'Array iteration'],['../group__object.html',1,'Object iteration'],['../md_doc_2ondemand__design.html#autotoc_md122',1,'Starting the iteration']]], + ['iteration_20safety_65',['Iteration Safety',['../md_doc_2ondemand__design.html#autotoc_md125',1,'']]], + ['iterator_66',['iterator',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a3b0ac5e3e64e53167a011afdd0b77345',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator::iterator()'],['../classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a6c3a5002801ab80b1c59422d7f3400d3',1,'simdjson::dom::document_stream::iterator::iterator()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_stream::iterator'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html',1,'simdjson::dom::object::iterator'],['../classsimdjson_1_1dom_1_1document__stream_1_1iterator.html',1,'simdjson::dom::document_stream::iterator'],['../classsimdjson_1_1dom_1_1array_1_1iterator.html',1,'simdjson::dom::array::iterator']]], ['iterators_67',['Documents are iterators',['../md_doc_2basics.html#autotoc_md6',1,'']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 3d40e10b9..cca57080a 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,20 +1,28 @@ var searchData= [ - ['json_0',['json',['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON'],['../md_doc_2dom.html#autotoc_md52',1,'Using the Parsed JSON']]], + ['json_0',['json',['../md_doc_2basics.html#autotoc_md10',1,'Using the parsed JSON'],['../md_doc_2dom.html#autotoc_md81',1,'Using the Parsed JSON']]], ['json_20documents_1',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], - ['json_20documents_20using_20the_20dom_20front_20end_2',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['json_20element_20types_3',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md63',1,'']]], - ['json_20ndjson_20and_20json_20lines_4',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md29',1,'']]], - ['json_20pointer_5',['json pointer',['../md_doc_2dom.html#autotoc_md56',1,'JSON Pointer'],['../md_doc_2basics.html#autotoc_md20',1,'JSON Pointer']]], - ['json_20scope_6',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], - ['json_20string_7',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md33',1,'']]], - ['json_20string_20for_20objects_20and_20arrays_8',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md34',1,'']]], - ['json_20strings_20without_20parsing_9',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], - ['json_20values_10',['Simple JSON values',['../md_doc_2tape.html#autotoc_md126',1,'']]], - ['json_3a_20additional_20examples_11',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], - ['json_5fpath_5fto_5fpointer_5fconversion_12',['json_path_to_pointer_conversion',['../namespacesimdjson.html#ade48fbb6e7d8bf0be40bf7345cfbe4be',1,'simdjson']]], - ['json_5ftype_13',['json_type',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], - ['jsonpath_14',['jsonpath',['../md_doc_2basics.html#autotoc_md21',1,'JSONPath'],['../md_doc_2dom.html#autotoc_md57',1,'JSONPath']]], - ['jsonpath_20queries_15',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md58',1,'']]], - ['just_20some_20fields_16',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md47',1,'']]] + ['json_20documents_20using_20the_20dom_20front_20end_2',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['json_20element_20types_3',['Tree Walking and JSON Element Types',['../md_doc_2dom.html#autotoc_md92',1,'']]], + ['json_20ndjson_20and_20json_20lines_4',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md32',1,'']]], + ['json_20pointer_5',['json pointer',['../md_doc_2dom.html#autotoc_md85',1,'JSON Pointer'],['../md_doc_2basics.html#autotoc_md20',1,'JSON Pointer']]], + ['json_20pointer_20accessors_6',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['json_20pointer_20c_2026_20reflection_7',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['json_20pointer_20functions_8',['JSON Pointer Functions',['../md_doc_2compile__time__accessors.html#autotoc_md68',1,'']]], + ['json_20pointer_20syntax_9',['JSON Pointer Syntax',['../md_doc_2compile__time__accessors.html#autotoc_md63',1,'']]], + ['json_20scope_10',['Parser, document and JSON scope',['../md_doc_2basics.html#autotoc_md7',1,'']]], + ['json_20string_11',['General direct access to the raw JSON string',['../md_doc_2basics.html#autotoc_md36',1,'']]], + ['json_20string_20for_20objects_20and_20arrays_12',['Raw JSON string for objects and arrays',['../md_doc_2basics.html#autotoc_md37',1,'']]], + ['json_20strings_20without_20parsing_13',['Minifying JSON strings without parsing',['../md_doc_2basics.html#autotoc_md18',1,'']]], + ['json_20values_14',['Simple JSON values',['../md_doc_2tape.html#autotoc_md155',1,'']]], + ['json_3a_20additional_20examples_15',['Using the parsed JSON: additional examples',['../md_doc_2basics.html#autotoc_md11',1,'']]], + ['json_5fpath_5fto_5fpointer_5fconversion_16',['json_path_to_pointer_conversion',['../namespacesimdjson.html#ade48fbb6e7d8bf0be40bf7345cfbe4be',1,'simdjson']]], + ['json_5ftype_17',['json_type',['../namespacesimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand.html#ac915f0c06e5ab0363e09593bba651330',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand']]], + ['jsonpath_18',['jsonpath',['../md_doc_2basics.html#autotoc_md21',1,'JSONPath'],['../md_doc_2dom.html#autotoc_md86',1,'JSONPath']]], + ['jsonpath_20and_20json_20pointer_20accessors_19',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['jsonpath_20and_20json_20pointer_20c_2026_20reflection_20',['Compile-Time JSONPath and JSON Pointer (C++26 Reflection)',['../md_doc_2basics.html#autotoc_md24',1,'']]], + ['jsonpath_20functions_21',['JSONPath Functions',['../md_doc_2compile__time__accessors.html#autotoc_md67',1,'']]], + ['jsonpath_20queries_22',['Using <tt>at_path_with_wildcard</tt> for JSONPath Queries',['../md_doc_2dom.html#autotoc_md87',1,'']]], + ['jsonpath_20syntax_23',['JSONPath Syntax',['../md_doc_2compile__time__accessors.html#autotoc_md60',1,'']]], + ['just_20some_20fields_24',['Extracting just some fields',['../md_doc_2builder.html#autotoc_md50',1,'']]] ]; diff --git a/search/all_e.js b/search/all_e.js index ff0e95d5c..03762192e 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,11 +1,12 @@ var searchData= [ ['key_0',['key',['../classsimdjson_1_1dom_1_1key__value__pair.html#a58c41d937401cfe88ceb6e71d7dbeb45',1,'simdjson::dom::key_value_pair::key'],['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a951609ca7a164b499ff19adbe2de7983',1,'simdjson::dom::object::iterator::key()'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a4f49d8e89feb3ca69cf85ce2aea80c0f',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field::key()']]], - ['key_5fc_5fstr_1',['key_c_str',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a54a99dcf9c422d5c24f3c570b6d9b6e4',1,'simdjson::dom::object::iterator']]], - ['key_5fequals_2',['key_equals',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a4807eeb1ed5f596b587d0b61dfb550e7',1,'simdjson::dom::object::iterator']]], - ['key_5fequals_5fcase_5finsensitive_3',['key_equals_case_insensitive',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a6d335de77b8c5b731566e48f6cacd95d',1,'simdjson::dom::object::iterator']]], - ['key_5flength_4',['key_length',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a5ad1b60fd5df56d9fdb8bce1e08de88f',1,'simdjson::dom::object::iterator']]], - ['key_5fraw_5fjson_5ftoken_5',['key_raw_json_token',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a248d65ae4cf327f277a5a48ba7480386',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field']]], - ['key_5fvalue_5fpair_6',['key_value_pair',['../classsimdjson_1_1dom_1_1key__value__pair.html',1,'simdjson::dom']]], - ['keys_7',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md32',1,'']]] + ['key_20reflection_20apis_1',['Key Reflection APIs',['../compile__time__accessors_8h.html#autotoc_md180',1,'']]], + ['key_5fc_5fstr_2',['key_c_str',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a54a99dcf9c422d5c24f3c570b6d9b6e4',1,'simdjson::dom::object::iterator']]], + ['key_5fequals_3',['key_equals',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a4807eeb1ed5f596b587d0b61dfb550e7',1,'simdjson::dom::object::iterator']]], + ['key_5fequals_5fcase_5finsensitive_4',['key_equals_case_insensitive',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a6d335de77b8c5b731566e48f6cacd95d',1,'simdjson::dom::object::iterator']]], + ['key_5flength_5',['key_length',['../classsimdjson_1_1dom_1_1object_1_1iterator.html#a5ad1b60fd5df56d9fdb8bce1e08de88f',1,'simdjson::dom::object::iterator']]], + ['key_5fraw_5fjson_5ftoken_6',['key_raw_json_token',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a248d65ae4cf327f277a5a48ba7480386',1,'simdjson::SIMDJSON_IMPLEMENTATION::ondemand::field']]], + ['key_5fvalue_5fpair_7',['key_value_pair',['../classsimdjson_1_1dom_1_1key__value__pair.html',1,'simdjson::dom']]], + ['keys_8',['Raw strings from keys',['../md_doc_2basics.html#autotoc_md35',1,'']]] ]; diff --git a/search/all_f.js b/search/all_f.js index 16559e197..046e70e29 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -1,18 +1,19 @@ var searchData= [ - ['large_20files_20and_20huge_20page_20support_0',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md117',1,'']]], + ['large_20files_20and_20huge_20page_20support_0',['Large files and huge page support',['../md_doc_2performance.html#autotoc_md146',1,'']]], ['len_1',['len',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a132a95e1147b80c2533d1632185a6a09',1,'simdjson::SIMDJSON_IMPLEMENTATION::dom_parser_implementation']]], ['length_2',['length',['../structsimdjson_1_1padded__string.html#a863fded7b347718299190ad3f501d38c',1,'simdjson::padded_string']]], - ['lifetime_3',['lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md155',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md151',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md156',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md152',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md140',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md136',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md135',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md132',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md166',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md165',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md164',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md163',1,'IMPORTANT: string_view lifetime']]], - ['limitations_20of_20the_20on_20demand_20approach_4',['Limitations of the On-Demand Approach',['../md_doc_2ondemand__design.html#autotoc_md98',1,'']]], - ['lines_5',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md29',1,'']]], - ['list_6',['Deprecated List',['../deprecated.html',1,'']]], - ['load_7',['load',['../structsimdjson_1_1padded__string.html#aaf017ffe731c738da5eb31c63b987d3a',1,'simdjson::padded_string::load()'],['../classsimdjson_1_1dom_1_1parser.html#ac408e4da66b0ac7cf9734aa4973e0093',1,'simdjson::dom::parser::load(std::string_view path) &noexcept']]], - ['load_5finto_5fdocument_8',['load_into_document',['../classsimdjson_1_1dom_1_1parser.html#aa3fc69c5ff15c98e6b1ff9aa4811b040',1,'simdjson::dom::parser']]], - ['load_5fmany_9',['load_many',['../classsimdjson_1_1dom_1_1parser.html#a8d839fa94a8a800814164f225d987d0a',1,'simdjson::dom::parser']]], - ['loading_20and_20parsing_20json_20documents_10',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], - ['loading_20and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_11',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md51',1,'']]], - ['location_20in_20document_12',['Current location in document',['../md_doc_2basics.html#autotoc_md26',1,'']]], - ['long_20running_20processes_20and_20memory_20capacity_13',['long running processes and memory capacity',['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity']]], - ['loops_3a_20long_20running_20processes_20and_20memory_20capacity_14',['loops: long running processes and memory capacity',['../md_doc_2performance.html#autotoc_md116',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md65',1,'Server Loops: Long-Running Processes and Memory Capacity']]] + ['lifetime_3',['lifetime',['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md186',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md182',1,'IMPORTANT: Buffer Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md187',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md183',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md169',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md165',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md164',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1dom_1_1parser.html#autotoc_md161',1,'IMPORTANT: Document Lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md197',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#autotoc_md196',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md195',1,'IMPORTANT: string_view lifetime'],['../classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#autotoc_md194',1,'IMPORTANT: string_view lifetime']]], + ['limitations_4',['Limitations',['../md_doc_2compile__time__accessors.html#autotoc_md76',1,'']]], + ['limitations_20of_20the_20on_20demand_20approach_5',['Limitations of the On-Demand Approach',['../md_doc_2ondemand__design.html#autotoc_md127',1,'']]], + ['lines_6',['Newline-Delimited JSON (ndjson) and JSON lines',['../md_doc_2basics.html#autotoc_md32',1,'']]], + ['list_7',['Deprecated List',['../deprecated.html',1,'']]], + ['load_8',['load',['../structsimdjson_1_1padded__string.html#aaf017ffe731c738da5eb31c63b987d3a',1,'simdjson::padded_string::load()'],['../classsimdjson_1_1dom_1_1parser.html#ac408e4da66b0ac7cf9734aa4973e0093',1,'simdjson::dom::parser::load(std::string_view path) &noexcept']]], + ['load_5finto_5fdocument_9',['load_into_document',['../classsimdjson_1_1dom_1_1parser.html#aa3fc69c5ff15c98e6b1ff9aa4811b040',1,'simdjson::dom::parser']]], + ['load_5fmany_10',['load_many',['../classsimdjson_1_1dom_1_1parser.html#a8d839fa94a8a800814164f225d987d0a',1,'simdjson::dom::parser']]], + ['loading_20and_20parsing_20json_20documents_11',['The basics: loading and parsing JSON documents',['../md_doc_2basics.html#autotoc_md5',1,'']]], + ['loading_20and_20parsing_20json_20documents_20using_20the_20dom_20front_20end_12',['The Basics: Loading and Parsing JSON Documents using the DOM front-end',['../md_doc_2dom.html#autotoc_md80',1,'']]], + ['location_20in_20document_13',['Current location in document',['../md_doc_2basics.html#autotoc_md29',1,'']]], + ['long_20running_20processes_20and_20memory_20capacity_14',['long running processes and memory capacity',['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]], + ['loops_3a_20long_20running_20processes_20and_20memory_20capacity_15',['loops: long running processes and memory capacity',['../md_doc_2performance.html#autotoc_md145',1,'Server Loops: Long-Running Processes and Memory Capacity'],['../md_doc_2dom.html#autotoc_md94',1,'Server Loops: Long-Running Processes and Memory Capacity']]] ]; diff --git a/search/pages_0.js b/search/pages_0.js index 3c83190e1..6205b27bd 100644 --- a/search/pages_0.js +++ b/search/pages_0.js @@ -1,5 +1,7 @@ var searchData= [ ['a_20better_20way_20to_20parse_20documents_0',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], - ['architecture_20specific_20implementations_1',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]] + ['accessors_1',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['and_20json_20pointer_20accessors_2',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['architecture_20specific_20implementations_3',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]] ]; diff --git a/search/pages_2.js b/search/pages_2.js index f22bfb663..bc6a74216 100644 --- a/search/pages_2.js +++ b/search/pages_2.js @@ -1,4 +1,5 @@ var searchData= [ - ['cpu_20architecture_20specific_20implementations_0',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]] + ['compile_20time_20jsonpath_20and_20json_20pointer_20accessors_0',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['cpu_20architecture_20specific_20implementations_1',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]] ]; diff --git a/search/pages_7.js b/search/pages_7.js index 1ad91e39e..0e1bc7524 100644 --- a/search/pages_7.js +++ b/search/pages_7.js @@ -1,4 +1,5 @@ var searchData= [ - ['list_0',['Deprecated List',['../deprecated.html',1,'']]] + ['json_20pointer_20accessors_0',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['jsonpath_20and_20json_20pointer_20accessors_1',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]] ]; diff --git a/search/pages_8.js b/search/pages_8.js index 6910d97da..1ad91e39e 100644 --- a/search/pages_8.js +++ b/search/pages_8.js @@ -1,4 +1,4 @@ var searchData= [ - ['model_20dom_20front_20end_0',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]] + ['list_0',['Deprecated List',['../deprecated.html',1,'']]] ]; diff --git a/search/pages_9.js b/search/pages_9.js index ac6ff5a2d..6910d97da 100644 --- a/search/pages_9.js +++ b/search/pages_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['notes_0',['Performance Notes',['../md_doc_2performance.html',1,'']]] + ['model_20dom_20front_20end_0',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]] ]; diff --git a/search/pages_a.js b/search/pages_a.js index 9a2c17111..ac6ff5a2d 100644 --- a/search/pages_a.js +++ b/search/pages_a.js @@ -1,4 +1,4 @@ var searchData= [ - ['object_20model_20dom_20front_20end_0',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]] + ['notes_0',['Performance Notes',['../md_doc_2performance.html',1,'']]] ]; diff --git a/search/pages_b.js b/search/pages_b.js index bb1631b03..9a2c17111 100644 --- a/search/pages_b.js +++ b/search/pages_b.js @@ -1,6 +1,4 @@ var searchData= [ - ['parse_20documents_0',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], - ['parse_5fmany_1',['parse_many',['../md_doc_2parse__many.html',1,'']]], - ['performance_20notes_2',['Performance Notes',['../md_doc_2performance.html',1,'']]] + ['object_20model_20dom_20front_20end_0',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]] ]; diff --git a/search/pages_c.js b/search/pages_c.js index 657b0e37b..fee4c5e79 100644 --- a/search/pages_c.js +++ b/search/pages_c.js @@ -1,6 +1,7 @@ var searchData= [ - ['simdjson_0',['simdjson',['../index.html',1,'simdjson'],['../md_doc_2tape.html',1,'Tape structure in simdjson']]], - ['specific_20implementations_1',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], - ['structure_20in_20simdjson_2',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]] + ['parse_20documents_0',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]], + ['parse_5fmany_1',['parse_many',['../md_doc_2parse__many.html',1,'']]], + ['performance_20notes_2',['Performance Notes',['../md_doc_2performance.html',1,'']]], + ['pointer_20accessors_3',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]] ]; diff --git a/search/pages_d.js b/search/pages_d.js index 1908552df..657b0e37b 100644 --- a/search/pages_d.js +++ b/search/pages_d.js @@ -1,7 +1,6 @@ var searchData= [ - ['tape_20structure_20in_20simdjson_0',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]], - ['the_20basics_1',['The Basics',['../md_doc_2basics.html',1,'']]], - ['the_20document_20object_20model_20dom_20front_20end_2',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], - ['to_20parse_20documents_3',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]] + ['simdjson_0',['simdjson',['../index.html',1,'simdjson'],['../md_doc_2tape.html',1,'Tape structure in simdjson']]], + ['specific_20implementations_1',['CPU Architecture-Specific Implementations',['../md_doc_2implementation-selection.html',1,'']]], + ['structure_20in_20simdjson_2',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]] ]; diff --git a/search/pages_e.js b/search/pages_e.js index f573bf29b..552a14d41 100644 --- a/search/pages_e.js +++ b/search/pages_e.js @@ -1,4 +1,8 @@ var searchData= [ - ['way_20to_20parse_20documents_0',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]] + ['tape_20structure_20in_20simdjson_0',['Tape structure in simdjson',['../md_doc_2tape.html',1,'']]], + ['the_20basics_1',['The Basics',['../md_doc_2basics.html',1,'']]], + ['the_20document_20object_20model_20dom_20front_20end_2',['The Document-Object-Model (DOM) front-end',['../md_doc_2dom.html',1,'']]], + ['time_20jsonpath_20and_20json_20pointer_20accessors_3',['Compile-Time JSONPath and JSON Pointer Accessors',['../md_doc_2compile__time__accessors.html',1,'']]], + ['to_20parse_20documents_4',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]] ]; diff --git a/search/pages_f.js b/search/pages_f.js new file mode 100644 index 000000000..f573bf29b --- /dev/null +++ b/search/pages_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['way_20to_20parse_20documents_0',['A Better Way to Parse Documents?',['../md_doc_2ondemand__design.html',1,'']]] +]; diff --git a/search/searchdata.js b/search/searchdata.js index e91ad65db..ea9d30a39 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -10,7 +10,7 @@ var indexSectionsWithContent = 7: "ejs", 8: "abcdefimnopstu", 9: "aiosv", - 10: "abcdefilmnopstw" + 10: "abcdefijlmnopstw" }; var indexSectionNames = diff --git a/simdjson_8h.html b/simdjson_8h.html index 128093945..3b98bf928 100644 --- a/simdjson_8h.html +++ b/simdjson_8h.html @@ -29,7 +29,7 @@
    diff --git a/simdjson_8h_source.html b/simdjson_8h_source.html index 0b80254d5..d255db4a0 100644 --- a/simdjson_8h_source.html +++ b/simdjson_8h_source.html @@ -29,7 +29,7 @@ diff --git a/simdjson__version_8h_source.html b/simdjson__version_8h_source.html index d0888f0ad..3eb1adf56 100644 --- a/simdjson__version_8h_source.html +++ b/simdjson__version_8h_source.html @@ -29,7 +29,7 @@ @@ -107,13 +107,13 @@ $(document).ready(function(){initNavTree('simdjson__version_8h_source.html','');
    3#ifndef SIMDJSON_SIMDJSON_VERSION_H
    4#define SIMDJSON_SIMDJSON_VERSION_H
    5
    -
    7#define SIMDJSON_VERSION "4.0.7"
    +
    7#define SIMDJSON_VERSION "4.1.0"
    8
    9namespace simdjson {
    10enum {
    - - + +
    23};
    24} // namespace simdjson
    25
    diff --git a/simdprune__tables_8h_source.html b/simdprune__tables_8h_source.html index c0866a799..029a03f5c 100644 --- a/simdprune__tables_8h_source.html +++ b/simdprune__tables_8h_source.html @@ -29,7 +29,7 @@ diff --git a/std__deserialize_8h_source.html b/std__deserialize_8h_source.html index ce8d05cd9..a37d93871 100644 --- a/std__deserialize_8h_source.html +++ b/std__deserialize_8h_source.html @@ -29,7 +29,7 @@ diff --git a/string__view_8hpp_source.html b/string__view_8hpp_source.html index 76ad9e9b2..3f8eb4412 100644 --- a/string__view_8hpp_source.html +++ b/string__view_8hpp_source.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base-members.html b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base-members.html index e55483b5f..aa36fb8ae 100644 --- a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base-members.html +++ b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html index 415433eff..63347a847 100644 --- a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html +++ b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number-members.html b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number-members.html index a85b3f444..c7ff9ffaa 100644 --- a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number-members.html +++ b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html index 8029586b5..4769f966d 100644 --- a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html +++ b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html @@ -29,7 +29,7 @@ @@ -110,49 +110,49 @@ $(document).ready(function(){initNavTree('structsimdjson_1_1_s_i_m_d_j_s_o_n___i
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out, - + diff --git a/namespacesimdjson_1_1fallback.html b/namespacesimdjson_1_1fallback.html index ea3bba52c..f0e6323b2 100644 --- a/namespacesimdjson_1_1fallback.html +++ b/namespacesimdjson_1_1fallback.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1haswell.html b/namespacesimdjson_1_1haswell.html index 499e035ae..e6de942da 100644 --- a/namespacesimdjson_1_1haswell.html +++ b/namespacesimdjson_1_1haswell.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1icelake.html b/namespacesimdjson_1_1icelake.html index 4518503e1..a77815513 100644 --- a/namespacesimdjson_1_1icelake.html +++ b/namespacesimdjson_1_1icelake.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1lasx.html b/namespacesimdjson_1_1lasx.html index 6428f1078..3efc93c0c 100644 --- a/namespacesimdjson_1_1lasx.html +++ b/namespacesimdjson_1_1lasx.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1lsx.html b/namespacesimdjson_1_1lsx.html index 91002dccf..406156248 100644 --- a/namespacesimdjson_1_1lsx.html +++ b/namespacesimdjson_1_1lsx.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1ppc64.html b/namespacesimdjson_1_1ppc64.html index 39950b6b3..dcafa2aa6 100644 --- a/namespacesimdjson_1_1ppc64.html +++ b/namespacesimdjson_1_1ppc64.html @@ -29,7 +29,7 @@ diff --git a/namespacesimdjson_1_1westmere.html b/namespacesimdjson_1_1westmere.html index f520eb7fb..4698fa7df 100644 --- a/namespacesimdjson_1_1westmere.html +++ b/namespacesimdjson_1_1westmere.html @@ -29,7 +29,7 @@ diff --git a/navtreedata.js b/navtreedata.js index 48470a277..2203237ce 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -51,144 +51,180 @@ var NAVTREE = [ "Minifying JSON strings without parsing", "md_doc_2basics.html#autotoc_md18", null ], [ "UTF-8 validation (alone)", "md_doc_2basics.html#autotoc_md19", null ], [ "JSON Pointer", "md_doc_2basics.html#autotoc_md20", null ], - [ "JSONPath", "md_doc_2basics.html#autotoc_md21", null ], - [ "Error handling", "md_doc_2basics.html#autotoc_md22", [ - [ "Error handling examples without exceptions", "md_doc_2basics.html#autotoc_md23", null ], - [ "Disabling exceptions", "md_doc_2basics.html#autotoc_md24", null ], - [ "Exceptions", "md_doc_2basics.html#autotoc_md25", null ], - [ "Current location in document", "md_doc_2basics.html#autotoc_md26", null ], - [ "Checking for trailing content", "md_doc_2basics.html#autotoc_md27", null ] + [ "JSONPath", "md_doc_2basics.html#autotoc_md21", [ + [ "C++26", "md_doc_2basics.html#autotoc_md22", null ], + [ "C++26", "md_doc_2basics.html#autotoc_md23", null ] ] ], - [ "Rewinding", "md_doc_2basics.html#autotoc_md28", null ], - [ "Newline-Delimited JSON (ndjson) and JSON lines", "md_doc_2basics.html#autotoc_md29", null ], - [ "Parsing numbers inside strings", "md_doc_2basics.html#autotoc_md30", null ], - [ "Dynamic Number Types", "md_doc_2basics.html#autotoc_md31", null ], - [ "Raw strings from keys", "md_doc_2basics.html#autotoc_md32", null ], - [ "General direct access to the raw JSON string", "md_doc_2basics.html#autotoc_md33", [ - [ "Raw JSON string for objects and arrays", "md_doc_2basics.html#autotoc_md34", null ] + [ "Compile-Time JSONPath and JSON Pointer (C++26 Reflection)", "md_doc_2basics.html#autotoc_md24", null ], + [ "Error handling", "md_doc_2basics.html#autotoc_md25", [ + [ "Error handling examples without exceptions", "md_doc_2basics.html#autotoc_md26", null ], + [ "Disabling exceptions", "md_doc_2basics.html#autotoc_md27", null ], + [ "Exceptions", "md_doc_2basics.html#autotoc_md28", null ], + [ "Current location in document", "md_doc_2basics.html#autotoc_md29", null ], + [ "Checking for trailing content", "md_doc_2basics.html#autotoc_md30", null ] ] ], - [ "Storing directly into an existing string instance", "md_doc_2basics.html#autotoc_md35", null ], - [ "Thread safety", "md_doc_2basics.html#autotoc_md36", null ], - [ "Standard compliance", "md_doc_2basics.html#autotoc_md37", null ], - [ "Backwards compatibility", "md_doc_2basics.html#autotoc_md38", null ], - [ "Examples", "md_doc_2basics.html#autotoc_md39", null ], - [ "Performance tips", "md_doc_2basics.html#autotoc_md40", null ], - [ "Further reading", "md_doc_2basics.html#autotoc_md41", null ] + [ "Rewinding", "md_doc_2basics.html#autotoc_md31", null ], + [ "Newline-Delimited JSON (ndjson) and JSON lines", "md_doc_2basics.html#autotoc_md32", null ], + [ "Parsing numbers inside strings", "md_doc_2basics.html#autotoc_md33", null ], + [ "Dynamic Number Types", "md_doc_2basics.html#autotoc_md34", null ], + [ "Raw strings from keys", "md_doc_2basics.html#autotoc_md35", null ], + [ "General direct access to the raw JSON string", "md_doc_2basics.html#autotoc_md36", [ + [ "Raw JSON string for objects and arrays", "md_doc_2basics.html#autotoc_md37", null ] + ] ], + [ "Storing directly into an existing string instance", "md_doc_2basics.html#autotoc_md38", null ], + [ "Thread safety", "md_doc_2basics.html#autotoc_md39", null ], + [ "Standard compliance", "md_doc_2basics.html#autotoc_md40", null ], + [ "Backwards compatibility", "md_doc_2basics.html#autotoc_md41", null ], + [ "Examples", "md_doc_2basics.html#autotoc_md42", null ], + [ "Performance tips", "md_doc_2basics.html#autotoc_md43", null ], + [ "Further reading", "md_doc_2basics.html#autotoc_md44", null ] ] ], [ "Builder", "md_doc_2builder.html", [ - [ "Overview: string_builder", "md_doc_2builder.html#autotoc_md42", null ], - [ "Example: string_builder", "md_doc_2builder.html#autotoc_md43", [ - [ "C++20", "md_doc_2builder.html#autotoc_md44", null ] + [ "Overview: string_builder", "md_doc_2builder.html#autotoc_md45", null ], + [ "Example: string_builder", "md_doc_2builder.html#autotoc_md46", [ + [ "C++20", "md_doc_2builder.html#autotoc_md47", null ] ] ], - [ "C++26 static reflection", "md_doc_2builder.html#autotoc_md45", [ - [ "Without string_buffer instance", "md_doc_2builder.html#autotoc_md46", null ], - [ "Extracting just some fields", "md_doc_2builder.html#autotoc_md47", null ], - [ "Without string_buffer instance but with explicit error handling", "md_doc_2builder.html#autotoc_md48", null ], - [ "Customization", "md_doc_2builder.html#autotoc_md49", null ] + [ "C++26 static reflection", "md_doc_2builder.html#autotoc_md48", [ + [ "Without string_buffer instance", "md_doc_2builder.html#autotoc_md49", null ], + [ "Extracting just some fields", "md_doc_2builder.html#autotoc_md50", null ], + [ "Without string_buffer instance but with explicit error handling", "md_doc_2builder.html#autotoc_md51", null ], + [ "Customization", "md_doc_2builder.html#autotoc_md52", null ] ] ] ] ], + [ "Compile-Time JSONPath and JSON Pointer Accessors", "md_doc_2compile__time__accessors.html", [ + [ "Overview", "md_doc_2compile__time__accessors.html#autotoc_md54", null ], + [ "Requirements", "md_doc_2compile__time__accessors.html#autotoc_md55", null ], + [ "How It Works", "md_doc_2compile__time__accessors.html#autotoc_md56", null ], + [ "Two Usage Modes", "md_doc_2compile__time__accessors.html#autotoc_md57", [ + [ "Mode 1: With Type Validation (Recommended)", "md_doc_2compile__time__accessors.html#autotoc_md58", null ], + [ "Mode 2: Without Validation", "md_doc_2compile__time__accessors.html#autotoc_md59", null ] + ] ], + [ "JSONPath Syntax", "md_doc_2compile__time__accessors.html#autotoc_md60", [ + [ "Supported Syntax", "md_doc_2compile__time__accessors.html#autotoc_md61", null ], + [ "Examples", "md_doc_2compile__time__accessors.html#autotoc_md62", null ] + ] ], + [ "JSON Pointer Syntax", "md_doc_2compile__time__accessors.html#autotoc_md63", [ + [ "Supported Syntax", "md_doc_2compile__time__accessors.html#autotoc_md64", null ], + [ "Examples", "md_doc_2compile__time__accessors.html#autotoc_md65", null ] + ] ], + [ "API Reference", "md_doc_2compile__time__accessors.html#autotoc_md66", [ + [ "JSONPath Functions", "md_doc_2compile__time__accessors.html#autotoc_md67", null ], + [ "JSON Pointer Functions", "md_doc_2compile__time__accessors.html#autotoc_md68", null ], + [ "Direct Field Extraction", "md_doc_2compile__time__accessors.html#autotoc_md69", null ] + ] ], + [ "Complete Examples", "md_doc_2compile__time__accessors.html#autotoc_md70", [ + [ "Example 1: Validated Access", "md_doc_2compile__time__accessors.html#autotoc_md71", null ], + [ "Example 2: Non-Validated Access", "md_doc_2compile__time__accessors.html#autotoc_md72", null ], + [ "Example 3: Direct Extraction", "md_doc_2compile__time__accessors.html#autotoc_md73", null ] + ] ], + [ "Error Handling", "md_doc_2compile__time__accessors.html#autotoc_md74", null ], + [ "Performance", "md_doc_2compile__time__accessors.html#autotoc_md75", null ], + [ "Limitations", "md_doc_2compile__time__accessors.html#autotoc_md76", null ], + [ "When to Use", "md_doc_2compile__time__accessors.html#autotoc_md77", null ], + [ "See Also", "md_doc_2compile__time__accessors.html#autotoc_md78", null ] + ] ], [ "The Document-Object-Model (DOM) front-end", "md_doc_2dom.html", [ - [ "DOM vs On-Demand", "md_doc_2dom.html#autotoc_md50", null ], - [ "The Basics: Loading and Parsing JSON Documents using the DOM front-end", "md_doc_2dom.html#autotoc_md51", null ], - [ "Using the Parsed JSON", "md_doc_2dom.html#autotoc_md52", [ - [ "Examples", "md_doc_2dom.html#autotoc_md53", null ] + [ "DOM vs On-Demand", "md_doc_2dom.html#autotoc_md79", null ], + [ "The Basics: Loading and Parsing JSON Documents using the DOM front-end", "md_doc_2dom.html#autotoc_md80", null ], + [ "Using the Parsed JSON", "md_doc_2dom.html#autotoc_md81", [ + [ "Examples", "md_doc_2dom.html#autotoc_md82", null ] ] ], - [ "C++17 Support", "md_doc_2dom.html#autotoc_md54", null ], - [ "C++20 Support", "md_doc_2dom.html#autotoc_md55", null ], - [ "JSON Pointer", "md_doc_2dom.html#autotoc_md56", null ], - [ "JSONPath", "md_doc_2dom.html#autotoc_md57", null ], - [ "Using at_path_with_wildcard for JSONPath Queries", "md_doc_2dom.html#autotoc_md58", [ - [ "Example Usage", "md_doc_2dom.html#autotoc_md59", null ] + [ "C++17 Support", "md_doc_2dom.html#autotoc_md83", null ], + [ "C++20 Support", "md_doc_2dom.html#autotoc_md84", null ], + [ "JSON Pointer", "md_doc_2dom.html#autotoc_md85", null ], + [ "JSONPath", "md_doc_2dom.html#autotoc_md86", null ], + [ "Using at_path_with_wildcard for JSONPath Queries", "md_doc_2dom.html#autotoc_md87", [ + [ "Example Usage", "md_doc_2dom.html#autotoc_md88", null ] ] ], - [ "Error Handling", "md_doc_2dom.html#autotoc_md60", [ - [ "Error Handling Example", "md_doc_2dom.html#autotoc_md61", null ], - [ "Exceptions", "md_doc_2dom.html#autotoc_md62", null ] + [ "Error Handling", "md_doc_2dom.html#autotoc_md89", [ + [ "Error Handling Example", "md_doc_2dom.html#autotoc_md90", null ], + [ "Exceptions", "md_doc_2dom.html#autotoc_md91", null ] ] ], - [ "Tree Walking and JSON Element Types", "md_doc_2dom.html#autotoc_md63", null ], - [ "Reusing the parser for maximum efficiency", "md_doc_2dom.html#autotoc_md64", null ], - [ "Server Loops: Long-Running Processes and Memory Capacity", "md_doc_2dom.html#autotoc_md65", null ], - [ "Best Use of the DOM API", "md_doc_2dom.html#autotoc_md66", null ], - [ "Padding and Temporary Copies", "md_doc_2dom.html#autotoc_md67", null ], - [ "Performance Tips", "md_doc_2dom.html#autotoc_md68", null ] + [ "Tree Walking and JSON Element Types", "md_doc_2dom.html#autotoc_md92", null ], + [ "Reusing the parser for maximum efficiency", "md_doc_2dom.html#autotoc_md93", null ], + [ "Server Loops: Long-Running Processes and Memory Capacity", "md_doc_2dom.html#autotoc_md94", null ], + [ "Best Use of the DOM API", "md_doc_2dom.html#autotoc_md95", null ], + [ "Padding and Temporary Copies", "md_doc_2dom.html#autotoc_md96", null ], + [ "Performance Tips", "md_doc_2dom.html#autotoc_md97", null ] ] ], [ "CPU Architecture-Specific Implementations", "md_doc_2implementation-selection.html", [ - [ "Overview", "md_doc_2implementation-selection.html#autotoc_md69", null ], - [ "Runtime CPU Detection", "md_doc_2implementation-selection.html#autotoc_md70", null ], - [ "Inspecting the Detected Implementation", "md_doc_2implementation-selection.html#autotoc_md71", null ], - [ "Querying Available Implementations", "md_doc_2implementation-selection.html#autotoc_md72", null ], - [ "Manually Selecting the Implementation", "md_doc_2implementation-selection.html#autotoc_md73", null ], - [ "Checking that an Implementation can Run on your System", "md_doc_2implementation-selection.html#autotoc_md74", null ] + [ "Overview", "md_doc_2implementation-selection.html#autotoc_md98", null ], + [ "Runtime CPU Detection", "md_doc_2implementation-selection.html#autotoc_md99", null ], + [ "Inspecting the Detected Implementation", "md_doc_2implementation-selection.html#autotoc_md100", null ], + [ "Querying Available Implementations", "md_doc_2implementation-selection.html#autotoc_md101", null ], + [ "Manually Selecting the Implementation", "md_doc_2implementation-selection.html#autotoc_md102", null ], + [ "Checking that an Implementation can Run on your System", "md_doc_2implementation-selection.html#autotoc_md103", null ] ] ], [ "iterate_many", "md_doc_2iterate__many.html", [ - [ "Contents", "md_doc_2iterate__many.html#autotoc_md75", null ], - [ "Motivation", "md_doc_2iterate__many.html#autotoc_md76", null ], - [ "How it works", "md_doc_2iterate__many.html#autotoc_md77", [ - [ "Context", "md_doc_2iterate__many.html#autotoc_md78", null ], - [ "Design", "md_doc_2iterate__many.html#autotoc_md79", null ], - [ "Threads", "md_doc_2iterate__many.html#autotoc_md80", null ] + [ "Contents", "md_doc_2iterate__many.html#autotoc_md104", null ], + [ "Motivation", "md_doc_2iterate__many.html#autotoc_md105", null ], + [ "How it works", "md_doc_2iterate__many.html#autotoc_md106", [ + [ "Context", "md_doc_2iterate__many.html#autotoc_md107", null ], + [ "Design", "md_doc_2iterate__many.html#autotoc_md108", null ], + [ "Threads", "md_doc_2iterate__many.html#autotoc_md109", null ] ] ], - [ "Support", "md_doc_2iterate__many.html#autotoc_md81", null ], - [ "API", "md_doc_2iterate__many.html#autotoc_md82", null ], - [ "Use cases", "md_doc_2iterate__many.html#autotoc_md83", null ], - [ "Tracking your position", "md_doc_2iterate__many.html#autotoc_md84", null ], - [ "Incomplete streams", "md_doc_2iterate__many.html#autotoc_md85", null ], - [ "Comma-separated documents", "md_doc_2iterate__many.html#autotoc_md86", null ], - [ "C++20 features", "md_doc_2iterate__many.html#autotoc_md87", null ] + [ "Support", "md_doc_2iterate__many.html#autotoc_md110", null ], + [ "API", "md_doc_2iterate__many.html#autotoc_md111", null ], + [ "Use cases", "md_doc_2iterate__many.html#autotoc_md112", null ], + [ "Tracking your position", "md_doc_2iterate__many.html#autotoc_md113", null ], + [ "Incomplete streams", "md_doc_2iterate__many.html#autotoc_md114", null ], + [ "Comma-separated documents", "md_doc_2iterate__many.html#autotoc_md115", null ], + [ "C++20 features", "md_doc_2iterate__many.html#autotoc_md116", null ] ] ], [ "A Better Way to Parse Documents?", "md_doc_2ondemand__design.html", [ - [ "Algorithm", "md_doc_2ondemand__design.html#autotoc_md92", [ - [ "DOM Parsers", "md_doc_2ondemand__design.html#autotoc_md88", null ], - [ "Event-Based Parsers (SAX, SAJ, etc.)", "md_doc_2ondemand__design.html#autotoc_md89", null ], - [ "Schema-Based Parser Generators", "md_doc_2ondemand__design.html#autotoc_md90", null ], - [ "Type Blindness and Branch Misprediction", "md_doc_2ondemand__design.html#autotoc_md91", null ], - [ "Starting the iteration", "md_doc_2ondemand__design.html#autotoc_md93", null ] + [ "Algorithm", "md_doc_2ondemand__design.html#autotoc_md121", [ + [ "DOM Parsers", "md_doc_2ondemand__design.html#autotoc_md117", null ], + [ "Event-Based Parsers (SAX, SAJ, etc.)", "md_doc_2ondemand__design.html#autotoc_md118", null ], + [ "Schema-Based Parser Generators", "md_doc_2ondemand__design.html#autotoc_md119", null ], + [ "Type Blindness and Branch Misprediction", "md_doc_2ondemand__design.html#autotoc_md120", null ], + [ "Starting the iteration", "md_doc_2ondemand__design.html#autotoc_md122", null ] ] ], - [ "Design Features", "md_doc_2ondemand__design.html#autotoc_md94", [ - [ "String Parsing", "md_doc_2ondemand__design.html#autotoc_md95", null ], - [ "Iteration Safety", "md_doc_2ondemand__design.html#autotoc_md96", null ], - [ "Benefits of the On-Demand Approach", "md_doc_2ondemand__design.html#autotoc_md97", null ], - [ "Limitations of the On-Demand Approach", "md_doc_2ondemand__design.html#autotoc_md98", null ], - [ "Applicability of the On-Demand Approach", "md_doc_2ondemand__design.html#autotoc_md99", null ] + [ "Design Features", "md_doc_2ondemand__design.html#autotoc_md123", [ + [ "String Parsing", "md_doc_2ondemand__design.html#autotoc_md124", null ], + [ "Iteration Safety", "md_doc_2ondemand__design.html#autotoc_md125", null ], + [ "Benefits of the On-Demand Approach", "md_doc_2ondemand__design.html#autotoc_md126", null ], + [ "Limitations of the On-Demand Approach", "md_doc_2ondemand__design.html#autotoc_md127", null ], + [ "Applicability of the On-Demand Approach", "md_doc_2ondemand__design.html#autotoc_md128", null ] ] ], - [ "Checking Your CPU Selection (x64 systems)", "md_doc_2ondemand__design.html#autotoc_md100", null ] + [ "Checking Your CPU Selection (x64 systems)", "md_doc_2ondemand__design.html#autotoc_md129", null ] ] ], [ "parse_many", "md_doc_2parse__many.html", [ - [ "Contents", "md_doc_2parse__many.html#autotoc_md101", null ], - [ "Motivation", "md_doc_2parse__many.html#autotoc_md102", null ], - [ "Performance", "md_doc_2parse__many.html#autotoc_md103", null ], - [ "How it works", "md_doc_2parse__many.html#autotoc_md104", [ - [ "Context", "md_doc_2parse__many.html#autotoc_md105", null ], - [ "Design", "md_doc_2parse__many.html#autotoc_md106", null ], - [ "Threads", "md_doc_2parse__many.html#autotoc_md107", null ] + [ "Contents", "md_doc_2parse__many.html#autotoc_md130", null ], + [ "Motivation", "md_doc_2parse__many.html#autotoc_md131", null ], + [ "Performance", "md_doc_2parse__many.html#autotoc_md132", null ], + [ "How it works", "md_doc_2parse__many.html#autotoc_md133", [ + [ "Context", "md_doc_2parse__many.html#autotoc_md134", null ], + [ "Design", "md_doc_2parse__many.html#autotoc_md135", null ], + [ "Threads", "md_doc_2parse__many.html#autotoc_md136", null ] ] ], - [ "Support", "md_doc_2parse__many.html#autotoc_md108", null ], - [ "API", "md_doc_2parse__many.html#autotoc_md109", null ], - [ "Use cases", "md_doc_2parse__many.html#autotoc_md110", null ], - [ "Tracking your position", "md_doc_2parse__many.html#autotoc_md111", null ], - [ "Incomplete streams", "md_doc_2parse__many.html#autotoc_md112", null ] + [ "Support", "md_doc_2parse__many.html#autotoc_md137", null ], + [ "API", "md_doc_2parse__many.html#autotoc_md138", null ], + [ "Use cases", "md_doc_2parse__many.html#autotoc_md139", null ], + [ "Tracking your position", "md_doc_2parse__many.html#autotoc_md140", null ], + [ "Incomplete streams", "md_doc_2parse__many.html#autotoc_md141", null ] ] ], [ "Performance Notes", "md_doc_2performance.html", [ - [ "NDEBUG macro", "md_doc_2performance.html#autotoc_md113", null ], - [ "Reusing the parser for maximum efficiency", "md_doc_2performance.html#autotoc_md114", null ], - [ "Reusing string buffers", "md_doc_2performance.html#autotoc_md115", null ], - [ "Server Loops: Long-Running Processes and Memory Capacity", "md_doc_2performance.html#autotoc_md116", null ], - [ "Large files and huge page support", "md_doc_2performance.html#autotoc_md117", null ], - [ "Number parsing", "md_doc_2performance.html#autotoc_md118", null ], - [ "Visual Studio", "md_doc_2performance.html#autotoc_md119", null ], - [ "Power Usage and Downclocking", "md_doc_2performance.html#autotoc_md120", null ], - [ "Free Padding", "md_doc_2performance.html#autotoc_md121", null ] + [ "NDEBUG macro", "md_doc_2performance.html#autotoc_md142", null ], + [ "Reusing the parser for maximum efficiency", "md_doc_2performance.html#autotoc_md143", null ], + [ "Reusing string buffers", "md_doc_2performance.html#autotoc_md144", null ], + [ "Server Loops: Long-Running Processes and Memory Capacity", "md_doc_2performance.html#autotoc_md145", null ], + [ "Large files and huge page support", "md_doc_2performance.html#autotoc_md146", null ], + [ "Number parsing", "md_doc_2performance.html#autotoc_md147", null ], + [ "Visual Studio", "md_doc_2performance.html#autotoc_md148", null ], + [ "Power Usage and Downclocking", "md_doc_2performance.html#autotoc_md149", null ], + [ "Free Padding", "md_doc_2performance.html#autotoc_md150", null ] ] ], [ "Tape structure in simdjson", "md_doc_2tape.html", [ - [ "Example", "md_doc_2tape.html#autotoc_md123", [ - [ "The Tape", "md_doc_2tape.html#autotoc_md124", null ] + [ "Example", "md_doc_2tape.html#autotoc_md152", [ + [ "The Tape", "md_doc_2tape.html#autotoc_md153", null ] ] ], - [ "General formal of the tape elements", "md_doc_2tape.html#autotoc_md125", null ], - [ "Simple JSON values", "md_doc_2tape.html#autotoc_md126", null ], - [ "Integer and Double values", "md_doc_2tape.html#autotoc_md127", null ], - [ "Root node", "md_doc_2tape.html#autotoc_md128", null ], - [ "Strings", "md_doc_2tape.html#autotoc_md129", null ], - [ "Arrays", "md_doc_2tape.html#autotoc_md130", null ], - [ "Objects", "md_doc_2tape.html#autotoc_md131", null ] + [ "General formal of the tape elements", "md_doc_2tape.html#autotoc_md154", null ], + [ "Simple JSON values", "md_doc_2tape.html#autotoc_md155", null ], + [ "Integer and Double values", "md_doc_2tape.html#autotoc_md156", null ], + [ "Root node", "md_doc_2tape.html#autotoc_md157", null ], + [ "Strings", "md_doc_2tape.html#autotoc_md158", null ], + [ "Arrays", "md_doc_2tape.html#autotoc_md159", null ], + [ "Objects", "md_doc_2tape.html#autotoc_md160", null ] ] ], [ "Deprecated List", "deprecated.html", null ], [ "Topics", "topics.html", "topics" ], @@ -224,8 +260,8 @@ var NAVTREEINDEX = "amalgamated_8h_source.html", "classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9", "classsimdjson_1_1implementation.html#aa3a7b818d56a54cca272191ec176f8f1", -"md_doc_2basics.html#autotoc_md22", -"simdjson_8h_source.html" +"md_doc_2basics.html#autotoc_md21", +"namespacesimdjson_1_1ppc64.html" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex0.js b/navtreeindex0.js index ad094dac3..9b9ab96a4 100644 --- a/navtreeindex0.js +++ b/navtreeindex0.js @@ -1,253 +1,253 @@ var NAVTREEINDEX0 = { -"amalgamated_8h_source.html":[13,0,0,0,4,1], -"annotated.html":[12,0], -"arm64_2base_8h_source.html":[13,0,0,0,0,0], -"arm64_2begin_8h_source.html":[13,0,0,0,0,1], -"arm64_2bitmanipulation_8h_source.html":[13,0,0,0,0,2], -"arm64_2bitmask_8h_source.html":[13,0,0,0,0,3], -"arm64_2end_8h_source.html":[13,0,0,0,0,4], -"arm64_2implementation_8h_source.html":[13,0,0,0,0,5], -"arm64_2intrinsics_8h_source.html":[13,0,0,0,0,6], -"arm64_2numberparsing__defs_8h_source.html":[13,0,0,0,0,7], -"arm64_2ondemand_8h_source.html":[13,0,0,0,0,8], -"arm64_2simd_8h_source.html":[13,0,0,0,0,9], -"arm64_2stringparsing__defs_8h_source.html":[13,0,0,0,0,10], -"arm64_8h_source.html":[13,0,0,0,13], -"array__iterator-inl_8h_source.html":[13,0,0,0,4,0,3], -"array__iterator_8h_source.html":[13,0,0,0,4,0,4], -"atomic__ptr_8h_source.html":[13,0,0,0,7,0], -"atomparsing_8h_source.html":[13,0,0,0,4,2], -"base_8h_source.html":[13,0,0,0,14], -"builtin_2base_8h_source.html":[13,0,0,0,1,0], -"builtin_2implementation_8h_source.html":[13,0,0,0,1,1], -"builtin_2ondemand_8h_source.html":[13,0,0,0,1,2], -"builtin_8h_source.html":[13,0,0,0,15], -"classes.html":[12,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html":[12,0,0,1,0,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a00bf1c41d3c5e001895959c700b9c9a0":[12,0,0,1,0,0,14], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a02fa5e731a90339bb72052a8aa0822ab":[12,0,0,1,0,0,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a106387a1848af00d9434d206a6cb9126":[12,0,0,1,0,0,16], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a190089808a84fcfe133b529455ec951e":[12,0,0,1,0,0,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a2440a83bb3a5d87599a1ced47bebbe37":[12,0,0,1,0,0,15], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a3221a8b59ab2c9a08b6530026ad202b1":[12,0,0,1,0,0,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a5b8e2a3427e050ce4798c6bbbfb25154":[12,0,0,1,0,0,13], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a78f07884d55f4ed3e82c07daa0ec81f7":[12,0,0,1,0,0,11], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a7f094bab497d4939adbe7196ec646068":[12,0,0,1,0,0,21], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8426e0339357dead16fa272590abc705":[12,0,0,1,0,0,23], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8b45f6e56bdc03f55d1bb6204a672bfa":[12,0,0,1,0,0,18], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8e4e7328f1d40078710853cb732d29fc":[12,0,0,1,0,0,19], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8ef2d52b7d6099cff5c69165edd8a7ef":[12,0,0,1,0,0,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a914d1fe0740448804f18be301e712da0":[12,0,0,1,0,0,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a987e3f57fc1124f0a67fef5ea6c06c82":[12,0,0,1,0,0,20], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9aaa18471e8b69c9dce68fdc48c6af0b":[12,0,0,1,0,0,10], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9e60d7ef555280671f0196b21668f07c":[12,0,0,1,0,0,12], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9ee1806825fd7b1fcf64725d783421d7":[12,0,0,1,0,0,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab05b1076615819d523e3dadba9431891":[12,0,0,1,0,0,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab8271f4c85aa4e54cecb58ec2c4758ff":[12,0,0,1,0,0,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab9ef09e54ad1ca9e44d21ce7a3d70d9a":[12,0,0,1,0,0,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#aba3c308bc23e73cd4fe0c154a7e2a22a":[12,0,0,1,0,0,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#abd3705658ebcf9442677f4a34a102975":[12,0,0,1,0,0,22], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#acff55a6c72df9c575f78d71400b0289a":[12,0,0,1,0,0,17], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html":[12,0,0,1,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a132a95e1147b80c2533d1632185a6a09":[12,0,0,1,2,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a4089d6265ec845fd85acd2db0973b858":[12,0,0,1,2,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a961b4870710d5ee1da938c4923d6f68d":[12,0,0,1,2,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9b82f3273bb2f2f83b8e085b7d9c6613":[12,0,0,1,2,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9c67c6c782f1296319a58ec1586f2329":[12,0,0,1,2,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html":[12,0,0,1,1,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a1c97143f7637414d737d58daeec2eb84":[12,0,0,1,1,0,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a240a8118a5b6f76962425134cc284764":[12,0,0,1,1,0,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a2d84851f9e4fc07b3e518ea957e2d9b6":[12,0,0,1,1,0,12], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a371cf8909f04019606063e8538fd7109":[12,0,0,1,1,0,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a73c2fc4db0c0b4083fafe706412d3b26":[12,0,0,1,1,0,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cb4bf0ca1890a4a3c86f69be40f17f2":[12,0,0,1,1,0,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cc89dada9999c2ecc319954cc3fc90a":[12,0,0,1,1,0,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a9f23e6ab13ad93c43e705ce7fe6134c9":[12,0,0,1,1,0,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aa9ec8526ef892cb3766faccf1a674e03":[12,0,0,1,1,0,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad00dfe364f8f9c97a2e0e8bb309a00b7":[12,0,0,1,1,0,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad8a7f0b418fae60160e403f71a5a8088":[12,0,0,1,1,0,10], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae482e8f5fa3233babbcb9ccc29db5a15":[12,0,0,1,1,0,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae7248918b09cb4cb1d866605c641679d":[12,0,0,1,1,0,11], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html":[12,0,0,1,1,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a1577fb5a95f92a4a1aaa8eee6440d572":[12,0,0,1,1,1,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a20cd55e63cf5bdc1561f771b4db1ac1b":[12,0,0,1,1,1,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a55e0ae33e5e5835c841fd082edab5937":[12,0,0,1,1,1,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#aa330b23feb572f33d77516431572b643":[12,0,0,1,1,1,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#abbca17b48bd6c2b045b659076f1f64ce":[12,0,0,1,1,1,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#ae7629ba7c3cec3be3bc61d5d79c154c1":[12,0,0,1,1,1,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html":[12,0,0,1,1,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a01c6bde0574654dc22ea219c3b3dbf51":[12,0,0,1,1,2,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a08307c0a5552cf8cb06613ed1de48eac":[12,0,0,1,1,2,38], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a15159e4995ec7c9dd9e4eb295699c593":[12,0,0,1,1,2,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1919a4ca6418c94ed54f026fbbda6f1d":[12,0,0,1,1,2,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1a450826deb3ba982c9f0ec6208cb246":[12,0,0,1,1,2,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a24fd6a8aa158b80d851e3a57c9fef642":[12,0,0,1,1,2,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2ae4c160def21463b0ab214a36c0a78e":[12,0,0,1,1,2,26], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2b04a9cd8c4ff9b591dc3f2db95c69cf":[12,0,0,1,1,2,22], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2fb5d36c429a48f039f4648dbf1ecf38":[12,0,0,1,1,2,15], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a3170300bc331577a1435bb238cf3faff":[12,0,0,1,1,2,32], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a41eaac87582a465b4c9f9834701a837d":[12,0,0,1,1,2,17], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4620d364a637031ef38661f9fb215ebc":[12,0,0,1,1,2,24], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4af5ddd8fc929969a4bb1e2a6e1c4ba7":[12,0,0,1,1,2,37], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4d221850d045f1e7ada4dfaaee0e145c":[12,0,0,1,1,2,28], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5083f65b71d7540ea785ec2b52604267":[12,0,0,1,1,2,34], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a54cd729a715a09bc9e706b7640233427":[12,0,0,1,1,2,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a58802e77b6fb25a3d2ec8a4d2482f9bf":[12,0,0,1,1,2,49], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5cb63d14a99509d751f4be45063fec95":[12,0,0,1,1,2,29], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5d50aa0d396fc49855d3c0c571b07a25":[12,0,0,1,1,2,41], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5ed59f01a0d4ad253f0e1c1f995ed0a7":[12,0,0,1,1,2,35], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a6abc08fb48868bdc5104c885c46ced82":[12,0,0,1,1,2,20], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a6cd27fe6dc9062b5380db757d49c3f7b":[12,0,0,1,1,2,42], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a74484485f4a3d8dce5943b0cb60ac815":[12,0,0,1,1,2,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a77bdebf4d2105efdd123cbf0a4906b1e":[12,0,0,1,1,2,52], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a7a79c0e85c9d40b53f0d4daeeb24111a":[12,0,0,1,1,2,11], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a7df7ba140c9d6398fef2c6963da82230":[12,0,0,1,1,2,39], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a81f19e6237c6a94ca3802ec5c8f334bd":[12,0,0,1,1,2,44], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a847db7139319155ef5fa2d4af7063163":[12,0,0,1,1,2,46], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a85e4b5250e316cc602b1b05bd097f771":[12,0,0,1,1,2,19], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a87b1fb46555fdf69761966e49ffaa9d7":[12,0,0,1,1,2,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a969e1000319391cd2bee3aed88481500":[12,0,0,1,1,2,53], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9909be358c78a64bc9ab7e11e3f2a47b":[12,0,0,1,1,2,18], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9afdfb30ac2aacabce09a5c9d7fd375a":[12,0,0,1,1,2,51], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9cc053001e8246e6e65bbcbf3db035c4":[12,0,0,1,1,2,50], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa3a27654a19c386ad0c775cff258cf0c":[12,0,0,1,1,2,48], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa89d66d993d0bffcbb85e303ad3950c2":[12,0,0,1,1,2,13], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aac4a4837e66c8f1243722ab04ce45436":[12,0,0,1,1,2,21], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab3b1b8825d53b381b715ae473c639848":[12,0,0,1,1,2,27], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab408c2ea4be8874e3514b389c70a5667":[12,0,0,1,1,2,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab691465a2a8c73b25aa7217324e06480":[12,0,0,1,1,2,43], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab89eda435b4a68be578fcb5c3da73980":[12,0,0,1,1,2,30], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab919032e611f7f4a1e8cc9eb47ad4dea":[12,0,0,1,1,2,12], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#abb3a7cc6f2391d26f27a28c16ca38c9c":[12,0,0,1,1,2,23], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ac2e6625884bd0fd12d93e3eff2214b1c":[12,0,0,1,1,2,45], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ac2ea8f4340d02d9062f81419da47500b":[12,0,0,1,1,2,36], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ad12185e1993ebcad73eb5ce82f5de8f7":[12,0,0,1,1,2,47], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae052e098bfbfde398845060a8d4f572f":[12,0,0,1,1,2,40], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae1db0154ef901ed1e8fb581bb9df6899":[12,0,0,1,1,2,31], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae896ac465551b036763e4465b3a16c7b":[12,0,0,1,1,2,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aea545f106413a9bc01cd19e6630a580d":[12,0,0,1,1,2,16], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af47e11e9925fd5d3d8a43cf0f7773992":[12,0,0,1,1,2,33], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af4c151ba820f579e149b4bf98e644a49":[12,0,0,1,1,2,10], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af689a9311baeed32bb4631b7cba05467":[12,0,0,1,1,2,14], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#afa3370b930da937911cf61ec9b047c56":[12,0,0,1,1,2,25], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html":[12,0,0,1,1,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html#a171191c8a51168aacb8159795ff97910":[12,0,0,1,1,3,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html#a47b30548f71aca4317bdc4c6955cd719":[12,0,0,1,1,3,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html":[12,0,0,1,1,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0a0d40ed80767c01232a6aacb6258b2b":[12,0,0,1,1,4,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0ac2a6ad0393eb4330b440c8c09290f2":[12,0,0,1,1,4,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a43723c86c43ee3533a3278b5cd2fe2d0":[12,0,0,1,1,4,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a6ec32f4aceb19fc554f04f6951979df4":[12,0,0,1,1,4,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#acd3fd372dfd30fcce1d6a103c6682d0e":[12,0,0,1,1,4,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#ae88253d9f6cef0dfc0bd05c45cdfc06f":[12,0,0,1,1,4,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#af12dc14d4d16b9f4f4602c738678cb0c":[12,0,0,1,1,4,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html":[12,0,0,1,1,4,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a03e0c8d93b86a18b10370d51b99548ef":[12,0,0,1,1,4,0,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a05396b8e8322363b523b3bf9730a31f1":[12,0,0,1,1,4,0,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a3b0ac5e3e64e53167a011afdd0b77345":[12,0,0,1,1,4,0,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a4111757108422ffaf647024319205d5c":[12,0,0,1,1,4,0,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a5fe3ce985cc1921d5917667d6b25841b":[12,0,0,1,1,4,0,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#ab6e957b9c6f9c15d6869be3642db0e6b":[12,0,0,1,1,4,0,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html":[12,0,0,1,1,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a248d65ae4cf327f277a5a48ba7480386":[12,0,0,1,1,5,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a2a86abd90e539324f097674fb66e1520":[12,0,0,1,1,5,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a421d8339349ee4f2618231f6106d24fa":[12,0,0,1,1,5,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a4f49d8e89feb3ca69cf85ce2aea80c0f":[12,0,0,1,1,5,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a598e64f8fff7f033b2e38057798799d9":[12,0,0,1,1,5,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a9415aecf3526ad6081be495c9be61b43":[12,0,0,1,1,5,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#ad5f688629f86f80dff49cab2270b1967":[12,0,0,1,1,5,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html":[12,0,0,1,1,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a034b27d7ff75832a574c2069af267111":[12,0,0,1,1,7,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a55d8bd31e2f5e6b10986af2f48a544fc":[12,0,0,1,1,7,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a71600033791f9c6bbc9f40fb2f82fdc8":[12,0,0,1,1,7,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a7eead0332d195ce78559dac428ae027d":[12,0,0,1,1,7,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aa25020165cc5a191026a243a10da6558":[12,0,0,1,1,7,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ad210f9115679a625ada433add55eff51":[12,0,0,1,1,7,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae0bc6b9803e0c989e9defaf3edcaaae4":[12,0,0,1,1,7,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae1bb196ae5f2aeabd8d95accdcd73498":[12,0,0,1,1,7,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae3d80f8e7f31c319fe6ee09c0860df83":[12,0,0,1,1,7,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aef6872e07743217fe2e2abe790a21d4c":[12,0,0,1,1,7,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html":[12,0,0,1,1,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html#a9fce67dabeb5dcccd16fa531febec666":[12,0,0,1,1,8,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html":[12,0,0,1,1,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a0da712132ca4180a84907f2ca4ffbc5b":[12,0,0,1,1,9,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a1c1fa76cb23d179fc4e98c2707bd9530":[12,0,0,1,1,9,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a27714b0095b036a169cabebdc1031937":[12,0,0,1,1,9,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a4a144d96ad06a2295137dd0e5b7dcc1d":[12,0,0,1,1,9,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a53ae6fd25ecdc64171a03f8e542b276c":[12,0,0,1,1,9,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a6c471139dab5371a25021158a7f07d17":[12,0,0,1,1,9,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a76abd4d78f0c26d80d3bf436ce212e00":[12,0,0,1,1,9,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a926e145e3ffb2b1024646dd56bc938e4":[12,0,0,1,1,9,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#aae981142ef15c75893ecc09ce897ed60":[12,0,0,1,1,9,10], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#ab6201f2eab41026e722a237d280b8fe1":[12,0,0,1,1,9,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#af996682250c05ca237fe6db234bb9179":[12,0,0,1,1,9,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html":[12,0,0,1,1,10], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a0ddac0ab1c69022610d8051b989b5c95":[12,0,0,1,1,10,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a11bccba8ede5e7dff56e2737fcb853c7":[12,0,0,1,1,10,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a3d8f15d3b004acd695b6fff5ba94b515":[12,0,0,1,1,10,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a78b420ddb8a0570ee973cdfbccd31c9a":[12,0,0,1,1,10,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a8736f5e397a3e0a55090aadee0596214":[12,0,0,1,1,10,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#aa3165ea813c4c15fb9cb282e67abe6af":[12,0,0,1,1,10,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#acf64001cc9961cd01712211b778e760b":[12,0,0,1,1,10,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#ae35cf7c026285a1108e85dd2cc7fd109":[12,0,0,1,1,10,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#affa14023a66c65f906ee3e673443d943":[12,0,0,1,1,10,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html":[12,0,0,1,1,11], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a04f1c591d93d834377a9cb916c90e09b":[12,0,0,1,1,11,32], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a06258e49f2dbb910beeaf6814ff7e071":[12,0,0,1,1,11,9], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a1588a173b15a20cacf77a24d07032d83":[12,0,0,1,1,11,11], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a15d0315e3a6b6975d57de5928263fbdf":[12,0,0,1,1,11,13], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2701c283de019e56624e930e936e0df0":[12,0,0,1,1,11,31], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2f46079741d1ba316de32bb9765c5082":[12,0,0,1,1,11,22], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2fdcc51cac791c3a2f4c970764bc0155":[12,0,0,1,1,11,15], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a30f182e71d3c13d2656ba5983862be57":[12,0,0,1,1,11,38], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a37427e768435aafef5af097b8cc3cfec":[12,0,0,1,1,11,45], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a3bde0795cb309f3e51b8388fbafc1fe4":[12,0,0,1,1,11,23], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a481e2b0b216d29038ddca3242a7047ad":[12,0,0,1,1,11,6], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a4d381cbad85e6b5498328f2c9bacb8ab":[12,0,0,1,1,11,42], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a53f99cedf58e62c1382a4d5a585e05a0":[12,0,0,1,1,11,37], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a547e99f2f430ca39bf4060d090f45ff7":[12,0,0,1,1,11,20], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a55f04607ee4e718294a572f9b6ad94cc":[12,0,0,1,1,11,7], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a566af762e86914a1ab6eb2e5df7a02bb":[12,0,0,1,1,11,26], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a5ab2c9c7d29a7a6c09f78930b0100836":[12,0,0,1,1,11,30], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6ed00f1588087b2d0de926c4599366d6":[12,0,0,1,1,11,10], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6f6c6d98a3605c8e04cad16fce05c16c":[12,0,0,1,1,11,3], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a7188b9843c2b3b3050c54b52d5b6886f":[12,0,0,1,1,11,1], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a821e11bc3b6b3f16fa7d6b15c77c17d3":[12,0,0,1,1,11,47], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a85d69a32b4b95f353abe6214ecc98619":[12,0,0,1,1,11,40], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a88d1cdc3124965d707754af4fcfae7f9":[12,0,0,1,1,11,5], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a89519c599fd938a6a750262111fc5757":[12,0,0,1,1,11,39], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8bc2eb9eeeb7e2e0b82c23ed4d254933":[12,0,0,1,1,11,28], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8bcd64ae6b4d204c4b6b2a8420e0270c":[12,0,0,1,1,11,8], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8c2618e57ec26501dd93ff8fd5cc2191":[12,0,0,1,1,11,33], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8e5f2ff46639e6c1cffb73d4e071e491":[12,0,0,1,1,11,41], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9271a0be9a741a34c3a63f77363963a6":[12,0,0,1,1,11,44], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a93756146a65e835b9358cc652dc53396":[12,0,0,1,1,11,35], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9a5ebeb4a79fa1d997f9f3478370a57e":[12,0,0,1,1,11,17], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9d574e04d5dfde0bf99dea4926232fe4":[12,0,0,1,1,11,25], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aa0e07db099e651d3e5279872683cb7dd":[12,0,0,1,1,11,16], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aa89c4aceb7e052a1f7ff7e4058b651f1":[12,0,0,1,1,11,21], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aadd2f646a3231d407948bf5f3da46528":[12,0,0,1,1,11,4], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab7bb6749f40bec70c8a1a31edad53c1d":[12,0,0,1,1,11,29], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab7e4b28c0d9637cf1b04554d99c0e3b3":[12,0,0,1,1,11,19], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab96f6c19a1866863a110e8bcc93e0392":[12,0,0,1,1,11,0], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#abeb77b7f73cd6001d8c65f249901ece4":[12,0,0,1,1,11,14], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ac39965b3006b8f19ed576ce99b7534c5":[12,0,0,1,1,11,48], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ac8b8d7d4bc7958363b7f0d380b248a4f":[12,0,0,1,1,11,18], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aca8b183c4e674a5b4ade8f6d2780f815":[12,0,0,1,1,11,24], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acb1514c00a87027c5eb3c81171a3b874":[12,0,0,1,1,11,12], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acc369e813e7cf4a97564bb0d85f76db3":[12,0,0,1,1,11,2], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#adaa7bb2c9b3988476f3317ddda27e22d":[12,0,0,1,1,11,27], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ae75aa0d09a10682fd30dc4e8e25d0a73":[12,0,0,1,1,11,46], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#af7b51d9048d388235f3936c8fa30a2f7":[12,0,0,1,1,11,36], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#afb7be23d4f1006d5eae234d8c8c8d286":[12,0,0,1,1,11,43], -"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#afd4052d4ebe0a500a051f5048206a9c8":[12,0,0,1,1,11,34], -"classsimdjson_1_1dom_1_1array.html":[11,0,0,1,0], -"classsimdjson_1_1dom_1_1array.html":[12,0,0,0,0], -"classsimdjson_1_1dom_1_1array.html#a00a9dd263b7628a6965c7e6a25cd96a6":[12,0,0,0,0,8], -"classsimdjson_1_1dom_1_1array.html#a00a9dd263b7628a6965c7e6a25cd96a6":[11,0,0,1,0,8], -"classsimdjson_1_1dom_1_1array.html#a1ad9d74fd73844ca1ebcaaa88025860a":[11,0,0,1,0,4], -"classsimdjson_1_1dom_1_1array.html#a1ad9d74fd73844ca1ebcaaa88025860a":[12,0,0,0,0,4], -"classsimdjson_1_1dom_1_1array.html#a26e66312190e016c22093292974490ff":[12,0,0,0,0,9], -"classsimdjson_1_1dom_1_1array.html#a26e66312190e016c22093292974490ff":[11,0,0,1,0,9] +"amalgamated_8h_source.html":[14,0,0,0,4,1], +"annotated.html":[13,0], +"arm64_2base_8h_source.html":[14,0,0,0,0,0], +"arm64_2begin_8h_source.html":[14,0,0,0,0,1], +"arm64_2bitmanipulation_8h_source.html":[14,0,0,0,0,2], +"arm64_2bitmask_8h_source.html":[14,0,0,0,0,3], +"arm64_2end_8h_source.html":[14,0,0,0,0,4], +"arm64_2implementation_8h_source.html":[14,0,0,0,0,5], +"arm64_2intrinsics_8h_source.html":[14,0,0,0,0,6], +"arm64_2numberparsing__defs_8h_source.html":[14,0,0,0,0,7], +"arm64_2ondemand_8h_source.html":[14,0,0,0,0,8], +"arm64_2simd_8h_source.html":[14,0,0,0,0,9], +"arm64_2stringparsing__defs_8h_source.html":[14,0,0,0,0,10], +"arm64_8h_source.html":[14,0,0,0,13], +"array__iterator-inl_8h_source.html":[14,0,0,0,4,0,3], +"array__iterator_8h_source.html":[14,0,0,0,4,0,4], +"atomic__ptr_8h_source.html":[14,0,0,0,7,0], +"atomparsing_8h_source.html":[14,0,0,0,4,2], +"base_8h_source.html":[14,0,0,0,14], +"builtin_2base_8h_source.html":[14,0,0,0,1,0], +"builtin_2implementation_8h_source.html":[14,0,0,0,1,1], +"builtin_2ondemand_8h_source.html":[14,0,0,0,1,2], +"builtin_8h_source.html":[14,0,0,0,15], +"classes.html":[13,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html":[13,0,0,1,0,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a00bf1c41d3c5e001895959c700b9c9a0":[13,0,0,1,0,0,14], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a02fa5e731a90339bb72052a8aa0822ab":[13,0,0,1,0,0,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a106387a1848af00d9434d206a6cb9126":[13,0,0,1,0,0,16], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a190089808a84fcfe133b529455ec951e":[13,0,0,1,0,0,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a2440a83bb3a5d87599a1ced47bebbe37":[13,0,0,1,0,0,15], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a3221a8b59ab2c9a08b6530026ad202b1":[13,0,0,1,0,0,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a5b8e2a3427e050ce4798c6bbbfb25154":[13,0,0,1,0,0,13], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a78f07884d55f4ed3e82c07daa0ec81f7":[13,0,0,1,0,0,11], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a7f094bab497d4939adbe7196ec646068":[13,0,0,1,0,0,21], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8426e0339357dead16fa272590abc705":[13,0,0,1,0,0,23], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8b45f6e56bdc03f55d1bb6204a672bfa":[13,0,0,1,0,0,18], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8e4e7328f1d40078710853cb732d29fc":[13,0,0,1,0,0,19], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a8ef2d52b7d6099cff5c69165edd8a7ef":[13,0,0,1,0,0,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a914d1fe0740448804f18be301e712da0":[13,0,0,1,0,0,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a987e3f57fc1124f0a67fef5ea6c06c82":[13,0,0,1,0,0,20], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9aaa18471e8b69c9dce68fdc48c6af0b":[13,0,0,1,0,0,10], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9e60d7ef555280671f0196b21668f07c":[13,0,0,1,0,0,12], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#a9ee1806825fd7b1fcf64725d783421d7":[13,0,0,1,0,0,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab05b1076615819d523e3dadba9431891":[13,0,0,1,0,0,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab8271f4c85aa4e54cecb58ec2c4758ff":[13,0,0,1,0,0,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#ab9ef09e54ad1ca9e44d21ce7a3d70d9a":[13,0,0,1,0,0,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#aba3c308bc23e73cd4fe0c154a7e2a22a":[13,0,0,1,0,0,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#abd3705658ebcf9442677f4a34a102975":[13,0,0,1,0,0,22], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1builder_1_1string__builder.html#acff55a6c72df9c575f78d71400b0289a":[13,0,0,1,0,0,17], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html":[13,0,0,1,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a132a95e1147b80c2533d1632185a6a09":[13,0,0,1,2,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a4089d6265ec845fd85acd2db0973b858":[13,0,0,1,2,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a961b4870710d5ee1da938c4923d6f68d":[13,0,0,1,2,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9b82f3273bb2f2f83b8e085b7d9c6613":[13,0,0,1,2,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1dom__parser__implementation.html#a9c67c6c782f1296319a58ec1586f2329":[13,0,0,1,2,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html":[13,0,0,1,1,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a1c97143f7637414d737d58daeec2eb84":[13,0,0,1,1,0,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a240a8118a5b6f76962425134cc284764":[13,0,0,1,1,0,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a2d84851f9e4fc07b3e518ea957e2d9b6":[13,0,0,1,1,0,12], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a371cf8909f04019606063e8538fd7109":[13,0,0,1,1,0,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a73c2fc4db0c0b4083fafe706412d3b26":[13,0,0,1,1,0,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cb4bf0ca1890a4a3c86f69be40f17f2":[13,0,0,1,1,0,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a8cc89dada9999c2ecc319954cc3fc90a":[13,0,0,1,1,0,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#a9f23e6ab13ad93c43e705ce7fe6134c9":[13,0,0,1,1,0,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#aa9ec8526ef892cb3766faccf1a674e03":[13,0,0,1,1,0,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad00dfe364f8f9c97a2e0e8bb309a00b7":[13,0,0,1,1,0,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ad8a7f0b418fae60160e403f71a5a8088":[13,0,0,1,1,0,10], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae482e8f5fa3233babbcb9ccc29db5a15":[13,0,0,1,1,0,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array.html#ae7248918b09cb4cb1d866605c641679d":[13,0,0,1,1,0,11], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html":[13,0,0,1,1,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a1577fb5a95f92a4a1aaa8eee6440d572":[13,0,0,1,1,1,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a20cd55e63cf5bdc1561f771b4db1ac1b":[13,0,0,1,1,1,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#a55e0ae33e5e5835c841fd082edab5937":[13,0,0,1,1,1,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#aa330b23feb572f33d77516431572b643":[13,0,0,1,1,1,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#abbca17b48bd6c2b045b659076f1f64ce":[13,0,0,1,1,1,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array__iterator.html#ae7629ba7c3cec3be3bc61d5d79c154c1":[13,0,0,1,1,1,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html":[13,0,0,1,1,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a01c6bde0574654dc22ea219c3b3dbf51":[13,0,0,1,1,2,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a08307c0a5552cf8cb06613ed1de48eac":[13,0,0,1,1,2,38], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a15159e4995ec7c9dd9e4eb295699c593":[13,0,0,1,1,2,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1919a4ca6418c94ed54f026fbbda6f1d":[13,0,0,1,1,2,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a1a450826deb3ba982c9f0ec6208cb246":[13,0,0,1,1,2,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a24fd6a8aa158b80d851e3a57c9fef642":[13,0,0,1,1,2,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2ae4c160def21463b0ab214a36c0a78e":[13,0,0,1,1,2,26], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2b04a9cd8c4ff9b591dc3f2db95c69cf":[13,0,0,1,1,2,22], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a2fb5d36c429a48f039f4648dbf1ecf38":[13,0,0,1,1,2,15], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a3170300bc331577a1435bb238cf3faff":[13,0,0,1,1,2,32], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a41eaac87582a465b4c9f9834701a837d":[13,0,0,1,1,2,17], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4620d364a637031ef38661f9fb215ebc":[13,0,0,1,1,2,24], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4af5ddd8fc929969a4bb1e2a6e1c4ba7":[13,0,0,1,1,2,37], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a4d221850d045f1e7ada4dfaaee0e145c":[13,0,0,1,1,2,28], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5083f65b71d7540ea785ec2b52604267":[13,0,0,1,1,2,34], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a54cd729a715a09bc9e706b7640233427":[13,0,0,1,1,2,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a58802e77b6fb25a3d2ec8a4d2482f9bf":[13,0,0,1,1,2,49], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5cb63d14a99509d751f4be45063fec95":[13,0,0,1,1,2,29], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5d50aa0d396fc49855d3c0c571b07a25":[13,0,0,1,1,2,41], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a5ed59f01a0d4ad253f0e1c1f995ed0a7":[13,0,0,1,1,2,35], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a6abc08fb48868bdc5104c885c46ced82":[13,0,0,1,1,2,20], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a6cd27fe6dc9062b5380db757d49c3f7b":[13,0,0,1,1,2,42], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a74484485f4a3d8dce5943b0cb60ac815":[13,0,0,1,1,2,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a77bdebf4d2105efdd123cbf0a4906b1e":[13,0,0,1,1,2,52], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a7a79c0e85c9d40b53f0d4daeeb24111a":[13,0,0,1,1,2,11], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a7df7ba140c9d6398fef2c6963da82230":[13,0,0,1,1,2,39], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a81f19e6237c6a94ca3802ec5c8f334bd":[13,0,0,1,1,2,44], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a847db7139319155ef5fa2d4af7063163":[13,0,0,1,1,2,46], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a85e4b5250e316cc602b1b05bd097f771":[13,0,0,1,1,2,19], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a87b1fb46555fdf69761966e49ffaa9d7":[13,0,0,1,1,2,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a969e1000319391cd2bee3aed88481500":[13,0,0,1,1,2,53], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9909be358c78a64bc9ab7e11e3f2a47b":[13,0,0,1,1,2,18], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9afdfb30ac2aacabce09a5c9d7fd375a":[13,0,0,1,1,2,51], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#a9cc053001e8246e6e65bbcbf3db035c4":[13,0,0,1,1,2,50], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa3a27654a19c386ad0c775cff258cf0c":[13,0,0,1,1,2,48], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aa89d66d993d0bffcbb85e303ad3950c2":[13,0,0,1,1,2,13], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aac4a4837e66c8f1243722ab04ce45436":[13,0,0,1,1,2,21], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab3b1b8825d53b381b715ae473c639848":[13,0,0,1,1,2,27], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab408c2ea4be8874e3514b389c70a5667":[13,0,0,1,1,2,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab691465a2a8c73b25aa7217324e06480":[13,0,0,1,1,2,43], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab89eda435b4a68be578fcb5c3da73980":[13,0,0,1,1,2,30], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ab919032e611f7f4a1e8cc9eb47ad4dea":[13,0,0,1,1,2,12], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#abb3a7cc6f2391d26f27a28c16ca38c9c":[13,0,0,1,1,2,23], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ac2e6625884bd0fd12d93e3eff2214b1c":[13,0,0,1,1,2,45], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ac2ea8f4340d02d9062f81419da47500b":[13,0,0,1,1,2,36], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ad12185e1993ebcad73eb5ce82f5de8f7":[13,0,0,1,1,2,47], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae052e098bfbfde398845060a8d4f572f":[13,0,0,1,1,2,40], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae1db0154ef901ed1e8fb581bb9df6899":[13,0,0,1,1,2,31], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#ae896ac465551b036763e4465b3a16c7b":[13,0,0,1,1,2,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#aea545f106413a9bc01cd19e6630a580d":[13,0,0,1,1,2,16], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af47e11e9925fd5d3d8a43cf0f7773992":[13,0,0,1,1,2,33], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af4c151ba820f579e149b4bf98e644a49":[13,0,0,1,1,2,10], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#af689a9311baeed32bb4631b7cba05467":[13,0,0,1,1,2,14], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document.html#afa3370b930da937911cf61ec9b047c56":[13,0,0,1,1,2,25], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html":[13,0,0,1,1,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html#a171191c8a51168aacb8159795ff97910":[13,0,0,1,1,3,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference.html#a47b30548f71aca4317bdc4c6955cd719":[13,0,0,1,1,3,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html":[13,0,0,1,1,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0a0d40ed80767c01232a6aacb6258b2b":[13,0,0,1,1,4,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a0ac2a6ad0393eb4330b440c8c09290f2":[13,0,0,1,1,4,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a43723c86c43ee3533a3278b5cd2fe2d0":[13,0,0,1,1,4,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#a6ec32f4aceb19fc554f04f6951979df4":[13,0,0,1,1,4,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#acd3fd372dfd30fcce1d6a103c6682d0e":[13,0,0,1,1,4,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#ae88253d9f6cef0dfc0bd05c45cdfc06f":[13,0,0,1,1,4,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream.html#af12dc14d4d16b9f4f4602c738678cb0c":[13,0,0,1,1,4,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html":[13,0,0,1,1,4,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a03e0c8d93b86a18b10370d51b99548ef":[13,0,0,1,1,4,0,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a05396b8e8322363b523b3bf9730a31f1":[13,0,0,1,1,4,0,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a3b0ac5e3e64e53167a011afdd0b77345":[13,0,0,1,1,4,0,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a4111757108422ffaf647024319205d5c":[13,0,0,1,1,4,0,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#a5fe3ce985cc1921d5917667d6b25841b":[13,0,0,1,1,4,0,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__stream_1_1iterator.html#ab6e957b9c6f9c15d6869be3642db0e6b":[13,0,0,1,1,4,0,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html":[13,0,0,1,1,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a248d65ae4cf327f277a5a48ba7480386":[13,0,0,1,1,5,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a2a86abd90e539324f097674fb66e1520":[13,0,0,1,1,5,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a421d8339349ee4f2618231f6106d24fa":[13,0,0,1,1,5,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a4f49d8e89feb3ca69cf85ce2aea80c0f":[13,0,0,1,1,5,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a598e64f8fff7f033b2e38057798799d9":[13,0,0,1,1,5,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#a9415aecf3526ad6081be495c9be61b43":[13,0,0,1,1,5,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field.html#ad5f688629f86f80dff49cab2270b1967":[13,0,0,1,1,5,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html":[13,0,0,1,1,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a034b27d7ff75832a574c2069af267111":[13,0,0,1,1,7,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a55d8bd31e2f5e6b10986af2f48a544fc":[13,0,0,1,1,7,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a71600033791f9c6bbc9f40fb2f82fdc8":[13,0,0,1,1,7,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#a7eead0332d195ce78559dac428ae027d":[13,0,0,1,1,7,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aa25020165cc5a191026a243a10da6558":[13,0,0,1,1,7,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ad210f9115679a625ada433add55eff51":[13,0,0,1,1,7,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae0bc6b9803e0c989e9defaf3edcaaae4":[13,0,0,1,1,7,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae1bb196ae5f2aeabd8d95accdcd73498":[13,0,0,1,1,7,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#ae3d80f8e7f31c319fe6ee09c0860df83":[13,0,0,1,1,7,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object.html#aef6872e07743217fe2e2abe790a21d4c":[13,0,0,1,1,7,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html":[13,0,0,1,1,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object__iterator.html#a9fce67dabeb5dcccd16fa531febec666":[13,0,0,1,1,8,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html":[13,0,0,1,1,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a0da712132ca4180a84907f2ca4ffbc5b":[13,0,0,1,1,9,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a1c1fa76cb23d179fc4e98c2707bd9530":[13,0,0,1,1,9,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a27714b0095b036a169cabebdc1031937":[13,0,0,1,1,9,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a4a144d96ad06a2295137dd0e5b7dcc1d":[13,0,0,1,1,9,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a53ae6fd25ecdc64171a03f8e542b276c":[13,0,0,1,1,9,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a6c471139dab5371a25021158a7f07d17":[13,0,0,1,1,9,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a76abd4d78f0c26d80d3bf436ce212e00":[13,0,0,1,1,9,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#a926e145e3ffb2b1024646dd56bc938e4":[13,0,0,1,1,9,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#aae981142ef15c75893ecc09ce897ed60":[13,0,0,1,1,9,10], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#ab6201f2eab41026e722a237d280b8fe1":[13,0,0,1,1,9,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1parser.html#af996682250c05ca237fe6db234bb9179":[13,0,0,1,1,9,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html":[13,0,0,1,1,10], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a0ddac0ab1c69022610d8051b989b5c95":[13,0,0,1,1,10,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a11bccba8ede5e7dff56e2737fcb853c7":[13,0,0,1,1,10,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a3d8f15d3b004acd695b6fff5ba94b515":[13,0,0,1,1,10,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a78b420ddb8a0570ee973cdfbccd31c9a":[13,0,0,1,1,10,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#a8736f5e397a3e0a55090aadee0596214":[13,0,0,1,1,10,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#aa3165ea813c4c15fb9cb282e67abe6af":[13,0,0,1,1,10,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#acf64001cc9961cd01712211b778e760b":[13,0,0,1,1,10,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#ae35cf7c026285a1108e85dd2cc7fd109":[13,0,0,1,1,10,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1raw__json__string.html#affa14023a66c65f906ee3e673443d943":[13,0,0,1,1,10,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html":[13,0,0,1,1,11], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a04f1c591d93d834377a9cb916c90e09b":[13,0,0,1,1,11,32], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a06258e49f2dbb910beeaf6814ff7e071":[13,0,0,1,1,11,9], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a1588a173b15a20cacf77a24d07032d83":[13,0,0,1,1,11,11], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a15d0315e3a6b6975d57de5928263fbdf":[13,0,0,1,1,11,13], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2701c283de019e56624e930e936e0df0":[13,0,0,1,1,11,31], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2f46079741d1ba316de32bb9765c5082":[13,0,0,1,1,11,22], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a2fdcc51cac791c3a2f4c970764bc0155":[13,0,0,1,1,11,15], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a30f182e71d3c13d2656ba5983862be57":[13,0,0,1,1,11,38], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a37427e768435aafef5af097b8cc3cfec":[13,0,0,1,1,11,45], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a3bde0795cb309f3e51b8388fbafc1fe4":[13,0,0,1,1,11,23], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a481e2b0b216d29038ddca3242a7047ad":[13,0,0,1,1,11,6], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a4d381cbad85e6b5498328f2c9bacb8ab":[13,0,0,1,1,11,42], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a53f99cedf58e62c1382a4d5a585e05a0":[13,0,0,1,1,11,37], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a547e99f2f430ca39bf4060d090f45ff7":[13,0,0,1,1,11,20], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a55f04607ee4e718294a572f9b6ad94cc":[13,0,0,1,1,11,7], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a566af762e86914a1ab6eb2e5df7a02bb":[13,0,0,1,1,11,26], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a5ab2c9c7d29a7a6c09f78930b0100836":[13,0,0,1,1,11,30], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6ed00f1588087b2d0de926c4599366d6":[13,0,0,1,1,11,10], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a6f6c6d98a3605c8e04cad16fce05c16c":[13,0,0,1,1,11,3], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a7188b9843c2b3b3050c54b52d5b6886f":[13,0,0,1,1,11,1], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a821e11bc3b6b3f16fa7d6b15c77c17d3":[13,0,0,1,1,11,47], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a85d69a32b4b95f353abe6214ecc98619":[13,0,0,1,1,11,40], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a88d1cdc3124965d707754af4fcfae7f9":[13,0,0,1,1,11,5], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a89519c599fd938a6a750262111fc5757":[13,0,0,1,1,11,39], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8bc2eb9eeeb7e2e0b82c23ed4d254933":[13,0,0,1,1,11,28], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8bcd64ae6b4d204c4b6b2a8420e0270c":[13,0,0,1,1,11,8], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8c2618e57ec26501dd93ff8fd5cc2191":[13,0,0,1,1,11,33], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a8e5f2ff46639e6c1cffb73d4e071e491":[13,0,0,1,1,11,41], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9271a0be9a741a34c3a63f77363963a6":[13,0,0,1,1,11,44], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a93756146a65e835b9358cc652dc53396":[13,0,0,1,1,11,35], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9a5ebeb4a79fa1d997f9f3478370a57e":[13,0,0,1,1,11,17], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#a9d574e04d5dfde0bf99dea4926232fe4":[13,0,0,1,1,11,25], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aa0e07db099e651d3e5279872683cb7dd":[13,0,0,1,1,11,16], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aa89c4aceb7e052a1f7ff7e4058b651f1":[13,0,0,1,1,11,21], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aadd2f646a3231d407948bf5f3da46528":[13,0,0,1,1,11,4], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab7bb6749f40bec70c8a1a31edad53c1d":[13,0,0,1,1,11,29], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab7e4b28c0d9637cf1b04554d99c0e3b3":[13,0,0,1,1,11,19], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ab96f6c19a1866863a110e8bcc93e0392":[13,0,0,1,1,11,0], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#abeb77b7f73cd6001d8c65f249901ece4":[13,0,0,1,1,11,14], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ac39965b3006b8f19ed576ce99b7534c5":[13,0,0,1,1,11,48], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ac8b8d7d4bc7958363b7f0d380b248a4f":[13,0,0,1,1,11,18], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#aca8b183c4e674a5b4ade8f6d2780f815":[13,0,0,1,1,11,24], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acb1514c00a87027c5eb3c81171a3b874":[13,0,0,1,1,11,12], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#acc369e813e7cf4a97564bb0d85f76db3":[13,0,0,1,1,11,2], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#adaa7bb2c9b3988476f3317ddda27e22d":[13,0,0,1,1,11,27], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#ae75aa0d09a10682fd30dc4e8e25d0a73":[13,0,0,1,1,11,46], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#af7b51d9048d388235f3936c8fa30a2f7":[13,0,0,1,1,11,36], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#afb7be23d4f1006d5eae234d8c8c8d286":[13,0,0,1,1,11,43], +"classsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value.html#afd4052d4ebe0a500a051f5048206a9c8":[13,0,0,1,1,11,34], +"classsimdjson_1_1dom_1_1array.html":[13,0,0,0,0], +"classsimdjson_1_1dom_1_1array.html":[12,0,0,1,0], +"classsimdjson_1_1dom_1_1array.html#a00a9dd263b7628a6965c7e6a25cd96a6":[12,0,0,1,0,8], +"classsimdjson_1_1dom_1_1array.html#a00a9dd263b7628a6965c7e6a25cd96a6":[13,0,0,0,0,8], +"classsimdjson_1_1dom_1_1array.html#a1ad9d74fd73844ca1ebcaaa88025860a":[13,0,0,0,0,4], +"classsimdjson_1_1dom_1_1array.html#a1ad9d74fd73844ca1ebcaaa88025860a":[12,0,0,1,0,4], +"classsimdjson_1_1dom_1_1array.html#a26e66312190e016c22093292974490ff":[12,0,0,1,0,9], +"classsimdjson_1_1dom_1_1array.html#a26e66312190e016c22093292974490ff":[13,0,0,0,0,9] }; diff --git a/navtreeindex1.js b/navtreeindex1.js index f11300ab1..e95a72b9f 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -1,253 +1,253 @@ var NAVTREEINDEX1 = { -"classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9":[12,0,0,0,0,7], -"classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9":[11,0,0,1,0,7], -"classsimdjson_1_1dom_1_1array.html#a698f2f984d1a78a68962c06b2f047686":[11,0,0,1,0,12], -"classsimdjson_1_1dom_1_1array.html#a698f2f984d1a78a68962c06b2f047686":[12,0,0,0,0,12], -"classsimdjson_1_1dom_1_1array.html#a6a6373cc1542a7137b79978680a93d18":[12,0,0,0,0,2], -"classsimdjson_1_1dom_1_1array.html#a6a6373cc1542a7137b79978680a93d18":[11,0,0,1,0,2], -"classsimdjson_1_1dom_1_1array.html#a8141c7d98672bc3ab69fea7b63afcfb2":[11,0,0,1,0,5], -"classsimdjson_1_1dom_1_1array.html#a8141c7d98672bc3ab69fea7b63afcfb2":[12,0,0,0,0,5], -"classsimdjson_1_1dom_1_1array.html#a847fee5e11177e96b18f7318f4fd46c8":[12,0,0,0,0,10], -"classsimdjson_1_1dom_1_1array.html#a847fee5e11177e96b18f7318f4fd46c8":[11,0,0,1,0,10], -"classsimdjson_1_1dom_1_1array.html#a8b3d6eaec52a2b44965e53d874e367e9":[12,0,0,0,0,1], -"classsimdjson_1_1dom_1_1array.html#a8b3d6eaec52a2b44965e53d874e367e9":[11,0,0,1,0,1], -"classsimdjson_1_1dom_1_1array.html#aa9d596ea0c2e0a6732866d5d9c1fa3ec":[11,0,0,1,0,3], -"classsimdjson_1_1dom_1_1array.html#aa9d596ea0c2e0a6732866d5d9c1fa3ec":[12,0,0,0,0,3], -"classsimdjson_1_1dom_1_1array.html#aebd2b7ca5e1d87476ea2cd4fc9239a74":[12,0,0,0,0,6], -"classsimdjson_1_1dom_1_1array.html#aebd2b7ca5e1d87476ea2cd4fc9239a74":[11,0,0,1,0,6], -"classsimdjson_1_1dom_1_1array.html#aee39c0fbcf1f7f6b75e9a31d86bedfe8":[12,0,0,0,0,11], -"classsimdjson_1_1dom_1_1array.html#aee39c0fbcf1f7f6b75e9a31d86bedfe8":[11,0,0,1,0,11], -"classsimdjson_1_1dom_1_1array_1_1iterator.html":[11,0,0,1,0,0], -"classsimdjson_1_1dom_1_1array_1_1iterator.html":[12,0,0,0,0,0], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a2680a46eeece638bc352bcf6a169bcf6":[11,0,0,1,0,0,0], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a2680a46eeece638bc352bcf6a169bcf6":[12,0,0,0,0,0,0], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a46454681bd5e3a938c04eb89210e7966":[12,0,0,0,0,0,3], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a46454681bd5e3a938c04eb89210e7966":[11,0,0,1,0,0,3], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a6ec91111a2bcc9e378d30b47b613fac5":[11,0,0,1,0,0,2], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a6ec91111a2bcc9e378d30b47b613fac5":[12,0,0,0,0,0,2], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a90254656d4e7a8826246d1f931647eff":[11,0,0,1,0,0,1], -"classsimdjson_1_1dom_1_1array_1_1iterator.html#a90254656d4e7a8826246d1f931647eff":[12,0,0,0,0,0,1], -"classsimdjson_1_1dom_1_1document.html":[12,0,0,0,1], -"classsimdjson_1_1dom_1_1document.html":[11,0,0,1,1], -"classsimdjson_1_1dom_1_1document.html#a6947c9d79453071ca73d06e398bcdd2a":[12,0,0,0,1,0], -"classsimdjson_1_1dom_1_1document.html#a6947c9d79453071ca73d06e398bcdd2a":[11,0,0,1,1,0], -"classsimdjson_1_1dom_1_1document.html#ae19dced0eee5f63b9d1591ef51dcda4e":[12,0,0,0,1,3], -"classsimdjson_1_1dom_1_1document.html#ae19dced0eee5f63b9d1591ef51dcda4e":[11,0,0,1,1,3], -"classsimdjson_1_1dom_1_1document.html#aeb1930eabfeb1b1ad38102bda81f8ca2":[12,0,0,0,1,2], -"classsimdjson_1_1dom_1_1document.html#aeb1930eabfeb1b1ad38102bda81f8ca2":[11,0,0,1,1,2], -"classsimdjson_1_1dom_1_1document.html#af34f108b46f82428bfe4ea33869358f0":[11,0,0,1,1,1], -"classsimdjson_1_1dom_1_1document.html#af34f108b46f82428bfe4ea33869358f0":[12,0,0,0,1,1], -"classsimdjson_1_1dom_1_1document__stream.html":[11,0,0,1,2], -"classsimdjson_1_1dom_1_1document__stream.html":[12,0,0,0,2], -"classsimdjson_1_1dom_1_1document__stream.html#a2a08525ae815167b73b6393a8999e46b":[11,0,0,1,2,6], -"classsimdjson_1_1dom_1_1document__stream.html#a2a08525ae815167b73b6393a8999e46b":[12,0,0,0,2,6], -"classsimdjson_1_1dom_1_1document__stream.html#a6c2a07e08213dc9a51754940942f9e69":[11,0,0,1,2,7], -"classsimdjson_1_1dom_1_1document__stream.html#a6c2a07e08213dc9a51754940942f9e69":[12,0,0,0,2,7], -"classsimdjson_1_1dom_1_1document__stream.html#a9a51df3d81c9b7849bbbc8ae42096b76":[11,0,0,1,2,3], -"classsimdjson_1_1dom_1_1document__stream.html#a9a51df3d81c9b7849bbbc8ae42096b76":[12,0,0,0,2,3], -"classsimdjson_1_1dom_1_1document__stream.html#a9d6bb44a7d8f818c401d65fb80f6a523":[11,0,0,1,2,2], -"classsimdjson_1_1dom_1_1document__stream.html#a9d6bb44a7d8f818c401d65fb80f6a523":[12,0,0,0,2,2], -"classsimdjson_1_1dom_1_1document__stream.html#abd3e3d38eb32c0cb1a124f89978607a5":[11,0,0,1,2,5], -"classsimdjson_1_1dom_1_1document__stream.html#abd3e3d38eb32c0cb1a124f89978607a5":[12,0,0,0,2,5], -"classsimdjson_1_1dom_1_1document__stream.html#adec1e168e4188bf9c90ee87adbd72850":[11,0,0,1,2,4], -"classsimdjson_1_1dom_1_1document__stream.html#adec1e168e4188bf9c90ee87adbd72850":[12,0,0,0,2,4], -"classsimdjson_1_1dom_1_1document__stream.html#ae6ee894790448145e11a456f12253364":[11,0,0,1,2,1], -"classsimdjson_1_1dom_1_1document__stream.html#ae6ee894790448145e11a456f12253364":[12,0,0,0,2,1], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html":[12,0,0,0,2,0], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html":[11,0,0,1,2,0], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a09b193fe348fa8a267b96edd96f7515e":[12,0,0,0,2,0,2], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a09b193fe348fa8a267b96edd96f7515e":[11,0,0,1,2,0,2], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a56c69d73c7e424e008a28771661ab218":[12,0,0,0,2,0,1], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a56c69d73c7e424e008a28771661ab218":[11,0,0,1,2,0,1], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a6c3a5002801ab80b1c59422d7f3400d3":[12,0,0,0,2,0,0], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a6c3a5002801ab80b1c59422d7f3400d3":[11,0,0,1,2,0,0], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a7b05ed75aa2b2a6d3a17204b9863956a":[12,0,0,0,2,0,3], -"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a7b05ed75aa2b2a6d3a17204b9863956a":[11,0,0,1,2,0,3], -"classsimdjson_1_1dom_1_1element.html":[11,0,0,1,3], -"classsimdjson_1_1dom_1_1element.html":[12,0,0,0,3], -"classsimdjson_1_1dom_1_1element.html#a08c7dcebf9e96fe5e4dd6df2959c0024":[12,0,0,0,3,27], -"classsimdjson_1_1dom_1_1element.html#a08c7dcebf9e96fe5e4dd6df2959c0024":[11,0,0,1,3,27], -"classsimdjson_1_1dom_1_1element.html#a0d11f69ba87f55960be6f655e4e99aba":[11,0,0,1,3,23], -"classsimdjson_1_1dom_1_1element.html#a0d11f69ba87f55960be6f655e4e99aba":[12,0,0,0,3,23], -"classsimdjson_1_1dom_1_1element.html#a19162bf6d94fb6c21bb2bf2e9b78ff0d":[12,0,0,0,3,43], -"classsimdjson_1_1dom_1_1element.html#a19162bf6d94fb6c21bb2bf2e9b78ff0d":[11,0,0,1,3,43], -"classsimdjson_1_1dom_1_1element.html#a1e3f78b3bee5ec3f33cc4b03dcc87981":[11,0,0,1,3,26], -"classsimdjson_1_1dom_1_1element.html#a1e3f78b3bee5ec3f33cc4b03dcc87981":[12,0,0,0,3,26], -"classsimdjson_1_1dom_1_1element.html#a23f4d8c38309b0184e658d8a9697a177":[12,0,0,0,3,35], -"classsimdjson_1_1dom_1_1element.html#a23f4d8c38309b0184e658d8a9697a177":[11,0,0,1,3,35], -"classsimdjson_1_1dom_1_1element.html#a2428a280035930e432570fb08712c4de":[11,0,0,1,3,9], -"classsimdjson_1_1dom_1_1element.html#a2428a280035930e432570fb08712c4de":[12,0,0,0,3,9], -"classsimdjson_1_1dom_1_1element.html#a29c21d70352c9b8af7144fd4f38baaa6":[12,0,0,0,3,13], -"classsimdjson_1_1dom_1_1element.html#a29c21d70352c9b8af7144fd4f38baaa6":[11,0,0,1,3,13], -"classsimdjson_1_1dom_1_1element.html#a2f9448091caf47e5ecc325956e14ed73":[11,0,0,1,3,38], -"classsimdjson_1_1dom_1_1element.html#a2f9448091caf47e5ecc325956e14ed73":[12,0,0,0,3,38], -"classsimdjson_1_1dom_1_1element.html#a3474c8fc1b1cb06625a50dcb9a2c5269":[12,0,0,0,3,10], -"classsimdjson_1_1dom_1_1element.html#a3474c8fc1b1cb06625a50dcb9a2c5269":[11,0,0,1,3,10], -"classsimdjson_1_1dom_1_1element.html#a367d22eeabc1881a8eb18bae2f2ba3b8":[11,0,0,1,3,40], -"classsimdjson_1_1dom_1_1element.html#a367d22eeabc1881a8eb18bae2f2ba3b8":[12,0,0,0,3,40], -"classsimdjson_1_1dom_1_1element.html#a3777fed88f37555f2d090aeb604a117c":[11,0,0,1,3,6], -"classsimdjson_1_1dom_1_1element.html#a3777fed88f37555f2d090aeb604a117c":[12,0,0,0,3,6], -"classsimdjson_1_1dom_1_1element.html#a3e74a8a6ef8318e2de805359126c6d7b":[11,0,0,1,3,14], -"classsimdjson_1_1dom_1_1element.html#a3e74a8a6ef8318e2de805359126c6d7b":[12,0,0,0,3,14], -"classsimdjson_1_1dom_1_1element.html#a4c77063d766c7db197f8674407b504d7":[11,0,0,1,3,20], -"classsimdjson_1_1dom_1_1element.html#a4c77063d766c7db197f8674407b504d7":[12,0,0,0,3,20], -"classsimdjson_1_1dom_1_1element.html#a5185447e6bf8949e7c5e9c22711e8764":[11,0,0,1,3,4], -"classsimdjson_1_1dom_1_1element.html#a5185447e6bf8949e7c5e9c22711e8764":[12,0,0,0,3,4], -"classsimdjson_1_1dom_1_1element.html#a5342161b8c52c78b2f5edac10e9d05ca":[11,0,0,1,3,42], -"classsimdjson_1_1dom_1_1element.html#a5342161b8c52c78b2f5edac10e9d05ca":[12,0,0,0,3,42], -"classsimdjson_1_1dom_1_1element.html#a548e0fc369eb455ea477e20fb0793627":[12,0,0,0,3,12], -"classsimdjson_1_1dom_1_1element.html#a548e0fc369eb455ea477e20fb0793627":[11,0,0,1,3,12], -"classsimdjson_1_1dom_1_1element.html#a65bd96042cc0f19dc3e0635937edded4":[12,0,0,0,3,28], -"classsimdjson_1_1dom_1_1element.html#a65bd96042cc0f19dc3e0635937edded4":[11,0,0,1,3,28], -"classsimdjson_1_1dom_1_1element.html#a686a21f39c755dcbf95116757d2193bd":[11,0,0,1,3,3], -"classsimdjson_1_1dom_1_1element.html#a686a21f39c755dcbf95116757d2193bd":[12,0,0,0,3,3], -"classsimdjson_1_1dom_1_1element.html#a71d6bfa627dd66e202f8b402f91a44ac":[12,0,0,0,3,30], -"classsimdjson_1_1dom_1_1element.html#a71d6bfa627dd66e202f8b402f91a44ac":[11,0,0,1,3,30], -"classsimdjson_1_1dom_1_1element.html#a743b5f1ef4202d8fb8fb317e612385f3":[12,0,0,0,3,33], -"classsimdjson_1_1dom_1_1element.html#a743b5f1ef4202d8fb8fb317e612385f3":[11,0,0,1,3,33], -"classsimdjson_1_1dom_1_1element.html#a83adcf723abff34d7c1e8ec0e69d967b":[12,0,0,0,3,36], -"classsimdjson_1_1dom_1_1element.html#a83adcf723abff34d7c1e8ec0e69d967b":[11,0,0,1,3,36], -"classsimdjson_1_1dom_1_1element.html#a846a790e93c9bad6c40641239bd77b28":[11,0,0,1,3,8], -"classsimdjson_1_1dom_1_1element.html#a846a790e93c9bad6c40641239bd77b28":[12,0,0,0,3,8], -"classsimdjson_1_1dom_1_1element.html#a87c75accdc0b35e06f3d554561ce8cd3":[12,0,0,0,3,11], -"classsimdjson_1_1dom_1_1element.html#a87c75accdc0b35e06f3d554561ce8cd3":[11,0,0,1,3,11], -"classsimdjson_1_1dom_1_1element.html#a8f9569b40dd2b23aab9fbf2229749589":[12,0,0,0,3,32], -"classsimdjson_1_1dom_1_1element.html#a8f9569b40dd2b23aab9fbf2229749589":[11,0,0,1,3,32], -"classsimdjson_1_1dom_1_1element.html#a9d92145af64401654c20d2885dd4051d":[11,0,0,1,3,18], -"classsimdjson_1_1dom_1_1element.html#a9d92145af64401654c20d2885dd4051d":[12,0,0,0,3,18], -"classsimdjson_1_1dom_1_1element.html#a9dbf81ad662ad32168025e8e08686935":[12,0,0,0,3,0], -"classsimdjson_1_1dom_1_1element.html#a9dbf81ad662ad32168025e8e08686935":[11,0,0,1,3,0], -"classsimdjson_1_1dom_1_1element.html#a9e5a750a066f17d5a9a31a24980e0b1d":[11,0,0,1,3,19], -"classsimdjson_1_1dom_1_1element.html#a9e5a750a066f17d5a9a31a24980e0b1d":[12,0,0,0,3,19], -"classsimdjson_1_1dom_1_1element.html#aa59ecf8e9ac7b1a9e977d2cd3f03aa7f":[12,0,0,0,3,7], -"classsimdjson_1_1dom_1_1element.html#aa59ecf8e9ac7b1a9e977d2cd3f03aa7f":[11,0,0,1,3,7], -"classsimdjson_1_1dom_1_1element.html#aa8b5798004a859bf922778226b8c1cce":[11,0,0,1,3,1], -"classsimdjson_1_1dom_1_1element.html#aa8b5798004a859bf922778226b8c1cce":[12,0,0,0,3,1], -"classsimdjson_1_1dom_1_1element.html#aa954cda836a4748ec9937291a9250604":[11,0,0,1,3,15], -"classsimdjson_1_1dom_1_1element.html#aa954cda836a4748ec9937291a9250604":[12,0,0,0,3,15], -"classsimdjson_1_1dom_1_1element.html#ab036e52a73d5bd046e1f2650a31dab30":[12,0,0,0,3,31], -"classsimdjson_1_1dom_1_1element.html#ab036e52a73d5bd046e1f2650a31dab30":[11,0,0,1,3,31], -"classsimdjson_1_1dom_1_1element.html#ab4c2e35dc44664eb04038ad35efc64f9":[12,0,0,0,3,16], -"classsimdjson_1_1dom_1_1element.html#ab4c2e35dc44664eb04038ad35efc64f9":[11,0,0,1,3,16], -"classsimdjson_1_1dom_1_1element.html#ac5017726a573f59c3494b92bb66a3beb":[12,0,0,0,3,29], -"classsimdjson_1_1dom_1_1element.html#ac5017726a573f59c3494b92bb66a3beb":[11,0,0,1,3,29], -"classsimdjson_1_1dom_1_1element.html#aca693f57d73a5ce95d1f7bedf67289b7":[12,0,0,0,3,41], -"classsimdjson_1_1dom_1_1element.html#aca693f57d73a5ce95d1f7bedf67289b7":[11,0,0,1,3,41], -"classsimdjson_1_1dom_1_1element.html#adadf66ec37675d5f3fac9816a8aacba2":[12,0,0,0,3,24], -"classsimdjson_1_1dom_1_1element.html#adadf66ec37675d5f3fac9816a8aacba2":[11,0,0,1,3,24], -"classsimdjson_1_1dom_1_1element.html#ae38f84f4272ae3c32b32dd6d5007ffb9":[12,0,0,0,3,25], -"classsimdjson_1_1dom_1_1element.html#ae38f84f4272ae3c32b32dd6d5007ffb9":[11,0,0,1,3,25], -"classsimdjson_1_1dom_1_1element.html#ae3c0226046e29cfb0e868c5251a87e53":[12,0,0,0,3,37], -"classsimdjson_1_1dom_1_1element.html#ae3c0226046e29cfb0e868c5251a87e53":[11,0,0,1,3,37], -"classsimdjson_1_1dom_1_1element.html#ae63f42ca3ef7d7eda92b4366db200782":[11,0,0,1,3,5], -"classsimdjson_1_1dom_1_1element.html#ae63f42ca3ef7d7eda92b4366db200782":[12,0,0,0,3,5], -"classsimdjson_1_1dom_1_1element.html#ae83652b5016ce4d4ff71f8f9bc05913e":[12,0,0,0,3,17], -"classsimdjson_1_1dom_1_1element.html#ae83652b5016ce4d4ff71f8f9bc05913e":[11,0,0,1,3,17], -"classsimdjson_1_1dom_1_1element.html#aeb155c47ef7bebcad79e1b7449734030":[11,0,0,1,3,2], -"classsimdjson_1_1dom_1_1element.html#aeb155c47ef7bebcad79e1b7449734030":[12,0,0,0,3,2], -"classsimdjson_1_1dom_1_1element.html#afaaac6e2f58128a01a25b0a5f5abb856":[12,0,0,0,3,21], -"classsimdjson_1_1dom_1_1element.html#afaaac6e2f58128a01a25b0a5f5abb856":[11,0,0,1,3,21], -"classsimdjson_1_1dom_1_1element.html#afb98fdfcb6ddf19071cd2300613218d3":[11,0,0,1,3,34], -"classsimdjson_1_1dom_1_1element.html#afb98fdfcb6ddf19071cd2300613218d3":[12,0,0,0,3,34], -"classsimdjson_1_1dom_1_1element.html#afbe1c01508f1cc39b41b79596cb5717b":[11,0,0,1,3,39], -"classsimdjson_1_1dom_1_1element.html#afbe1c01508f1cc39b41b79596cb5717b":[12,0,0,0,3,39], -"classsimdjson_1_1dom_1_1element.html#afde562c5aae1b85a03ab6d4b040e7d13":[11,0,0,1,3,22], -"classsimdjson_1_1dom_1_1element.html#afde562c5aae1b85a03ab6d4b040e7d13":[12,0,0,0,3,22], -"classsimdjson_1_1dom_1_1key__value__pair.html":[11,0,0,1,4], -"classsimdjson_1_1dom_1_1key__value__pair.html":[12,0,0,0,4], -"classsimdjson_1_1dom_1_1key__value__pair.html#a58c41d937401cfe88ceb6e71d7dbeb45":[11,0,0,1,4,0], -"classsimdjson_1_1dom_1_1key__value__pair.html#a58c41d937401cfe88ceb6e71d7dbeb45":[12,0,0,0,4,0], -"classsimdjson_1_1dom_1_1key__value__pair.html#af7e38d9eb63a40256c9f936e45edf703":[11,0,0,1,4,1], -"classsimdjson_1_1dom_1_1key__value__pair.html#af7e38d9eb63a40256c9f936e45edf703":[12,0,0,0,4,1], -"classsimdjson_1_1dom_1_1object.html":[11,0,0,1,5], -"classsimdjson_1_1dom_1_1object.html":[12,0,0,0,5], -"classsimdjson_1_1dom_1_1object.html#a2691ceae488be203aac2d5ef5b67347f":[12,0,0,0,5,11], -"classsimdjson_1_1dom_1_1object.html#a2691ceae488be203aac2d5ef5b67347f":[11,0,0,1,5,11], -"classsimdjson_1_1dom_1_1object.html#a2a71e54531711fefd97ed972c760c0e8":[12,0,0,0,5,9], -"classsimdjson_1_1dom_1_1object.html#a2a71e54531711fefd97ed972c760c0e8":[11,0,0,1,5,9], -"classsimdjson_1_1dom_1_1object.html#a3674739ae68d1e3d7071551a1aad7c4d":[11,0,0,1,5,13], -"classsimdjson_1_1dom_1_1object.html#a3674739ae68d1e3d7071551a1aad7c4d":[12,0,0,0,5,13], -"classsimdjson_1_1dom_1_1object.html#a4fb3e04e0ea591132da90341bf9ed819":[11,0,0,1,5,2], -"classsimdjson_1_1dom_1_1object.html#a4fb3e04e0ea591132da90341bf9ed819":[12,0,0,0,5,2], -"classsimdjson_1_1dom_1_1object.html#a79cf291477bcaa1bf2328411b411587d":[11,0,0,1,5,8], -"classsimdjson_1_1dom_1_1object.html#a79cf291477bcaa1bf2328411b411587d":[12,0,0,0,5,8], -"classsimdjson_1_1dom_1_1object.html#a80e5180422078f1adadd467508993c41":[11,0,0,1,5,5], -"classsimdjson_1_1dom_1_1object.html#a80e5180422078f1adadd467508993c41":[12,0,0,0,5,5], -"classsimdjson_1_1dom_1_1object.html#a93ec5c36aae913f266f533b2e02bc873":[12,0,0,0,5,14], -"classsimdjson_1_1dom_1_1object.html#a93ec5c36aae913f266f533b2e02bc873":[11,0,0,1,5,14], -"classsimdjson_1_1dom_1_1object.html#aa9d243605183d484a797cc06ac32a0ee":[11,0,0,1,5,4], -"classsimdjson_1_1dom_1_1object.html#aa9d243605183d484a797cc06ac32a0ee":[12,0,0,0,5,4], -"classsimdjson_1_1dom_1_1object.html#ab075da9eb7678f6321cecf4cbd196039":[12,0,0,0,5,3], -"classsimdjson_1_1dom_1_1object.html#ab075da9eb7678f6321cecf4cbd196039":[11,0,0,1,5,3], -"classsimdjson_1_1dom_1_1object.html#acc66a2f2eb74fbe359d4064531764f50":[12,0,0,0,5,12], -"classsimdjson_1_1dom_1_1object.html#acc66a2f2eb74fbe359d4064531764f50":[11,0,0,1,5,12], -"classsimdjson_1_1dom_1_1object.html#ace84581be0fee46d5128c49710522aba":[12,0,0,0,5,6], -"classsimdjson_1_1dom_1_1object.html#ace84581be0fee46d5128c49710522aba":[11,0,0,1,5,6], -"classsimdjson_1_1dom_1_1object.html#ad4fdfb4c4df15af03f44a11201b0545d":[12,0,0,0,5,10], -"classsimdjson_1_1dom_1_1object.html#ad4fdfb4c4df15af03f44a11201b0545d":[11,0,0,1,5,10], -"classsimdjson_1_1dom_1_1object.html#ae2e1a8cbaab9d352495d1dc993407be3":[12,0,0,0,5,1], -"classsimdjson_1_1dom_1_1object.html#ae2e1a8cbaab9d352495d1dc993407be3":[11,0,0,1,5,1], -"classsimdjson_1_1dom_1_1object.html#afe127a7e9ec8dab9ec76160525a68a83":[12,0,0,0,5,7], -"classsimdjson_1_1dom_1_1object.html#afe127a7e9ec8dab9ec76160525a68a83":[11,0,0,1,5,7], -"classsimdjson_1_1dom_1_1object_1_1iterator.html":[11,0,0,1,5,0], -"classsimdjson_1_1dom_1_1object_1_1iterator.html":[12,0,0,0,5,0], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a1da5ce328cc2609432be961736c6e810":[11,0,0,1,5,0,5], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a1da5ce328cc2609432be961736c6e810":[12,0,0,0,5,0,5], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a2049ae539dca6999cc33300d212a5014":[12,0,0,0,5,0,9], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a2049ae539dca6999cc33300d212a5014":[11,0,0,1,5,0,9], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a4807eeb1ed5f596b587d0b61dfb550e7":[12,0,0,0,5,0,2], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a4807eeb1ed5f596b587d0b61dfb550e7":[11,0,0,1,5,0,2], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a54a99dcf9c422d5c24f3c570b6d9b6e4":[12,0,0,0,5,0,1], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a54a99dcf9c422d5c24f3c570b6d9b6e4":[11,0,0,1,5,0,1], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a5ad1b60fd5df56d9fdb8bce1e08de88f":[11,0,0,1,5,0,4], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a5ad1b60fd5df56d9fdb8bce1e08de88f":[12,0,0,0,5,0,4], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a688f6c7f451602bb3385a93252c0828a":[12,0,0,0,5,0,6], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a688f6c7f451602bb3385a93252c0828a":[11,0,0,1,5,0,6], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a6d335de77b8c5b731566e48f6cacd95d":[12,0,0,0,5,0,3], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a6d335de77b8c5b731566e48f6cacd95d":[11,0,0,1,5,0,3], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a83b3c467632c017400f95ff05d2367b3":[12,0,0,0,5,0,8], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a83b3c467632c017400f95ff05d2367b3":[11,0,0,1,5,0,8], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a951609ca7a164b499ff19adbe2de7983":[12,0,0,0,5,0,0], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#a951609ca7a164b499ff19adbe2de7983":[11,0,0,1,5,0,0], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#aa26738ad08b7de3be4621a75863118ab":[11,0,0,1,5,0,7], -"classsimdjson_1_1dom_1_1object_1_1iterator.html#aa26738ad08b7de3be4621a75863118ab":[12,0,0,0,5,0,7], -"classsimdjson_1_1dom_1_1parser.html":[11,0,0,1,6], -"classsimdjson_1_1dom_1_1parser.html":[12,0,0,0,6], -"classsimdjson_1_1dom_1_1parser.html#a09370efac9e1b7d9b4a8349332e026c3":[11,0,0,1,6,0], -"classsimdjson_1_1dom_1_1parser.html#a09370efac9e1b7d9b4a8349332e026c3":[12,0,0,0,6,0], -"classsimdjson_1_1dom_1_1parser.html#a16c7d1e28125ef7d5703244483f70984":[11,0,0,1,6,11], -"classsimdjson_1_1dom_1_1parser.html#a16c7d1e28125ef7d5703244483f70984":[12,0,0,0,6,11], -"classsimdjson_1_1dom_1_1parser.html#a1afc4d3b429363b503a5605d66081e30":[11,0,0,1,6,12], -"classsimdjson_1_1dom_1_1parser.html#a1afc4d3b429363b503a5605d66081e30":[12,0,0,0,6,12], -"classsimdjson_1_1dom_1_1parser.html#a3f3c80565fe63857e2901c48e7bed64d":[11,0,0,1,6,1], -"classsimdjson_1_1dom_1_1parser.html#a3f3c80565fe63857e2901c48e7bed64d":[12,0,0,0,6,1], -"classsimdjson_1_1dom_1_1parser.html#a5c658556dd9e9396e9ce44ba4b01f2d1":[12,0,0,0,6,13], -"classsimdjson_1_1dom_1_1parser.html#a5c658556dd9e9396e9ce44ba4b01f2d1":[11,0,0,1,6,13], -"classsimdjson_1_1dom_1_1parser.html#a63fe2363db0d3acf458519698beaacf4":[12,0,0,0,6,15], -"classsimdjson_1_1dom_1_1parser.html#a63fe2363db0d3acf458519698beaacf4":[11,0,0,1,6,15], -"classsimdjson_1_1dom_1_1parser.html#a6977b4586bc601070cf100e2973a4cbc":[11,0,0,1,6,14], -"classsimdjson_1_1dom_1_1parser.html#a6977b4586bc601070cf100e2973a4cbc":[12,0,0,0,6,14], -"classsimdjson_1_1dom_1_1parser.html#a8bfde4193783adef9c5f12dfc4da3bc0":[12,0,0,0,6,8], -"classsimdjson_1_1dom_1_1parser.html#a8bfde4193783adef9c5f12dfc4da3bc0":[11,0,0,1,6,8], -"classsimdjson_1_1dom_1_1parser.html#a8d839fa94a8a800814164f225d987d0a":[12,0,0,0,6,7], -"classsimdjson_1_1dom_1_1parser.html#a8d839fa94a8a800814164f225d987d0a":[11,0,0,1,6,7], -"classsimdjson_1_1dom_1_1parser.html#aa3fc69c5ff15c98e6b1ff9aa4811b040":[12,0,0,0,6,6], -"classsimdjson_1_1dom_1_1parser.html#aa3fc69c5ff15c98e6b1ff9aa4811b040":[11,0,0,1,6,6], -"classsimdjson_1_1dom_1_1parser.html#ab090f596cd0b0c1d34576fd6aae88ee5":[12,0,0,0,6,9], -"classsimdjson_1_1dom_1_1parser.html#ab090f596cd0b0c1d34576fd6aae88ee5":[11,0,0,1,6,9], -"classsimdjson_1_1dom_1_1parser.html#ac408e4da66b0ac7cf9734aa4973e0093":[12,0,0,0,6,5], -"classsimdjson_1_1dom_1_1parser.html#ac408e4da66b0ac7cf9734aa4973e0093":[11,0,0,1,6,5], -"classsimdjson_1_1dom_1_1parser.html#aeb48211f320af02b58dc3d0505059844":[12,0,0,0,6,2], -"classsimdjson_1_1dom_1_1parser.html#aeb48211f320af02b58dc3d0505059844":[11,0,0,1,6,2], -"classsimdjson_1_1dom_1_1parser.html#aedf495a6e090929be23473e8a29f2fe2":[12,0,0,0,6,4], -"classsimdjson_1_1dom_1_1parser.html#aedf495a6e090929be23473e8a29f2fe2":[11,0,0,1,6,4], -"classsimdjson_1_1dom_1_1parser.html#af5b61dda345cef1feba7c4529dfe0259":[12,0,0,0,6,10], -"classsimdjson_1_1dom_1_1parser.html#af5b61dda345cef1feba7c4529dfe0259":[11,0,0,1,6,10], -"classsimdjson_1_1dom_1_1parser.html#af8f49755a335bc269cb02d24badfcdf9":[12,0,0,0,6,3], -"classsimdjson_1_1dom_1_1parser.html#af8f49755a335bc269cb02d24badfcdf9":[11,0,0,1,6,3], -"classsimdjson_1_1implementation.html":[11,0,0,10], -"classsimdjson_1_1implementation.html":[12,0,0,3], -"classsimdjson_1_1implementation.html#aa1d1e04f5471283ab9b2071ea36adf00":[12,0,0,3,1], -"classsimdjson_1_1implementation.html#aa1d1e04f5471283ab9b2071ea36adf00":[11,0,0,10,1] +"classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9":[13,0,0,0,0,7], +"classsimdjson_1_1dom_1_1array.html#a378b3312cdf6f8fe04725b617b8cfcb9":[12,0,0,1,0,7], +"classsimdjson_1_1dom_1_1array.html#a698f2f984d1a78a68962c06b2f047686":[12,0,0,1,0,12], +"classsimdjson_1_1dom_1_1array.html#a698f2f984d1a78a68962c06b2f047686":[13,0,0,0,0,12], +"classsimdjson_1_1dom_1_1array.html#a6a6373cc1542a7137b79978680a93d18":[13,0,0,0,0,2], +"classsimdjson_1_1dom_1_1array.html#a6a6373cc1542a7137b79978680a93d18":[12,0,0,1,0,2], +"classsimdjson_1_1dom_1_1array.html#a8141c7d98672bc3ab69fea7b63afcfb2":[13,0,0,0,0,5], +"classsimdjson_1_1dom_1_1array.html#a8141c7d98672bc3ab69fea7b63afcfb2":[12,0,0,1,0,5], +"classsimdjson_1_1dom_1_1array.html#a847fee5e11177e96b18f7318f4fd46c8":[13,0,0,0,0,10], +"classsimdjson_1_1dom_1_1array.html#a847fee5e11177e96b18f7318f4fd46c8":[12,0,0,1,0,10], +"classsimdjson_1_1dom_1_1array.html#a8b3d6eaec52a2b44965e53d874e367e9":[13,0,0,0,0,1], +"classsimdjson_1_1dom_1_1array.html#a8b3d6eaec52a2b44965e53d874e367e9":[12,0,0,1,0,1], +"classsimdjson_1_1dom_1_1array.html#aa9d596ea0c2e0a6732866d5d9c1fa3ec":[13,0,0,0,0,3], +"classsimdjson_1_1dom_1_1array.html#aa9d596ea0c2e0a6732866d5d9c1fa3ec":[12,0,0,1,0,3], +"classsimdjson_1_1dom_1_1array.html#aebd2b7ca5e1d87476ea2cd4fc9239a74":[13,0,0,0,0,6], +"classsimdjson_1_1dom_1_1array.html#aebd2b7ca5e1d87476ea2cd4fc9239a74":[12,0,0,1,0,6], +"classsimdjson_1_1dom_1_1array.html#aee39c0fbcf1f7f6b75e9a31d86bedfe8":[12,0,0,1,0,11], +"classsimdjson_1_1dom_1_1array.html#aee39c0fbcf1f7f6b75e9a31d86bedfe8":[13,0,0,0,0,11], +"classsimdjson_1_1dom_1_1array_1_1iterator.html":[13,0,0,0,0,0], +"classsimdjson_1_1dom_1_1array_1_1iterator.html":[12,0,0,1,0,0], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a2680a46eeece638bc352bcf6a169bcf6":[13,0,0,0,0,0,0], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a2680a46eeece638bc352bcf6a169bcf6":[12,0,0,1,0,0,0], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a46454681bd5e3a938c04eb89210e7966":[13,0,0,0,0,0,3], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a46454681bd5e3a938c04eb89210e7966":[12,0,0,1,0,0,3], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a6ec91111a2bcc9e378d30b47b613fac5":[13,0,0,0,0,0,2], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a6ec91111a2bcc9e378d30b47b613fac5":[12,0,0,1,0,0,2], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a90254656d4e7a8826246d1f931647eff":[13,0,0,0,0,0,1], +"classsimdjson_1_1dom_1_1array_1_1iterator.html#a90254656d4e7a8826246d1f931647eff":[12,0,0,1,0,0,1], +"classsimdjson_1_1dom_1_1document.html":[12,0,0,1,1], +"classsimdjson_1_1dom_1_1document.html":[13,0,0,0,1], +"classsimdjson_1_1dom_1_1document.html#a6947c9d79453071ca73d06e398bcdd2a":[13,0,0,0,1,0], +"classsimdjson_1_1dom_1_1document.html#a6947c9d79453071ca73d06e398bcdd2a":[12,0,0,1,1,0], +"classsimdjson_1_1dom_1_1document.html#ae19dced0eee5f63b9d1591ef51dcda4e":[12,0,0,1,1,3], +"classsimdjson_1_1dom_1_1document.html#ae19dced0eee5f63b9d1591ef51dcda4e":[13,0,0,0,1,3], +"classsimdjson_1_1dom_1_1document.html#aeb1930eabfeb1b1ad38102bda81f8ca2":[12,0,0,1,1,2], +"classsimdjson_1_1dom_1_1document.html#aeb1930eabfeb1b1ad38102bda81f8ca2":[13,0,0,0,1,2], +"classsimdjson_1_1dom_1_1document.html#af34f108b46f82428bfe4ea33869358f0":[12,0,0,1,1,1], +"classsimdjson_1_1dom_1_1document.html#af34f108b46f82428bfe4ea33869358f0":[13,0,0,0,1,1], +"classsimdjson_1_1dom_1_1document__stream.html":[12,0,0,1,2], +"classsimdjson_1_1dom_1_1document__stream.html":[13,0,0,0,2], +"classsimdjson_1_1dom_1_1document__stream.html#a2a08525ae815167b73b6393a8999e46b":[12,0,0,1,2,6], +"classsimdjson_1_1dom_1_1document__stream.html#a2a08525ae815167b73b6393a8999e46b":[13,0,0,0,2,6], +"classsimdjson_1_1dom_1_1document__stream.html#a6c2a07e08213dc9a51754940942f9e69":[12,0,0,1,2,7], +"classsimdjson_1_1dom_1_1document__stream.html#a6c2a07e08213dc9a51754940942f9e69":[13,0,0,0,2,7], +"classsimdjson_1_1dom_1_1document__stream.html#a9a51df3d81c9b7849bbbc8ae42096b76":[13,0,0,0,2,3], +"classsimdjson_1_1dom_1_1document__stream.html#a9a51df3d81c9b7849bbbc8ae42096b76":[12,0,0,1,2,3], +"classsimdjson_1_1dom_1_1document__stream.html#a9d6bb44a7d8f818c401d65fb80f6a523":[13,0,0,0,2,2], +"classsimdjson_1_1dom_1_1document__stream.html#a9d6bb44a7d8f818c401d65fb80f6a523":[12,0,0,1,2,2], +"classsimdjson_1_1dom_1_1document__stream.html#abd3e3d38eb32c0cb1a124f89978607a5":[12,0,0,1,2,5], +"classsimdjson_1_1dom_1_1document__stream.html#abd3e3d38eb32c0cb1a124f89978607a5":[13,0,0,0,2,5], +"classsimdjson_1_1dom_1_1document__stream.html#adec1e168e4188bf9c90ee87adbd72850":[12,0,0,1,2,4], +"classsimdjson_1_1dom_1_1document__stream.html#adec1e168e4188bf9c90ee87adbd72850":[13,0,0,0,2,4], +"classsimdjson_1_1dom_1_1document__stream.html#ae6ee894790448145e11a456f12253364":[12,0,0,1,2,1], +"classsimdjson_1_1dom_1_1document__stream.html#ae6ee894790448145e11a456f12253364":[13,0,0,0,2,1], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html":[12,0,0,1,2,0], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html":[13,0,0,0,2,0], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a09b193fe348fa8a267b96edd96f7515e":[13,0,0,0,2,0,2], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a09b193fe348fa8a267b96edd96f7515e":[12,0,0,1,2,0,2], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a56c69d73c7e424e008a28771661ab218":[13,0,0,0,2,0,1], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a56c69d73c7e424e008a28771661ab218":[12,0,0,1,2,0,1], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a6c3a5002801ab80b1c59422d7f3400d3":[12,0,0,1,2,0,0], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a6c3a5002801ab80b1c59422d7f3400d3":[13,0,0,0,2,0,0], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a7b05ed75aa2b2a6d3a17204b9863956a":[12,0,0,1,2,0,3], +"classsimdjson_1_1dom_1_1document__stream_1_1iterator.html#a7b05ed75aa2b2a6d3a17204b9863956a":[13,0,0,0,2,0,3], +"classsimdjson_1_1dom_1_1element.html":[13,0,0,0,3], +"classsimdjson_1_1dom_1_1element.html":[12,0,0,1,3], +"classsimdjson_1_1dom_1_1element.html#a08c7dcebf9e96fe5e4dd6df2959c0024":[13,0,0,0,3,27], +"classsimdjson_1_1dom_1_1element.html#a08c7dcebf9e96fe5e4dd6df2959c0024":[12,0,0,1,3,27], +"classsimdjson_1_1dom_1_1element.html#a0d11f69ba87f55960be6f655e4e99aba":[12,0,0,1,3,23], +"classsimdjson_1_1dom_1_1element.html#a0d11f69ba87f55960be6f655e4e99aba":[13,0,0,0,3,23], +"classsimdjson_1_1dom_1_1element.html#a19162bf6d94fb6c21bb2bf2e9b78ff0d":[13,0,0,0,3,43], +"classsimdjson_1_1dom_1_1element.html#a19162bf6d94fb6c21bb2bf2e9b78ff0d":[12,0,0,1,3,43], +"classsimdjson_1_1dom_1_1element.html#a1e3f78b3bee5ec3f33cc4b03dcc87981":[13,0,0,0,3,26], +"classsimdjson_1_1dom_1_1element.html#a1e3f78b3bee5ec3f33cc4b03dcc87981":[12,0,0,1,3,26], +"classsimdjson_1_1dom_1_1element.html#a23f4d8c38309b0184e658d8a9697a177":[12,0,0,1,3,35], +"classsimdjson_1_1dom_1_1element.html#a23f4d8c38309b0184e658d8a9697a177":[13,0,0,0,3,35], +"classsimdjson_1_1dom_1_1element.html#a2428a280035930e432570fb08712c4de":[12,0,0,1,3,9], +"classsimdjson_1_1dom_1_1element.html#a2428a280035930e432570fb08712c4de":[13,0,0,0,3,9], +"classsimdjson_1_1dom_1_1element.html#a29c21d70352c9b8af7144fd4f38baaa6":[12,0,0,1,3,13], +"classsimdjson_1_1dom_1_1element.html#a29c21d70352c9b8af7144fd4f38baaa6":[13,0,0,0,3,13], +"classsimdjson_1_1dom_1_1element.html#a2f9448091caf47e5ecc325956e14ed73":[12,0,0,1,3,38], +"classsimdjson_1_1dom_1_1element.html#a2f9448091caf47e5ecc325956e14ed73":[13,0,0,0,3,38], +"classsimdjson_1_1dom_1_1element.html#a3474c8fc1b1cb06625a50dcb9a2c5269":[12,0,0,1,3,10], +"classsimdjson_1_1dom_1_1element.html#a3474c8fc1b1cb06625a50dcb9a2c5269":[13,0,0,0,3,10], +"classsimdjson_1_1dom_1_1element.html#a367d22eeabc1881a8eb18bae2f2ba3b8":[12,0,0,1,3,40], +"classsimdjson_1_1dom_1_1element.html#a367d22eeabc1881a8eb18bae2f2ba3b8":[13,0,0,0,3,40], +"classsimdjson_1_1dom_1_1element.html#a3777fed88f37555f2d090aeb604a117c":[13,0,0,0,3,6], +"classsimdjson_1_1dom_1_1element.html#a3777fed88f37555f2d090aeb604a117c":[12,0,0,1,3,6], +"classsimdjson_1_1dom_1_1element.html#a3e74a8a6ef8318e2de805359126c6d7b":[12,0,0,1,3,14], +"classsimdjson_1_1dom_1_1element.html#a3e74a8a6ef8318e2de805359126c6d7b":[13,0,0,0,3,14], +"classsimdjson_1_1dom_1_1element.html#a4c77063d766c7db197f8674407b504d7":[12,0,0,1,3,20], +"classsimdjson_1_1dom_1_1element.html#a4c77063d766c7db197f8674407b504d7":[13,0,0,0,3,20], +"classsimdjson_1_1dom_1_1element.html#a5185447e6bf8949e7c5e9c22711e8764":[13,0,0,0,3,4], +"classsimdjson_1_1dom_1_1element.html#a5185447e6bf8949e7c5e9c22711e8764":[12,0,0,1,3,4], +"classsimdjson_1_1dom_1_1element.html#a5342161b8c52c78b2f5edac10e9d05ca":[13,0,0,0,3,42], +"classsimdjson_1_1dom_1_1element.html#a5342161b8c52c78b2f5edac10e9d05ca":[12,0,0,1,3,42], +"classsimdjson_1_1dom_1_1element.html#a548e0fc369eb455ea477e20fb0793627":[13,0,0,0,3,12], +"classsimdjson_1_1dom_1_1element.html#a548e0fc369eb455ea477e20fb0793627":[12,0,0,1,3,12], +"classsimdjson_1_1dom_1_1element.html#a65bd96042cc0f19dc3e0635937edded4":[13,0,0,0,3,28], +"classsimdjson_1_1dom_1_1element.html#a65bd96042cc0f19dc3e0635937edded4":[12,0,0,1,3,28], +"classsimdjson_1_1dom_1_1element.html#a686a21f39c755dcbf95116757d2193bd":[13,0,0,0,3,3], +"classsimdjson_1_1dom_1_1element.html#a686a21f39c755dcbf95116757d2193bd":[12,0,0,1,3,3], +"classsimdjson_1_1dom_1_1element.html#a71d6bfa627dd66e202f8b402f91a44ac":[13,0,0,0,3,30], +"classsimdjson_1_1dom_1_1element.html#a71d6bfa627dd66e202f8b402f91a44ac":[12,0,0,1,3,30], +"classsimdjson_1_1dom_1_1element.html#a743b5f1ef4202d8fb8fb317e612385f3":[13,0,0,0,3,33], +"classsimdjson_1_1dom_1_1element.html#a743b5f1ef4202d8fb8fb317e612385f3":[12,0,0,1,3,33], +"classsimdjson_1_1dom_1_1element.html#a83adcf723abff34d7c1e8ec0e69d967b":[13,0,0,0,3,36], +"classsimdjson_1_1dom_1_1element.html#a83adcf723abff34d7c1e8ec0e69d967b":[12,0,0,1,3,36], +"classsimdjson_1_1dom_1_1element.html#a846a790e93c9bad6c40641239bd77b28":[12,0,0,1,3,8], +"classsimdjson_1_1dom_1_1element.html#a846a790e93c9bad6c40641239bd77b28":[13,0,0,0,3,8], +"classsimdjson_1_1dom_1_1element.html#a87c75accdc0b35e06f3d554561ce8cd3":[12,0,0,1,3,11], +"classsimdjson_1_1dom_1_1element.html#a87c75accdc0b35e06f3d554561ce8cd3":[13,0,0,0,3,11], +"classsimdjson_1_1dom_1_1element.html#a8f9569b40dd2b23aab9fbf2229749589":[12,0,0,1,3,32], +"classsimdjson_1_1dom_1_1element.html#a8f9569b40dd2b23aab9fbf2229749589":[13,0,0,0,3,32], +"classsimdjson_1_1dom_1_1element.html#a9d92145af64401654c20d2885dd4051d":[13,0,0,0,3,18], +"classsimdjson_1_1dom_1_1element.html#a9d92145af64401654c20d2885dd4051d":[12,0,0,1,3,18], +"classsimdjson_1_1dom_1_1element.html#a9dbf81ad662ad32168025e8e08686935":[12,0,0,1,3,0], +"classsimdjson_1_1dom_1_1element.html#a9dbf81ad662ad32168025e8e08686935":[13,0,0,0,3,0], +"classsimdjson_1_1dom_1_1element.html#a9e5a750a066f17d5a9a31a24980e0b1d":[13,0,0,0,3,19], +"classsimdjson_1_1dom_1_1element.html#a9e5a750a066f17d5a9a31a24980e0b1d":[12,0,0,1,3,19], +"classsimdjson_1_1dom_1_1element.html#aa59ecf8e9ac7b1a9e977d2cd3f03aa7f":[13,0,0,0,3,7], +"classsimdjson_1_1dom_1_1element.html#aa59ecf8e9ac7b1a9e977d2cd3f03aa7f":[12,0,0,1,3,7], +"classsimdjson_1_1dom_1_1element.html#aa8b5798004a859bf922778226b8c1cce":[12,0,0,1,3,1], +"classsimdjson_1_1dom_1_1element.html#aa8b5798004a859bf922778226b8c1cce":[13,0,0,0,3,1], +"classsimdjson_1_1dom_1_1element.html#aa954cda836a4748ec9937291a9250604":[12,0,0,1,3,15], +"classsimdjson_1_1dom_1_1element.html#aa954cda836a4748ec9937291a9250604":[13,0,0,0,3,15], +"classsimdjson_1_1dom_1_1element.html#ab036e52a73d5bd046e1f2650a31dab30":[12,0,0,1,3,31], +"classsimdjson_1_1dom_1_1element.html#ab036e52a73d5bd046e1f2650a31dab30":[13,0,0,0,3,31], +"classsimdjson_1_1dom_1_1element.html#ab4c2e35dc44664eb04038ad35efc64f9":[12,0,0,1,3,16], +"classsimdjson_1_1dom_1_1element.html#ab4c2e35dc44664eb04038ad35efc64f9":[13,0,0,0,3,16], +"classsimdjson_1_1dom_1_1element.html#ac5017726a573f59c3494b92bb66a3beb":[12,0,0,1,3,29], +"classsimdjson_1_1dom_1_1element.html#ac5017726a573f59c3494b92bb66a3beb":[13,0,0,0,3,29], +"classsimdjson_1_1dom_1_1element.html#aca693f57d73a5ce95d1f7bedf67289b7":[12,0,0,1,3,41], +"classsimdjson_1_1dom_1_1element.html#aca693f57d73a5ce95d1f7bedf67289b7":[13,0,0,0,3,41], +"classsimdjson_1_1dom_1_1element.html#adadf66ec37675d5f3fac9816a8aacba2":[13,0,0,0,3,24], +"classsimdjson_1_1dom_1_1element.html#adadf66ec37675d5f3fac9816a8aacba2":[12,0,0,1,3,24], +"classsimdjson_1_1dom_1_1element.html#ae38f84f4272ae3c32b32dd6d5007ffb9":[12,0,0,1,3,25], +"classsimdjson_1_1dom_1_1element.html#ae38f84f4272ae3c32b32dd6d5007ffb9":[13,0,0,0,3,25], +"classsimdjson_1_1dom_1_1element.html#ae3c0226046e29cfb0e868c5251a87e53":[13,0,0,0,3,37], +"classsimdjson_1_1dom_1_1element.html#ae3c0226046e29cfb0e868c5251a87e53":[12,0,0,1,3,37], +"classsimdjson_1_1dom_1_1element.html#ae63f42ca3ef7d7eda92b4366db200782":[13,0,0,0,3,5], +"classsimdjson_1_1dom_1_1element.html#ae63f42ca3ef7d7eda92b4366db200782":[12,0,0,1,3,5], +"classsimdjson_1_1dom_1_1element.html#ae83652b5016ce4d4ff71f8f9bc05913e":[13,0,0,0,3,17], +"classsimdjson_1_1dom_1_1element.html#ae83652b5016ce4d4ff71f8f9bc05913e":[12,0,0,1,3,17], +"classsimdjson_1_1dom_1_1element.html#aeb155c47ef7bebcad79e1b7449734030":[13,0,0,0,3,2], +"classsimdjson_1_1dom_1_1element.html#aeb155c47ef7bebcad79e1b7449734030":[12,0,0,1,3,2], +"classsimdjson_1_1dom_1_1element.html#afaaac6e2f58128a01a25b0a5f5abb856":[13,0,0,0,3,21], +"classsimdjson_1_1dom_1_1element.html#afaaac6e2f58128a01a25b0a5f5abb856":[12,0,0,1,3,21], +"classsimdjson_1_1dom_1_1element.html#afb98fdfcb6ddf19071cd2300613218d3":[12,0,0,1,3,34], +"classsimdjson_1_1dom_1_1element.html#afb98fdfcb6ddf19071cd2300613218d3":[13,0,0,0,3,34], +"classsimdjson_1_1dom_1_1element.html#afbe1c01508f1cc39b41b79596cb5717b":[12,0,0,1,3,39], +"classsimdjson_1_1dom_1_1element.html#afbe1c01508f1cc39b41b79596cb5717b":[13,0,0,0,3,39], +"classsimdjson_1_1dom_1_1element.html#afde562c5aae1b85a03ab6d4b040e7d13":[13,0,0,0,3,22], +"classsimdjson_1_1dom_1_1element.html#afde562c5aae1b85a03ab6d4b040e7d13":[12,0,0,1,3,22], +"classsimdjson_1_1dom_1_1key__value__pair.html":[12,0,0,1,4], +"classsimdjson_1_1dom_1_1key__value__pair.html":[13,0,0,0,4], +"classsimdjson_1_1dom_1_1key__value__pair.html#a58c41d937401cfe88ceb6e71d7dbeb45":[12,0,0,1,4,0], +"classsimdjson_1_1dom_1_1key__value__pair.html#a58c41d937401cfe88ceb6e71d7dbeb45":[13,0,0,0,4,0], +"classsimdjson_1_1dom_1_1key__value__pair.html#af7e38d9eb63a40256c9f936e45edf703":[12,0,0,1,4,1], +"classsimdjson_1_1dom_1_1key__value__pair.html#af7e38d9eb63a40256c9f936e45edf703":[13,0,0,0,4,1], +"classsimdjson_1_1dom_1_1object.html":[12,0,0,1,5], +"classsimdjson_1_1dom_1_1object.html":[13,0,0,0,5], +"classsimdjson_1_1dom_1_1object.html#a2691ceae488be203aac2d5ef5b67347f":[13,0,0,0,5,11], +"classsimdjson_1_1dom_1_1object.html#a2691ceae488be203aac2d5ef5b67347f":[12,0,0,1,5,11], +"classsimdjson_1_1dom_1_1object.html#a2a71e54531711fefd97ed972c760c0e8":[13,0,0,0,5,9], +"classsimdjson_1_1dom_1_1object.html#a2a71e54531711fefd97ed972c760c0e8":[12,0,0,1,5,9], +"classsimdjson_1_1dom_1_1object.html#a3674739ae68d1e3d7071551a1aad7c4d":[12,0,0,1,5,13], +"classsimdjson_1_1dom_1_1object.html#a3674739ae68d1e3d7071551a1aad7c4d":[13,0,0,0,5,13], +"classsimdjson_1_1dom_1_1object.html#a4fb3e04e0ea591132da90341bf9ed819":[12,0,0,1,5,2], +"classsimdjson_1_1dom_1_1object.html#a4fb3e04e0ea591132da90341bf9ed819":[13,0,0,0,5,2], +"classsimdjson_1_1dom_1_1object.html#a79cf291477bcaa1bf2328411b411587d":[12,0,0,1,5,8], +"classsimdjson_1_1dom_1_1object.html#a79cf291477bcaa1bf2328411b411587d":[13,0,0,0,5,8], +"classsimdjson_1_1dom_1_1object.html#a80e5180422078f1adadd467508993c41":[13,0,0,0,5,5], +"classsimdjson_1_1dom_1_1object.html#a80e5180422078f1adadd467508993c41":[12,0,0,1,5,5], +"classsimdjson_1_1dom_1_1object.html#a93ec5c36aae913f266f533b2e02bc873":[13,0,0,0,5,14], +"classsimdjson_1_1dom_1_1object.html#a93ec5c36aae913f266f533b2e02bc873":[12,0,0,1,5,14], +"classsimdjson_1_1dom_1_1object.html#aa9d243605183d484a797cc06ac32a0ee":[13,0,0,0,5,4], +"classsimdjson_1_1dom_1_1object.html#aa9d243605183d484a797cc06ac32a0ee":[12,0,0,1,5,4], +"classsimdjson_1_1dom_1_1object.html#ab075da9eb7678f6321cecf4cbd196039":[12,0,0,1,5,3], +"classsimdjson_1_1dom_1_1object.html#ab075da9eb7678f6321cecf4cbd196039":[13,0,0,0,5,3], +"classsimdjson_1_1dom_1_1object.html#acc66a2f2eb74fbe359d4064531764f50":[12,0,0,1,5,12], +"classsimdjson_1_1dom_1_1object.html#acc66a2f2eb74fbe359d4064531764f50":[13,0,0,0,5,12], +"classsimdjson_1_1dom_1_1object.html#ace84581be0fee46d5128c49710522aba":[13,0,0,0,5,6], +"classsimdjson_1_1dom_1_1object.html#ace84581be0fee46d5128c49710522aba":[12,0,0,1,5,6], +"classsimdjson_1_1dom_1_1object.html#ad4fdfb4c4df15af03f44a11201b0545d":[13,0,0,0,5,10], +"classsimdjson_1_1dom_1_1object.html#ad4fdfb4c4df15af03f44a11201b0545d":[12,0,0,1,5,10], +"classsimdjson_1_1dom_1_1object.html#ae2e1a8cbaab9d352495d1dc993407be3":[13,0,0,0,5,1], +"classsimdjson_1_1dom_1_1object.html#ae2e1a8cbaab9d352495d1dc993407be3":[12,0,0,1,5,1], +"classsimdjson_1_1dom_1_1object.html#afe127a7e9ec8dab9ec76160525a68a83":[12,0,0,1,5,7], +"classsimdjson_1_1dom_1_1object.html#afe127a7e9ec8dab9ec76160525a68a83":[13,0,0,0,5,7], +"classsimdjson_1_1dom_1_1object_1_1iterator.html":[12,0,0,1,5,0], +"classsimdjson_1_1dom_1_1object_1_1iterator.html":[13,0,0,0,5,0], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a1da5ce328cc2609432be961736c6e810":[12,0,0,1,5,0,5], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a1da5ce328cc2609432be961736c6e810":[13,0,0,0,5,0,5], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a2049ae539dca6999cc33300d212a5014":[13,0,0,0,5,0,9], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a2049ae539dca6999cc33300d212a5014":[12,0,0,1,5,0,9], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a4807eeb1ed5f596b587d0b61dfb550e7":[13,0,0,0,5,0,2], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a4807eeb1ed5f596b587d0b61dfb550e7":[12,0,0,1,5,0,2], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a54a99dcf9c422d5c24f3c570b6d9b6e4":[13,0,0,0,5,0,1], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a54a99dcf9c422d5c24f3c570b6d9b6e4":[12,0,0,1,5,0,1], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a5ad1b60fd5df56d9fdb8bce1e08de88f":[12,0,0,1,5,0,4], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a5ad1b60fd5df56d9fdb8bce1e08de88f":[13,0,0,0,5,0,4], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a688f6c7f451602bb3385a93252c0828a":[13,0,0,0,5,0,6], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a688f6c7f451602bb3385a93252c0828a":[12,0,0,1,5,0,6], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a6d335de77b8c5b731566e48f6cacd95d":[13,0,0,0,5,0,3], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a6d335de77b8c5b731566e48f6cacd95d":[12,0,0,1,5,0,3], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a83b3c467632c017400f95ff05d2367b3":[13,0,0,0,5,0,8], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a83b3c467632c017400f95ff05d2367b3":[12,0,0,1,5,0,8], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a951609ca7a164b499ff19adbe2de7983":[13,0,0,0,5,0,0], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#a951609ca7a164b499ff19adbe2de7983":[12,0,0,1,5,0,0], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#aa26738ad08b7de3be4621a75863118ab":[13,0,0,0,5,0,7], +"classsimdjson_1_1dom_1_1object_1_1iterator.html#aa26738ad08b7de3be4621a75863118ab":[12,0,0,1,5,0,7], +"classsimdjson_1_1dom_1_1parser.html":[12,0,0,1,6], +"classsimdjson_1_1dom_1_1parser.html":[13,0,0,0,6], +"classsimdjson_1_1dom_1_1parser.html#a09370efac9e1b7d9b4a8349332e026c3":[13,0,0,0,6,0], +"classsimdjson_1_1dom_1_1parser.html#a09370efac9e1b7d9b4a8349332e026c3":[12,0,0,1,6,0], +"classsimdjson_1_1dom_1_1parser.html#a16c7d1e28125ef7d5703244483f70984":[13,0,0,0,6,11], +"classsimdjson_1_1dom_1_1parser.html#a16c7d1e28125ef7d5703244483f70984":[12,0,0,1,6,11], +"classsimdjson_1_1dom_1_1parser.html#a1afc4d3b429363b503a5605d66081e30":[13,0,0,0,6,12], +"classsimdjson_1_1dom_1_1parser.html#a1afc4d3b429363b503a5605d66081e30":[12,0,0,1,6,12], +"classsimdjson_1_1dom_1_1parser.html#a3f3c80565fe63857e2901c48e7bed64d":[13,0,0,0,6,1], +"classsimdjson_1_1dom_1_1parser.html#a3f3c80565fe63857e2901c48e7bed64d":[12,0,0,1,6,1], +"classsimdjson_1_1dom_1_1parser.html#a5c658556dd9e9396e9ce44ba4b01f2d1":[12,0,0,1,6,13], +"classsimdjson_1_1dom_1_1parser.html#a5c658556dd9e9396e9ce44ba4b01f2d1":[13,0,0,0,6,13], +"classsimdjson_1_1dom_1_1parser.html#a63fe2363db0d3acf458519698beaacf4":[12,0,0,1,6,15], +"classsimdjson_1_1dom_1_1parser.html#a63fe2363db0d3acf458519698beaacf4":[13,0,0,0,6,15], +"classsimdjson_1_1dom_1_1parser.html#a6977b4586bc601070cf100e2973a4cbc":[12,0,0,1,6,14], +"classsimdjson_1_1dom_1_1parser.html#a6977b4586bc601070cf100e2973a4cbc":[13,0,0,0,6,14], +"classsimdjson_1_1dom_1_1parser.html#a8bfde4193783adef9c5f12dfc4da3bc0":[13,0,0,0,6,8], +"classsimdjson_1_1dom_1_1parser.html#a8bfde4193783adef9c5f12dfc4da3bc0":[12,0,0,1,6,8], +"classsimdjson_1_1dom_1_1parser.html#a8d839fa94a8a800814164f225d987d0a":[13,0,0,0,6,7], +"classsimdjson_1_1dom_1_1parser.html#a8d839fa94a8a800814164f225d987d0a":[12,0,0,1,6,7], +"classsimdjson_1_1dom_1_1parser.html#aa3fc69c5ff15c98e6b1ff9aa4811b040":[12,0,0,1,6,6], +"classsimdjson_1_1dom_1_1parser.html#aa3fc69c5ff15c98e6b1ff9aa4811b040":[13,0,0,0,6,6], +"classsimdjson_1_1dom_1_1parser.html#ab090f596cd0b0c1d34576fd6aae88ee5":[12,0,0,1,6,9], +"classsimdjson_1_1dom_1_1parser.html#ab090f596cd0b0c1d34576fd6aae88ee5":[13,0,0,0,6,9], +"classsimdjson_1_1dom_1_1parser.html#ac408e4da66b0ac7cf9734aa4973e0093":[13,0,0,0,6,5], +"classsimdjson_1_1dom_1_1parser.html#ac408e4da66b0ac7cf9734aa4973e0093":[12,0,0,1,6,5], +"classsimdjson_1_1dom_1_1parser.html#aeb48211f320af02b58dc3d0505059844":[13,0,0,0,6,2], +"classsimdjson_1_1dom_1_1parser.html#aeb48211f320af02b58dc3d0505059844":[12,0,0,1,6,2], +"classsimdjson_1_1dom_1_1parser.html#aedf495a6e090929be23473e8a29f2fe2":[12,0,0,1,6,4], +"classsimdjson_1_1dom_1_1parser.html#aedf495a6e090929be23473e8a29f2fe2":[13,0,0,0,6,4], +"classsimdjson_1_1dom_1_1parser.html#af5b61dda345cef1feba7c4529dfe0259":[12,0,0,1,6,10], +"classsimdjson_1_1dom_1_1parser.html#af5b61dda345cef1feba7c4529dfe0259":[13,0,0,0,6,10], +"classsimdjson_1_1dom_1_1parser.html#af8f49755a335bc269cb02d24badfcdf9":[12,0,0,1,6,3], +"classsimdjson_1_1dom_1_1parser.html#af8f49755a335bc269cb02d24badfcdf9":[13,0,0,0,6,3], +"classsimdjson_1_1implementation.html":[13,0,0,3], +"classsimdjson_1_1implementation.html":[12,0,0,10], +"classsimdjson_1_1implementation.html#aa1d1e04f5471283ab9b2071ea36adf00":[13,0,0,3,1], +"classsimdjson_1_1implementation.html#aa1d1e04f5471283ab9b2071ea36adf00":[12,0,0,10,1] }; diff --git a/navtreeindex2.js b/navtreeindex2.js index 351f92e31..40e822a66 100644 --- a/navtreeindex2.js +++ b/navtreeindex2.js @@ -1,239 +1,240 @@ var NAVTREEINDEX2 = { -"classsimdjson_1_1implementation.html#aa3a7b818d56a54cca272191ec176f8f1":[11,0,0,10,3], -"classsimdjson_1_1implementation.html#aa3a7b818d56a54cca272191ec176f8f1":[12,0,0,3,3], -"classsimdjson_1_1implementation.html#ab170b9fed9cab0daaff878472f339c40":[12,0,0,3,0], -"classsimdjson_1_1implementation.html#ab170b9fed9cab0daaff878472f339c40":[11,0,0,10,0], -"classsimdjson_1_1implementation.html#adf77c9bc0869eff8fd46e942c4532135":[12,0,0,3,2], -"classsimdjson_1_1implementation.html#adf77c9bc0869eff8fd46e942c4532135":[11,0,0,10,2], -"classsimdjson_1_1padded__string__view.html":[11,0,0,12], -"classsimdjson_1_1padded__string__view.html":[12,0,0,5], -"classsimdjson_1_1padded__string__view.html#a12b33830793e7ab1953b961088a83c3d":[11,0,0,12,4], -"classsimdjson_1_1padded__string__view.html#a12b33830793e7ab1953b961088a83c3d":[12,0,0,5,4], -"classsimdjson_1_1padded__string__view.html#a184b54acd28046a9c4f2a6cfa5419779":[11,0,0,12,2], -"classsimdjson_1_1padded__string__view.html#a184b54acd28046a9c4f2a6cfa5419779":[12,0,0,5,2], -"classsimdjson_1_1padded__string__view.html#a47ac0063f7dd0ffd832c5e4439f2de30":[11,0,0,12,1], -"classsimdjson_1_1padded__string__view.html#a47ac0063f7dd0ffd832c5e4439f2de30":[12,0,0,5,1], -"classsimdjson_1_1padded__string__view.html#a572beea549bf5a58d62ffe4e768c1e82":[11,0,0,12,8], -"classsimdjson_1_1padded__string__view.html#a572beea549bf5a58d62ffe4e768c1e82":[12,0,0,5,8], -"classsimdjson_1_1padded__string__view.html#a934e7272d22d6024383eafe07b06773c":[12,0,0,5,7], -"classsimdjson_1_1padded__string__view.html#a934e7272d22d6024383eafe07b06773c":[11,0,0,12,7], -"classsimdjson_1_1padded__string__view.html#a9d98e1984b893116d8bb7123d84d75b8":[12,0,0,5,5], -"classsimdjson_1_1padded__string__view.html#a9d98e1984b893116d8bb7123d84d75b8":[11,0,0,12,5], -"classsimdjson_1_1padded__string__view.html#aa338ad56304bc79e6ca1fab64af41de0":[11,0,0,12,0], -"classsimdjson_1_1padded__string__view.html#aa338ad56304bc79e6ca1fab64af41de0":[12,0,0,5,0], -"classsimdjson_1_1padded__string__view.html#aae57856a217294ac218b6372a5e37d9a":[12,0,0,5,3], -"classsimdjson_1_1padded__string__view.html#aae57856a217294ac218b6372a5e37d9a":[11,0,0,12,3], -"classsimdjson_1_1padded__string__view.html#ae4aff182e0ed84ed5056c2d634ff134a":[12,0,0,5,6], -"classsimdjson_1_1padded__string__view.html#ae4aff182e0ed84ed5056c2d634ff134a":[11,0,0,12,6], -"common__defs_8h_source.html":[13,0,0,0,16], -"compiler__check_8h_source.html":[13,0,0,0,17], -"concepts_8h_source.html":[13,0,0,0,18], -"constevalutil_8h_source.html":[13,0,0,0,19], -"convert-inl_8h_source.html":[13,0,0,0,20], -"convert_8h_source.html":[13,0,0,0,21], -"dependencies_8h_source.html":[13,0,0,0,4,4], -"deprecated.html":[9], -"deserialize_8h_source.html":[13,0,0,0,4,0,7], -"dir_004b9f9c64771ef6ac3be5ca102ad096.html":[13,0,0,0,8], -"dir_0d145e48adcb2584d6aad0aa1d711d9e.html":[13,0,0,0,12], -"dir_0fee190c3bc9a7d22e6d44901a62fa54.html":[13,0,0,0,7], -"dir_438095d7beafc60159803dc5832a82bd.html":[13,0,0,0,2], -"dir_49a0b2767ded4a45005c5d6720a18cd1.html":[13,0,0,0], -"dir_53368a02099cf3699f2996a5d88d70b6.html":[13,0,0,0,4], -"dir_76d8247d4498211a7d04a3794a38eb71.html":[13,0,0,0,0], -"dir_7796bb4b727f918c96faee1bdd50e49a.html":[13,0,0,0,4,0], -"dir_9b01d0736ef91c92ca1a5074971144b1.html":[13,0,0,0,11], -"dir_aff943445258981e0d80c1f13c0bf97f.html":[13,0,0,0,10], -"dir_b35ffb90479583e132afc246e9b6e77a.html":[13,0,0,0,5], -"dir_ba336e6e255a3bf0b1427b51513cdc60.html":[13,0,0,0,6], -"dir_bdd5d78d80e110a51a7313218161f5b4.html":[13,0,0,0,3], -"dir_c9268d037c0b2c52e0345956131bd131.html":[13,0,0,0,9], -"dir_cae07bd9608c9724f8cbc862866fc74a.html":[13,0,0,0,1], -"dir_d44c64559bbebec7f509842c48db8b23.html":[13,0,0], -"dom_2array-inl_8h_source.html":[13,0,0,0,2,0], -"dom_2array_8h_source.html":[13,0,0,0,2,1], -"dom_2base_8h_source.html":[13,0,0,0,2,2], -"dom_2document-inl_8h_source.html":[13,0,0,0,2,3], -"dom_2document_8h_source.html":[13,0,0,0,2,4], -"dom_2document__stream-inl_8h_source.html":[13,0,0,0,2,5], -"dom_2document__stream_8h_source.html":[13,0,0,0,2,6], -"dom_2object-inl_8h_source.html":[13,0,0,0,2,9], -"dom_2object_8h_source.html":[13,0,0,0,2,10], -"dom_2parser-inl_8h_source.html":[13,0,0,0,2,11], -"dom_2parser_8h_source.html":[13,0,0,0,2,12], -"dom_2serialization-inl_8h_source.html":[13,0,0,0,2,13], -"dom_2serialization_8h_source.html":[13,0,0,0,2,14], -"dom_8h_source.html":[13,0,0,0,22], -"element-inl_8h_source.html":[13,0,0,0,2,7], -"element_8h_source.html":[13,0,0,0,2,8], -"error-inl_8h_source.html":[13,0,0,0,23], -"error_8h_source.html":[13,0,0,0,24], -"fallback_2base_8h_source.html":[13,0,0,0,3,0], -"fallback_2begin_8h_source.html":[13,0,0,0,3,1], -"fallback_2bitmanipulation_8h_source.html":[13,0,0,0,3,2], -"fallback_2end_8h_source.html":[13,0,0,0,3,3], -"fallback_2implementation_8h_source.html":[13,0,0,0,3,4], -"fallback_2numberparsing__defs_8h_source.html":[13,0,0,0,3,5], -"fallback_2ondemand_8h_source.html":[13,0,0,0,3,6], -"fallback_2stringparsing__defs_8h_source.html":[13,0,0,0,3,7], -"fallback_8h_source.html":[13,0,0,0,25], -"field-inl_8h_source.html":[13,0,0,0,4,0,12], -"field_8h_source.html":[13,0,0,0,4,0,13], -"files.html":[13,0], -"functions.html":[12,3,0,0], -"functions.html":[12,3,0], -"functions_b.html":[12,3,0,1], -"functions_c.html":[12,3,0,2], -"functions_d.html":[12,3,0,3], -"functions_e.html":[12,3,0,4], -"functions_f.html":[12,3,0,5], -"functions_func.html":[12,3,1,0], -"functions_func.html":[12,3,1], -"functions_func_b.html":[12,3,1,1], -"functions_func_c.html":[12,3,1,2], -"functions_func_d.html":[12,3,1,3], -"functions_func_e.html":[12,3,1,4], -"functions_func_f.html":[12,3,1,5], -"functions_func_g.html":[12,3,1,6], -"functions_func_h.html":[12,3,1,7], -"functions_func_i.html":[12,3,1,8], -"functions_func_k.html":[12,3,1,9], -"functions_func_l.html":[12,3,1,10], -"functions_func_m.html":[12,3,1,11], -"functions_func_n.html":[12,3,1,12], -"functions_func_o.html":[12,3,1,13], -"functions_func_p.html":[12,3,1,14], -"functions_func_r.html":[12,3,1,15], -"functions_func_s.html":[12,3,1,16], -"functions_func_t.html":[12,3,1,17], -"functions_func_u.html":[12,3,1,18], -"functions_func_v.html":[12,3,1,19], -"functions_func_w.html":[12,3,1,20], -"functions_func_~.html":[12,3,1,21], -"functions_g.html":[12,3,0,6], -"functions_h.html":[12,3,0,7], -"functions_i.html":[12,3,0,8], -"functions_k.html":[12,3,0,9], -"functions_l.html":[12,3,0,10], -"functions_m.html":[12,3,0,11], -"functions_n.html":[12,3,0,12], -"functions_o.html":[12,3,0,13], -"functions_p.html":[12,3,0,14], -"functions_r.html":[12,3,0,15], -"functions_s.html":[12,3,0,16], -"functions_t.html":[12,3,0,17], -"functions_u.html":[12,3,0,18], -"functions_v.html":[12,3,0,19], -"functions_vars.html":[12,3,2], -"functions_w.html":[12,3,0,20], -"functions_~.html":[12,3,0,21], -"generic_2base_8h_source.html":[13,0,0,0,4,3], -"generic_2dom__parser__implementation_8h_source.html":[13,0,0,0,4,5], -"generic_2ondemand_2array-inl_8h_source.html":[13,0,0,0,4,0,1], -"generic_2ondemand_2array_8h_source.html":[13,0,0,0,4,0,2], -"generic_2ondemand_2base_8h_source.html":[13,0,0,0,4,0,5], -"generic_2ondemand_2document-inl_8h_source.html":[13,0,0,0,4,0,8], -"generic_2ondemand_2document_8h_source.html":[13,0,0,0,4,0,9], -"generic_2ondemand_2document__stream-inl_8h_source.html":[13,0,0,0,4,0,10], -"generic_2ondemand_2document__stream_8h_source.html":[13,0,0,0,4,0,11], -"generic_2ondemand_2object-inl_8h_source.html":[13,0,0,0,4,0,23], -"generic_2ondemand_2object_8h_source.html":[13,0,0,0,4,0,24], -"generic_2ondemand_2parser-inl_8h_source.html":[13,0,0,0,4,0,27], -"generic_2ondemand_2parser_8h_source.html":[13,0,0,0,4,0,28], -"generic_2ondemand_2serialization-inl_8h_source.html":[13,0,0,0,4,0,31], -"generic_2ondemand_2serialization_8h_source.html":[13,0,0,0,4,0,32], -"group__array.html":[10,1], -"group__array.html#ga136e508ce46622b86cc901490c807578":[10,1,5], -"group__array.html#ga14e69f9c4949805695e30a576bd9c964":[10,1,3], -"group__array.html#ga1e023cb72adae168dc7157776976ad75":[10,1,0], -"group__array.html#ga31b0a8ce8734db9413cce31c4d9c8c8d":[10,1,2], -"group__array.html#ga334481c295286d926bb3bb912232e225":[10,1,4], -"group__array.html#gaa3428f6c87e63d8a2ba93a3816721066":[10,1,6], -"group__array.html#gaba7c4e5787c7295da3a0d73b0db1c890":[10,1,1], -"group__object.html":[10,0], -"group__object.html#ga192424d19b12648eea73e3d073d5fcac":[10,0,9], -"group__object.html#ga262c7a1f9320fefb1711fec7b69ef6b1":[10,0,0], -"group__object.html#ga46e677764da46ebbe4b0e4dea6672a5f":[10,0,7], -"group__object.html#ga678e53c38ebaf2323550e7f29e253df9":[10,0,5], -"group__object.html#ga7956fe38cd8ecfbc8f709aa6f65c92b4":[10,0,6], -"group__object.html#ga9fd0d39ec786f26b7ea86f9bc8380bdd":[10,0,1], -"group__object.html#gaa0c31077aeadb6fc627d4c5750e58ecb":[10,0,10], -"group__object.html#gaaaf58bcf25e6d30a3469848d36c65a05":[10,0,2], -"group__object.html#gab66bdaf2c97d2cbd2a94a5a3e67ffabc":[10,0,4], -"group__object.html#gab9563a58e164e9f5f75805cffb3582ec":[10,0,8], -"group__object.html#gacefcaf06811426a241ed97a6948a94ee":[10,0,3], -"group__scalar.html":[10,2], -"haswell_2base_8h_source.html":[13,0,0,0,5,0], -"haswell_2begin_8h_source.html":[13,0,0,0,5,1], -"haswell_2bitmanipulation_8h_source.html":[13,0,0,0,5,2], -"haswell_2bitmask_8h_source.html":[13,0,0,0,5,3], -"haswell_2end_8h_source.html":[13,0,0,0,5,4], -"haswell_2implementation_8h_source.html":[13,0,0,0,5,5], -"haswell_2intrinsics_8h_source.html":[13,0,0,0,5,6], -"haswell_2numberparsing__defs_8h_source.html":[13,0,0,0,5,7], -"haswell_2ondemand_8h_source.html":[13,0,0,0,5,8], -"haswell_2simd_8h_source.html":[13,0,0,0,5,9], -"haswell_2stringparsing__defs_8h_source.html":[13,0,0,0,5,10], -"haswell_8h_source.html":[13,0,0,0,26], -"hierarchy.html":[12,2], -"icelake_2base_8h_source.html":[13,0,0,0,6,0], -"icelake_2begin_8h_source.html":[13,0,0,0,6,1], -"icelake_2bitmanipulation_8h_source.html":[13,0,0,0,6,2], -"icelake_2bitmask_8h_source.html":[13,0,0,0,6,3], -"icelake_2end_8h_source.html":[13,0,0,0,6,4], -"icelake_2implementation_8h_source.html":[13,0,0,0,6,5], -"icelake_2intrinsics_8h_source.html":[13,0,0,0,6,6], -"icelake_2numberparsing__defs_8h_source.html":[13,0,0,0,6,7], -"icelake_2ondemand_8h_source.html":[13,0,0,0,6,8], -"icelake_2simd_8h_source.html":[13,0,0,0,6,9], -"icelake_2stringparsing__defs_8h_source.html":[13,0,0,0,6,10], -"icelake_8h_source.html":[13,0,0,0,27], -"implementation_8h_source.html":[13,0,0,0,28], -"implementation__detection_8h_source.html":[13,0,0,0,29], -"implementation__simdjson__result__base-inl_8h_source.html":[13,0,0,0,4,6], -"implementation__simdjson__result__base_8h_source.html":[13,0,0,0,4,7], +"classsimdjson_1_1implementation.html#aa3a7b818d56a54cca272191ec176f8f1":[12,0,0,10,3], +"classsimdjson_1_1implementation.html#aa3a7b818d56a54cca272191ec176f8f1":[13,0,0,3,3], +"classsimdjson_1_1implementation.html#ab170b9fed9cab0daaff878472f339c40":[13,0,0,3,0], +"classsimdjson_1_1implementation.html#ab170b9fed9cab0daaff878472f339c40":[12,0,0,10,0], +"classsimdjson_1_1implementation.html#adf77c9bc0869eff8fd46e942c4532135":[13,0,0,3,2], +"classsimdjson_1_1implementation.html#adf77c9bc0869eff8fd46e942c4532135":[12,0,0,10,2], +"classsimdjson_1_1padded__string__view.html":[12,0,0,12], +"classsimdjson_1_1padded__string__view.html":[13,0,0,5], +"classsimdjson_1_1padded__string__view.html#a12b33830793e7ab1953b961088a83c3d":[12,0,0,12,4], +"classsimdjson_1_1padded__string__view.html#a12b33830793e7ab1953b961088a83c3d":[13,0,0,5,4], +"classsimdjson_1_1padded__string__view.html#a184b54acd28046a9c4f2a6cfa5419779":[12,0,0,12,2], +"classsimdjson_1_1padded__string__view.html#a184b54acd28046a9c4f2a6cfa5419779":[13,0,0,5,2], +"classsimdjson_1_1padded__string__view.html#a47ac0063f7dd0ffd832c5e4439f2de30":[13,0,0,5,1], +"classsimdjson_1_1padded__string__view.html#a47ac0063f7dd0ffd832c5e4439f2de30":[12,0,0,12,1], +"classsimdjson_1_1padded__string__view.html#a572beea549bf5a58d62ffe4e768c1e82":[12,0,0,12,8], +"classsimdjson_1_1padded__string__view.html#a572beea549bf5a58d62ffe4e768c1e82":[13,0,0,5,8], +"classsimdjson_1_1padded__string__view.html#a934e7272d22d6024383eafe07b06773c":[13,0,0,5,7], +"classsimdjson_1_1padded__string__view.html#a934e7272d22d6024383eafe07b06773c":[12,0,0,12,7], +"classsimdjson_1_1padded__string__view.html#a9d98e1984b893116d8bb7123d84d75b8":[12,0,0,12,5], +"classsimdjson_1_1padded__string__view.html#a9d98e1984b893116d8bb7123d84d75b8":[13,0,0,5,5], +"classsimdjson_1_1padded__string__view.html#aa338ad56304bc79e6ca1fab64af41de0":[13,0,0,5,0], +"classsimdjson_1_1padded__string__view.html#aa338ad56304bc79e6ca1fab64af41de0":[12,0,0,12,0], +"classsimdjson_1_1padded__string__view.html#aae57856a217294ac218b6372a5e37d9a":[13,0,0,5,3], +"classsimdjson_1_1padded__string__view.html#aae57856a217294ac218b6372a5e37d9a":[12,0,0,12,3], +"classsimdjson_1_1padded__string__view.html#ae4aff182e0ed84ed5056c2d634ff134a":[13,0,0,5,6], +"classsimdjson_1_1padded__string__view.html#ae4aff182e0ed84ed5056c2d634ff134a":[12,0,0,12,6], +"common__defs_8h_source.html":[14,0,0,0,16], +"compile__time__accessors_8h_source.html":[14,0,0,0,4,0,6], +"compiler__check_8h_source.html":[14,0,0,0,17], +"concepts_8h_source.html":[14,0,0,0,18], +"constevalutil_8h_source.html":[14,0,0,0,19], +"convert-inl_8h_source.html":[14,0,0,0,20], +"convert_8h_source.html":[14,0,0,0,21], +"dependencies_8h_source.html":[14,0,0,0,4,4], +"deprecated.html":[10], +"deserialize_8h_source.html":[14,0,0,0,4,0,8], +"dir_004b9f9c64771ef6ac3be5ca102ad096.html":[14,0,0,0,8], +"dir_0d145e48adcb2584d6aad0aa1d711d9e.html":[14,0,0,0,12], +"dir_0fee190c3bc9a7d22e6d44901a62fa54.html":[14,0,0,0,7], +"dir_438095d7beafc60159803dc5832a82bd.html":[14,0,0,0,2], +"dir_49a0b2767ded4a45005c5d6720a18cd1.html":[14,0,0,0], +"dir_53368a02099cf3699f2996a5d88d70b6.html":[14,0,0,0,4], +"dir_76d8247d4498211a7d04a3794a38eb71.html":[14,0,0,0,0], +"dir_7796bb4b727f918c96faee1bdd50e49a.html":[14,0,0,0,4,0], +"dir_9b01d0736ef91c92ca1a5074971144b1.html":[14,0,0,0,11], +"dir_aff943445258981e0d80c1f13c0bf97f.html":[14,0,0,0,10], +"dir_b35ffb90479583e132afc246e9b6e77a.html":[14,0,0,0,5], +"dir_ba336e6e255a3bf0b1427b51513cdc60.html":[14,0,0,0,6], +"dir_bdd5d78d80e110a51a7313218161f5b4.html":[14,0,0,0,3], +"dir_c9268d037c0b2c52e0345956131bd131.html":[14,0,0,0,9], +"dir_cae07bd9608c9724f8cbc862866fc74a.html":[14,0,0,0,1], +"dir_d44c64559bbebec7f509842c48db8b23.html":[14,0,0], +"dom_2array-inl_8h_source.html":[14,0,0,0,2,0], +"dom_2array_8h_source.html":[14,0,0,0,2,1], +"dom_2base_8h_source.html":[14,0,0,0,2,2], +"dom_2document-inl_8h_source.html":[14,0,0,0,2,3], +"dom_2document_8h_source.html":[14,0,0,0,2,4], +"dom_2document__stream-inl_8h_source.html":[14,0,0,0,2,5], +"dom_2document__stream_8h_source.html":[14,0,0,0,2,6], +"dom_2object-inl_8h_source.html":[14,0,0,0,2,9], +"dom_2object_8h_source.html":[14,0,0,0,2,10], +"dom_2parser-inl_8h_source.html":[14,0,0,0,2,11], +"dom_2parser_8h_source.html":[14,0,0,0,2,12], +"dom_2serialization-inl_8h_source.html":[14,0,0,0,2,13], +"dom_2serialization_8h_source.html":[14,0,0,0,2,14], +"dom_8h_source.html":[14,0,0,0,22], +"element-inl_8h_source.html":[14,0,0,0,2,7], +"element_8h_source.html":[14,0,0,0,2,8], +"error-inl_8h_source.html":[14,0,0,0,23], +"error_8h_source.html":[14,0,0,0,24], +"fallback_2base_8h_source.html":[14,0,0,0,3,0], +"fallback_2begin_8h_source.html":[14,0,0,0,3,1], +"fallback_2bitmanipulation_8h_source.html":[14,0,0,0,3,2], +"fallback_2end_8h_source.html":[14,0,0,0,3,3], +"fallback_2implementation_8h_source.html":[14,0,0,0,3,4], +"fallback_2numberparsing__defs_8h_source.html":[14,0,0,0,3,5], +"fallback_2ondemand_8h_source.html":[14,0,0,0,3,6], +"fallback_2stringparsing__defs_8h_source.html":[14,0,0,0,3,7], +"fallback_8h_source.html":[14,0,0,0,25], +"field-inl_8h_source.html":[14,0,0,0,4,0,13], +"field_8h_source.html":[14,0,0,0,4,0,14], +"files.html":[14,0], +"functions.html":[13,3,0], +"functions.html":[13,3,0,0], +"functions_b.html":[13,3,0,1], +"functions_c.html":[13,3,0,2], +"functions_d.html":[13,3,0,3], +"functions_e.html":[13,3,0,4], +"functions_f.html":[13,3,0,5], +"functions_func.html":[13,3,1,0], +"functions_func.html":[13,3,1], +"functions_func_b.html":[13,3,1,1], +"functions_func_c.html":[13,3,1,2], +"functions_func_d.html":[13,3,1,3], +"functions_func_e.html":[13,3,1,4], +"functions_func_f.html":[13,3,1,5], +"functions_func_g.html":[13,3,1,6], +"functions_func_h.html":[13,3,1,7], +"functions_func_i.html":[13,3,1,8], +"functions_func_k.html":[13,3,1,9], +"functions_func_l.html":[13,3,1,10], +"functions_func_m.html":[13,3,1,11], +"functions_func_n.html":[13,3,1,12], +"functions_func_o.html":[13,3,1,13], +"functions_func_p.html":[13,3,1,14], +"functions_func_r.html":[13,3,1,15], +"functions_func_s.html":[13,3,1,16], +"functions_func_t.html":[13,3,1,17], +"functions_func_u.html":[13,3,1,18], +"functions_func_v.html":[13,3,1,19], +"functions_func_w.html":[13,3,1,20], +"functions_func_~.html":[13,3,1,21], +"functions_g.html":[13,3,0,6], +"functions_h.html":[13,3,0,7], +"functions_i.html":[13,3,0,8], +"functions_k.html":[13,3,0,9], +"functions_l.html":[13,3,0,10], +"functions_m.html":[13,3,0,11], +"functions_n.html":[13,3,0,12], +"functions_o.html":[13,3,0,13], +"functions_p.html":[13,3,0,14], +"functions_r.html":[13,3,0,15], +"functions_s.html":[13,3,0,16], +"functions_t.html":[13,3,0,17], +"functions_u.html":[13,3,0,18], +"functions_v.html":[13,3,0,19], +"functions_vars.html":[13,3,2], +"functions_w.html":[13,3,0,20], +"functions_~.html":[13,3,0,21], +"generic_2base_8h_source.html":[14,0,0,0,4,3], +"generic_2dom__parser__implementation_8h_source.html":[14,0,0,0,4,5], +"generic_2ondemand_2array-inl_8h_source.html":[14,0,0,0,4,0,1], +"generic_2ondemand_2array_8h_source.html":[14,0,0,0,4,0,2], +"generic_2ondemand_2base_8h_source.html":[14,0,0,0,4,0,5], +"generic_2ondemand_2document-inl_8h_source.html":[14,0,0,0,4,0,9], +"generic_2ondemand_2document_8h_source.html":[14,0,0,0,4,0,10], +"generic_2ondemand_2document__stream-inl_8h_source.html":[14,0,0,0,4,0,11], +"generic_2ondemand_2document__stream_8h_source.html":[14,0,0,0,4,0,12], +"generic_2ondemand_2object-inl_8h_source.html":[14,0,0,0,4,0,24], +"generic_2ondemand_2object_8h_source.html":[14,0,0,0,4,0,25], +"generic_2ondemand_2parser-inl_8h_source.html":[14,0,0,0,4,0,28], +"generic_2ondemand_2parser_8h_source.html":[14,0,0,0,4,0,29], +"generic_2ondemand_2serialization-inl_8h_source.html":[14,0,0,0,4,0,32], +"generic_2ondemand_2serialization_8h_source.html":[14,0,0,0,4,0,33], +"group__array.html":[11,1], +"group__array.html#ga136e508ce46622b86cc901490c807578":[11,1,5], +"group__array.html#ga14e69f9c4949805695e30a576bd9c964":[11,1,3], +"group__array.html#ga1e023cb72adae168dc7157776976ad75":[11,1,0], +"group__array.html#ga31b0a8ce8734db9413cce31c4d9c8c8d":[11,1,2], +"group__array.html#ga334481c295286d926bb3bb912232e225":[11,1,4], +"group__array.html#gaa3428f6c87e63d8a2ba93a3816721066":[11,1,6], +"group__array.html#gaba7c4e5787c7295da3a0d73b0db1c890":[11,1,1], +"group__object.html":[11,0], +"group__object.html#ga192424d19b12648eea73e3d073d5fcac":[11,0,9], +"group__object.html#ga262c7a1f9320fefb1711fec7b69ef6b1":[11,0,0], +"group__object.html#ga46e677764da46ebbe4b0e4dea6672a5f":[11,0,7], +"group__object.html#ga678e53c38ebaf2323550e7f29e253df9":[11,0,5], +"group__object.html#ga7956fe38cd8ecfbc8f709aa6f65c92b4":[11,0,6], +"group__object.html#ga9fd0d39ec786f26b7ea86f9bc8380bdd":[11,0,1], +"group__object.html#gaa0c31077aeadb6fc627d4c5750e58ecb":[11,0,10], +"group__object.html#gaaaf58bcf25e6d30a3469848d36c65a05":[11,0,2], +"group__object.html#gab66bdaf2c97d2cbd2a94a5a3e67ffabc":[11,0,4], +"group__object.html#gab9563a58e164e9f5f75805cffb3582ec":[11,0,8], +"group__object.html#gacefcaf06811426a241ed97a6948a94ee":[11,0,3], +"group__scalar.html":[11,2], +"haswell_2base_8h_source.html":[14,0,0,0,5,0], +"haswell_2begin_8h_source.html":[14,0,0,0,5,1], +"haswell_2bitmanipulation_8h_source.html":[14,0,0,0,5,2], +"haswell_2bitmask_8h_source.html":[14,0,0,0,5,3], +"haswell_2end_8h_source.html":[14,0,0,0,5,4], +"haswell_2implementation_8h_source.html":[14,0,0,0,5,5], +"haswell_2intrinsics_8h_source.html":[14,0,0,0,5,6], +"haswell_2numberparsing__defs_8h_source.html":[14,0,0,0,5,7], +"haswell_2ondemand_8h_source.html":[14,0,0,0,5,8], +"haswell_2simd_8h_source.html":[14,0,0,0,5,9], +"haswell_2stringparsing__defs_8h_source.html":[14,0,0,0,5,10], +"haswell_8h_source.html":[14,0,0,0,26], +"hierarchy.html":[13,2], +"icelake_2base_8h_source.html":[14,0,0,0,6,0], +"icelake_2begin_8h_source.html":[14,0,0,0,6,1], +"icelake_2bitmanipulation_8h_source.html":[14,0,0,0,6,2], +"icelake_2bitmask_8h_source.html":[14,0,0,0,6,3], +"icelake_2end_8h_source.html":[14,0,0,0,6,4], +"icelake_2implementation_8h_source.html":[14,0,0,0,6,5], +"icelake_2intrinsics_8h_source.html":[14,0,0,0,6,6], +"icelake_2numberparsing__defs_8h_source.html":[14,0,0,0,6,7], +"icelake_2ondemand_8h_source.html":[14,0,0,0,6,8], +"icelake_2simd_8h_source.html":[14,0,0,0,6,9], +"icelake_2stringparsing__defs_8h_source.html":[14,0,0,0,6,10], +"icelake_8h_source.html":[14,0,0,0,27], +"implementation_8h_source.html":[14,0,0,0,28], +"implementation__detection_8h_source.html":[14,0,0,0,29], +"implementation__simdjson__result__base-inl_8h_source.html":[14,0,0,0,4,6], +"implementation__simdjson__result__base_8h_source.html":[14,0,0,0,4,7], "index.html":[], -"instruction__set_8h_source.html":[13,0,0,0,7,2], -"internal_2dom__parser__implementation_8h_source.html":[13,0,0,0,7,1], -"json__builder_8h_source.html":[13,0,0,0,4,0,14], -"json__iterator-inl_8h_source.html":[13,0,0,0,4,0,15], -"json__iterator_8h_source.html":[13,0,0,0,4,0,16], -"json__string__builder-inl_8h_source.html":[13,0,0,0,4,0,17], -"json__string__builder_8h_source.html":[13,0,0,0,4,0,18], -"json__type-inl_8h_source.html":[13,0,0,0,4,0,19], -"json__type_8h_source.html":[13,0,0,0,4,0,20], -"jsoncharutils_8h_source.html":[13,0,0,0,4,8], -"jsoncharutils__tables_8h_source.html":[13,0,0,0,7,3], -"jsonformatutils_8h_source.html":[13,0,0,0,7,4], -"jsonioutil_8h_source.html":[13,0,0,0,30], -"jsonpathutil_8h_source.html":[13,0,0,0,31], -"lasx_2base_8h_source.html":[13,0,0,0,8,0], -"lasx_2begin_8h_source.html":[13,0,0,0,8,1], -"lasx_2bitmanipulation_8h_source.html":[13,0,0,0,8,2], -"lasx_2bitmask_8h_source.html":[13,0,0,0,8,3], -"lasx_2end_8h_source.html":[13,0,0,0,8,4], -"lasx_2implementation_8h_source.html":[13,0,0,0,8,5], -"lasx_2intrinsics_8h_source.html":[13,0,0,0,8,6], -"lasx_2numberparsing__defs_8h_source.html":[13,0,0,0,8,7], -"lasx_2ondemand_8h_source.html":[13,0,0,0,8,8], -"lasx_2simd_8h_source.html":[13,0,0,0,8,9], -"lasx_2stringparsing__defs_8h_source.html":[13,0,0,0,8,10], -"lasx_8h_source.html":[13,0,0,0,32], -"logger-inl_8h_source.html":[13,0,0,0,4,0,21], -"logger_8h_source.html":[13,0,0,0,4,0,22], -"lsx_2base_8h_source.html":[13,0,0,0,9,0], -"lsx_2begin_8h_source.html":[13,0,0,0,9,1], -"lsx_2bitmanipulation_8h_source.html":[13,0,0,0,9,2], -"lsx_2bitmask_8h_source.html":[13,0,0,0,9,3], -"lsx_2end_8h_source.html":[13,0,0,0,9,4], -"lsx_2implementation_8h_source.html":[13,0,0,0,9,5], -"lsx_2intrinsics_8h_source.html":[13,0,0,0,9,6], -"lsx_2numberparsing__defs_8h_source.html":[13,0,0,0,9,7], -"lsx_2ondemand_8h_source.html":[13,0,0,0,9,8], -"lsx_2simd_8h_source.html":[13,0,0,0,9,9], -"lsx_2stringparsing__defs_8h_source.html":[13,0,0,0,9,10], -"lsx_8h_source.html":[13,0,0,0,33], +"instruction__set_8h_source.html":[14,0,0,0,7,2], +"internal_2dom__parser__implementation_8h_source.html":[14,0,0,0,7,1], +"json__builder_8h_source.html":[14,0,0,0,4,0,15], +"json__iterator-inl_8h_source.html":[14,0,0,0,4,0,16], +"json__iterator_8h_source.html":[14,0,0,0,4,0,17], +"json__string__builder-inl_8h_source.html":[14,0,0,0,4,0,18], +"json__string__builder_8h_source.html":[14,0,0,0,4,0,19], +"json__type-inl_8h_source.html":[14,0,0,0,4,0,20], +"json__type_8h_source.html":[14,0,0,0,4,0,21], +"jsoncharutils_8h_source.html":[14,0,0,0,4,8], +"jsoncharutils__tables_8h_source.html":[14,0,0,0,7,3], +"jsonformatutils_8h_source.html":[14,0,0,0,7,4], +"jsonioutil_8h_source.html":[14,0,0,0,30], +"jsonpathutil_8h_source.html":[14,0,0,0,31], +"lasx_2base_8h_source.html":[14,0,0,0,8,0], +"lasx_2begin_8h_source.html":[14,0,0,0,8,1], +"lasx_2bitmanipulation_8h_source.html":[14,0,0,0,8,2], +"lasx_2bitmask_8h_source.html":[14,0,0,0,8,3], +"lasx_2end_8h_source.html":[14,0,0,0,8,4], +"lasx_2implementation_8h_source.html":[14,0,0,0,8,5], +"lasx_2intrinsics_8h_source.html":[14,0,0,0,8,6], +"lasx_2numberparsing__defs_8h_source.html":[14,0,0,0,8,7], +"lasx_2ondemand_8h_source.html":[14,0,0,0,8,8], +"lasx_2simd_8h_source.html":[14,0,0,0,8,9], +"lasx_2stringparsing__defs_8h_source.html":[14,0,0,0,8,10], +"lasx_8h_source.html":[14,0,0,0,32], +"logger-inl_8h_source.html":[14,0,0,0,4,0,22], +"logger_8h_source.html":[14,0,0,0,4,0,23], +"lsx_2base_8h_source.html":[14,0,0,0,9,0], +"lsx_2begin_8h_source.html":[14,0,0,0,9,1], +"lsx_2bitmanipulation_8h_source.html":[14,0,0,0,9,2], +"lsx_2bitmask_8h_source.html":[14,0,0,0,9,3], +"lsx_2end_8h_source.html":[14,0,0,0,9,4], +"lsx_2implementation_8h_source.html":[14,0,0,0,9,5], +"lsx_2intrinsics_8h_source.html":[14,0,0,0,9,6], +"lsx_2numberparsing__defs_8h_source.html":[14,0,0,0,9,7], +"lsx_2ondemand_8h_source.html":[14,0,0,0,9,8], +"lsx_2simd_8h_source.html":[14,0,0,0,9,9], +"lsx_2stringparsing__defs_8h_source.html":[14,0,0,0,9,10], +"lsx_8h_source.html":[14,0,0,0,33], "md_doc_2basics.html":[0], "md_doc_2basics.html#autotoc_md0":[0,0], "md_doc_2basics.html#autotoc_md1":[0,1], @@ -248,6 +249,5 @@ var NAVTREEINDEX2 = "md_doc_2basics.html#autotoc_md18":[0,11], "md_doc_2basics.html#autotoc_md19":[0,12], "md_doc_2basics.html#autotoc_md2":[0,2], -"md_doc_2basics.html#autotoc_md20":[0,13], -"md_doc_2basics.html#autotoc_md21":[0,14] +"md_doc_2basics.html#autotoc_md20":[0,13] }; diff --git a/navtreeindex3.js b/navtreeindex3.js index 8f769da22..0479b9681 100644 --- a/navtreeindex3.js +++ b/navtreeindex3.js @@ -1,253 +1,253 @@ var NAVTREEINDEX3 = { -"md_doc_2basics.html#autotoc_md22":[0,15], -"md_doc_2basics.html#autotoc_md23":[0,15,0], -"md_doc_2basics.html#autotoc_md24":[0,15,1], -"md_doc_2basics.html#autotoc_md25":[0,15,2], -"md_doc_2basics.html#autotoc_md26":[0,15,3], -"md_doc_2basics.html#autotoc_md27":[0,15,4], -"md_doc_2basics.html#autotoc_md28":[0,16], -"md_doc_2basics.html#autotoc_md29":[0,17], +"md_doc_2basics.html#autotoc_md21":[0,14], +"md_doc_2basics.html#autotoc_md22":[0,14,0], +"md_doc_2basics.html#autotoc_md23":[0,14,1], +"md_doc_2basics.html#autotoc_md24":[0,15], +"md_doc_2basics.html#autotoc_md25":[0,16], +"md_doc_2basics.html#autotoc_md26":[0,16,0], +"md_doc_2basics.html#autotoc_md27":[0,16,1], +"md_doc_2basics.html#autotoc_md28":[0,16,2], +"md_doc_2basics.html#autotoc_md29":[0,16,3], "md_doc_2basics.html#autotoc_md3":[0,3], -"md_doc_2basics.html#autotoc_md30":[0,18], -"md_doc_2basics.html#autotoc_md31":[0,19], -"md_doc_2basics.html#autotoc_md32":[0,20], -"md_doc_2basics.html#autotoc_md33":[0,21], -"md_doc_2basics.html#autotoc_md34":[0,21,0], -"md_doc_2basics.html#autotoc_md35":[0,22], -"md_doc_2basics.html#autotoc_md36":[0,23], -"md_doc_2basics.html#autotoc_md37":[0,24], -"md_doc_2basics.html#autotoc_md38":[0,25], -"md_doc_2basics.html#autotoc_md39":[0,26], +"md_doc_2basics.html#autotoc_md30":[0,16,4], +"md_doc_2basics.html#autotoc_md31":[0,17], +"md_doc_2basics.html#autotoc_md32":[0,18], +"md_doc_2basics.html#autotoc_md33":[0,19], +"md_doc_2basics.html#autotoc_md34":[0,20], +"md_doc_2basics.html#autotoc_md35":[0,21], +"md_doc_2basics.html#autotoc_md36":[0,22], +"md_doc_2basics.html#autotoc_md37":[0,22,0], +"md_doc_2basics.html#autotoc_md38":[0,23], +"md_doc_2basics.html#autotoc_md39":[0,24], "md_doc_2basics.html#autotoc_md4":[0,4], -"md_doc_2basics.html#autotoc_md40":[0,27], -"md_doc_2basics.html#autotoc_md41":[0,28], +"md_doc_2basics.html#autotoc_md40":[0,25], +"md_doc_2basics.html#autotoc_md41":[0,26], +"md_doc_2basics.html#autotoc_md42":[0,27], +"md_doc_2basics.html#autotoc_md43":[0,28], +"md_doc_2basics.html#autotoc_md44":[0,29], "md_doc_2basics.html#autotoc_md5":[0,5], "md_doc_2basics.html#autotoc_md6":[0,6], "md_doc_2basics.html#autotoc_md7":[0,6,0], "md_doc_2basics.html#autotoc_md8":[0,7], "md_doc_2basics.html#autotoc_md9":[0,8], "md_doc_2builder.html":[1], -"md_doc_2builder.html#autotoc_md42":[1,0], -"md_doc_2builder.html#autotoc_md43":[1,1], -"md_doc_2builder.html#autotoc_md44":[1,1,0], -"md_doc_2builder.html#autotoc_md45":[1,2], -"md_doc_2builder.html#autotoc_md46":[1,2,0], -"md_doc_2builder.html#autotoc_md47":[1,2,1], -"md_doc_2builder.html#autotoc_md48":[1,2,2], -"md_doc_2builder.html#autotoc_md49":[1,2,3], -"md_doc_2dom.html":[2], -"md_doc_2dom.html#autotoc_md50":[2,0], -"md_doc_2dom.html#autotoc_md51":[2,1], -"md_doc_2dom.html#autotoc_md52":[2,2], -"md_doc_2dom.html#autotoc_md53":[2,2,0], -"md_doc_2dom.html#autotoc_md54":[2,3], -"md_doc_2dom.html#autotoc_md55":[2,4], -"md_doc_2dom.html#autotoc_md56":[2,5], -"md_doc_2dom.html#autotoc_md57":[2,6], -"md_doc_2dom.html#autotoc_md58":[2,7], -"md_doc_2dom.html#autotoc_md59":[2,7,0], -"md_doc_2dom.html#autotoc_md60":[2,8], -"md_doc_2dom.html#autotoc_md61":[2,8,0], -"md_doc_2dom.html#autotoc_md62":[2,8,1], -"md_doc_2dom.html#autotoc_md63":[2,9], -"md_doc_2dom.html#autotoc_md64":[2,10], -"md_doc_2dom.html#autotoc_md65":[2,11], -"md_doc_2dom.html#autotoc_md66":[2,12], -"md_doc_2dom.html#autotoc_md67":[2,13], -"md_doc_2dom.html#autotoc_md68":[2,14], -"md_doc_2implementation-selection.html":[3], -"md_doc_2implementation-selection.html#autotoc_md69":[3,0], -"md_doc_2implementation-selection.html#autotoc_md70":[3,1], -"md_doc_2implementation-selection.html#autotoc_md71":[3,2], -"md_doc_2implementation-selection.html#autotoc_md72":[3,3], -"md_doc_2implementation-selection.html#autotoc_md73":[3,4], -"md_doc_2implementation-selection.html#autotoc_md74":[3,5], -"md_doc_2iterate__many.html":[4], -"md_doc_2iterate__many.html#autotoc_md75":[4,0], -"md_doc_2iterate__many.html#autotoc_md76":[4,1], -"md_doc_2iterate__many.html#autotoc_md77":[4,2], -"md_doc_2iterate__many.html#autotoc_md78":[4,2,0], -"md_doc_2iterate__many.html#autotoc_md79":[4,2,1], -"md_doc_2iterate__many.html#autotoc_md80":[4,2,2], -"md_doc_2iterate__many.html#autotoc_md81":[4,3], -"md_doc_2iterate__many.html#autotoc_md82":[4,4], -"md_doc_2iterate__many.html#autotoc_md83":[4,5], -"md_doc_2iterate__many.html#autotoc_md84":[4,6], -"md_doc_2iterate__many.html#autotoc_md85":[4,7], -"md_doc_2iterate__many.html#autotoc_md86":[4,8], -"md_doc_2iterate__many.html#autotoc_md87":[4,9], -"md_doc_2ondemand__design.html":[5], -"md_doc_2ondemand__design.html#autotoc_md100":[5,2], -"md_doc_2ondemand__design.html#autotoc_md88":[0], -"md_doc_2ondemand__design.html#autotoc_md89":[1], -"md_doc_2ondemand__design.html#autotoc_md90":[2], -"md_doc_2ondemand__design.html#autotoc_md91":[3], -"md_doc_2ondemand__design.html#autotoc_md92":[5,0], -"md_doc_2ondemand__design.html#autotoc_md93":[5,0,4], -"md_doc_2ondemand__design.html#autotoc_md94":[5,1], -"md_doc_2ondemand__design.html#autotoc_md95":[5,1,0], -"md_doc_2ondemand__design.html#autotoc_md96":[5,1,1], -"md_doc_2ondemand__design.html#autotoc_md97":[5,1,2], -"md_doc_2ondemand__design.html#autotoc_md98":[5,1,3], -"md_doc_2ondemand__design.html#autotoc_md99":[5,1,4], -"md_doc_2parse__many.html":[6], -"md_doc_2parse__many.html#autotoc_md101":[6,0], -"md_doc_2parse__many.html#autotoc_md102":[6,1], -"md_doc_2parse__many.html#autotoc_md103":[6,2], -"md_doc_2parse__many.html#autotoc_md104":[6,3], -"md_doc_2parse__many.html#autotoc_md105":[6,3,0], -"md_doc_2parse__many.html#autotoc_md106":[6,3,1], -"md_doc_2parse__many.html#autotoc_md107":[6,3,2], -"md_doc_2parse__many.html#autotoc_md108":[6,4], -"md_doc_2parse__many.html#autotoc_md109":[6,5], -"md_doc_2parse__many.html#autotoc_md110":[6,6], -"md_doc_2parse__many.html#autotoc_md111":[6,7], -"md_doc_2parse__many.html#autotoc_md112":[6,8], -"md_doc_2performance.html":[7], -"md_doc_2performance.html#autotoc_md113":[7,0], -"md_doc_2performance.html#autotoc_md114":[7,1], -"md_doc_2performance.html#autotoc_md115":[7,2], -"md_doc_2performance.html#autotoc_md116":[7,3], -"md_doc_2performance.html#autotoc_md117":[7,4], -"md_doc_2performance.html#autotoc_md118":[7,5], -"md_doc_2performance.html#autotoc_md119":[7,6], -"md_doc_2performance.html#autotoc_md120":[7,7], -"md_doc_2performance.html#autotoc_md121":[7,8], -"md_doc_2tape.html":[8], -"md_doc_2tape.html#autotoc_md123":[8,0], -"md_doc_2tape.html#autotoc_md124":[8,0,0], -"md_doc_2tape.html#autotoc_md125":[8,1], -"md_doc_2tape.html#autotoc_md126":[8,2], -"md_doc_2tape.html#autotoc_md127":[8,3], -"md_doc_2tape.html#autotoc_md128":[8,4], -"md_doc_2tape.html#autotoc_md129":[8,5], -"md_doc_2tape.html#autotoc_md130":[8,6], -"md_doc_2tape.html#autotoc_md131":[8,7], -"minify_8h_source.html":[13,0,0,0,34], -"namespacemembers.html":[11,1,0], -"namespacemembers_enum.html":[11,1,4], -"namespacemembers_eval.html":[11,1,5], -"namespacemembers_func.html":[11,1,1], -"namespacemembers_type.html":[11,1,3], -"namespacemembers_vars.html":[11,1,2], -"namespaces.html":[11,0], -"namespacesimdjson.html":[11,0,0], -"namespacesimdjson.html#a04edabca6d128b8b31592e1e2e331ae0":[11,0,0,54], -"namespacesimdjson.html#a05cc0046bde46e606edca27b0f9b3e0c":[11,0,0,34], -"namespacesimdjson.html#a27d0ec4db7cb0197fa90096703a13e25":[11,0,0,31], -"namespacesimdjson.html#a28a847c4b31fc804bec2987b171dbd07":[11,0,0,55], -"namespacesimdjson.html#a2ad10bace3d523b188415e609640536a":[11,0,0,41], -"namespacesimdjson.html#a2cda17221b852e5c398bad5bf350d270":[11,0,0,49], -"namespacesimdjson.html#a43514fe76c3095e45f30a050a9551d27":[11,0,0,42], -"namespacesimdjson.html#a4c998fcc6bf2bca2196b45a5c3e1967a":[11,0,0,51], -"namespacesimdjson.html#a53546f3af0ed6840ffbeefcbefd305a1":[11,0,0,53], -"namespacesimdjson.html#a56e8e2fa6798b9e0da80bc51ae4a5f29":[11,0,0,33], -"namespacesimdjson.html#a598dd79ec46726de8a6d409ba1bae034":[11,0,0,48], -"namespacesimdjson.html#a63b494af834917af13120dcd57719bdb":[11,0,0,28], -"namespacesimdjson.html#a65b00a7a7a9c8fafe9eb3b9b413a36fa":[11,0,0,32], -"namespacesimdjson.html#a667605c4c36cfa45bf111d6c76d39284":[11,0,0,44], -"namespacesimdjson.html#a687e6510cd2f94c7dc8a31a6db83d278":[11,0,0,46], -"namespacesimdjson.html#a6df2598eb1d4e1ea669c41831cc7325d":[11,0,0,56], -"namespacesimdjson.html#a6f306690d6d088d80b0cc2717040b2d0":[11,0,0,37], -"namespacesimdjson.html#a73aaf38a36c010a6c5421dbe747c5736":[11,0,0,43], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9":[11,0,0,29], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a00d7c038f551d9527ba8897f3cee907d":[11,0,0,29,29], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a0c6b4af181d3d5f40a09182522c88681":[11,0,0,29,4], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a0f9ce97e85e7607e0f4d3811b818a013":[11,0,0,29,15], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a1de02af1d67e8350f612eee0dcf634b4":[11,0,0,29,17], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a2d50048bbe409023df4e88f6ffe3bc71":[11,0,0,29,1], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a351bcafefbbc80a6dadc1ea6c27a35e6":[11,0,0,29,26], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a398a5389d6e20c39e8880b0101b66f56":[11,0,0,29,11], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a3efa5cb684eb31639e2e36cda195e2d7":[11,0,0,29,32], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a3f94172e04ae52a978ea62157140b0de":[11,0,0,29,30], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4005fbda56edc47e077e5cfd4e68cda9":[11,0,0,29,3], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4a2c71f8eca438b3f0553a2811bdab9a":[11,0,0,29,20], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4d768ac107473bceb91f8a0d1a824bc2":[11,0,0,29,16], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4e161f7bd0b3ca10f41a220a75de8cde":[11,0,0,29,8], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a69f1b9e7b9970fbb60416ebce2f894c3":[11,0,0,29,33], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a7aed571b420dcdfe59742e0df97b415a":[11,0,0,29,13], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a7b0467451dc0cecb41d3ea46c4a0005b":[11,0,0,29,23], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a80bcf6820da38abe1a2e9abeaa0f0c49":[11,0,0,29,19], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8c779dcc8fb73a4eb8891af3ef65eebb":[11,0,0,29,18], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8ef9cfdd78dd92d2b304249917638d12":[11,0,0,29,5], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa0e71422c8ae80ebaa11d8d74d64737f":[11,0,0,29,2], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa4ffc800804829a88c5b52ac3c4c6681":[11,0,0,29,0], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab6e8bfc242f7bea38657eaf61400077f":[11,0,0,29,6], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab70f5a6f0ac798d482e95a0fcc528676":[11,0,0,29,31], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab8a4df583110f900741d0b3f229f349a":[11,0,0,29,28], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9abdd3905c91a152a01637a2946066db6b":[11,0,0,29,24], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ac2aef8f0fc33187cc118c95fade925d2":[11,0,0,29,12], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aca57917fc85c421aab3f2dd451519fa5":[11,0,0,29,14], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9acaec8ffce84b1acf9e6833b0f930878e":[11,0,0,29,21], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9adfcabbbd1ddb0843a0f320e062866ae8":[11,0,0,29,9], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae5acac431888aeadfef98bee7d66957e":[11,0,0,29,10], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae726a74b8a99e4bf802f3078436a2394":[11,0,0,29,7], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae9067bb5cb6283141b1c66466005ac0d":[11,0,0,29,25], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aee3335b961f2d0f732e95b359c16a69a":[11,0,0,29,27], -"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aeeaf930969566f76840224d64ee3a9a1":[11,0,0,29,22], -"namespacesimdjson.html#a94bb4244756d764cf0ed7de180ae6520":[11,0,0,39], -"namespacesimdjson.html#ab655c5e7cc4bead4faaca9f74ca94abe":[11,0,0,36], -"namespacesimdjson.html#abdd2db13c7545fea225086c6037657b5":[11,0,0,35], -"namespacesimdjson.html#ac4131fd8cef9c8046d0bc9aee8d44d16":[11,0,0,45], -"namespacesimdjson.html#ad0bad3783275be4012bd5cfd0327875a":[11,0,0,57], -"namespacesimdjson.html#ade4516933f53705eacfaed65ed14962d":[11,0,0,52], -"namespacesimdjson.html#ade48fbb6e7d8bf0be40bf7345cfbe4be":[11,0,0,38], -"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811":[11,0,0,30], -"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811a929eb14f376ff68fc0ddd3d682e00d4c":[11,0,0,30,1], -"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811aaf37d08ae228a87dc6b265fd1019c97d":[11,0,0,30,0], -"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811ac059cc555f4992b3eb481f03b70df100":[11,0,0,30,2], -"namespacesimdjson.html#aeb4ef5cab43d52da3fdd99cb689aff2c":[11,0,0,40], -"namespacesimdjson.html#aecdd750132f0eb123a6d61113b4197bf":[11,0,0,58], -"namespacesimdjson.html#aed443864cc94c09c3f88eea39f8ce645":[11,0,0,47], -"namespacesimdjson.html#afc529e3bcacb5b3c747b525fb443771f":[11,0,0,50], -"namespacesimdjson_1_1arm64.html":[11,0,0,0], -"namespacesimdjson_1_1dom.html":[11,0,0,1], -"namespacesimdjson_1_1dom.html#a1c26d3ab6fcbbb3ecb69add4236f0a4d":[11,0,0,1,10], -"namespacesimdjson_1_1dom.html#a34e6f2a4920f4dcb683f5730f8d8601b":[11,0,0,1,8], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3a":[11,0,0,1,7], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa4e866b275c85fbb439f6484251cfb31c":[11,0,0,1,7,2], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa63b588d5559f64f89a416e656880b949":[11,0,0,1,7,5], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa6de7acf711860176ba606e9aa2b85d5f":[11,0,0,1,7,3], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa8eee8e217391199668cbac89472ace53":[11,0,0,1,7,1], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa97b2c144243b2b9d2c593ec268b62f5":[11,0,0,1,7,6], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa9f0aff2067f91437e50e4872b229e6a":[11,0,0,1,7,7], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aacb4fb1757fb37c43cded35d3eb857c43":[11,0,0,1,7,0], -"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aafd3e4ece78a7d422280d5ed379482229":[11,0,0,1,7,4], -"namespacesimdjson_1_1dom.html#abdab607221c423b08344548fa442a45a":[11,0,0,1,9], -"namespacesimdjson_1_1fallback.html":[11,0,0,2], -"namespacesimdjson_1_1haswell.html":[11,0,0,3], -"namespacesimdjson_1_1icelake.html":[11,0,0,4], -"namespacesimdjson_1_1lasx.html":[11,0,0,5], -"namespacesimdjson_1_1lsx.html":[11,0,0,6], -"namespacesimdjson_1_1ppc64.html":[11,0,0,7], -"namespacesimdjson_1_1westmere.html":[11,0,0,8], -"numberparsing_8h_source.html":[13,0,0,0,4,9], -"numberparsing__tables_8h_source.html":[13,0,0,0,7,5], -"object__iterator-inl_8h_source.html":[13,0,0,0,4,0,25], -"object__iterator_8h_source.html":[13,0,0,0,4,0,26], -"ondemand_2amalgamated_8h_source.html":[13,0,0,0,4,0,0], -"ondemand_2dependencies_8h_source.html":[13,0,0,0,4,0,6], -"ondemand_8h_source.html":[13,0,0,0,35], -"padded__string-inl_8h_source.html":[13,0,0,0,36], -"padded__string_8h_source.html":[13,0,0,0,37], -"padded__string__view-inl_8h_source.html":[13,0,0,0,38], -"padded__string__view_8h_source.html":[13,0,0,0,39], -"pages.html":[], -"portability_8h_source.html":[13,0,0,0,40], -"ppc64_2base_8h_source.html":[13,0,0,0,11,0], -"ppc64_2begin_8h_source.html":[13,0,0,0,11,1], -"ppc64_2bitmanipulation_8h_source.html":[13,0,0,0,11,2], -"ppc64_2bitmask_8h_source.html":[13,0,0,0,11,3], -"ppc64_2end_8h_source.html":[13,0,0,0,11,4], -"ppc64_2implementation_8h_source.html":[13,0,0,0,11,5], -"ppc64_2intrinsics_8h_source.html":[13,0,0,0,11,6], -"ppc64_2numberparsing__defs_8h_source.html":[13,0,0,0,11,7], -"ppc64_2ondemand_8h_source.html":[13,0,0,0,11,8], -"ppc64_2simd_8h_source.html":[13,0,0,0,11,9], -"ppc64_2stringparsing__defs_8h_source.html":[13,0,0,0,11,10], -"ppc64_8h_source.html":[13,0,0,0,41], -"raw__json__string-inl_8h_source.html":[13,0,0,0,4,0,29], -"raw__json__string_8h_source.html":[13,0,0,0,4,0,30], -"simdjson_8h.html":[13,0,0,0,42] +"md_doc_2builder.html#autotoc_md45":[1,0], +"md_doc_2builder.html#autotoc_md46":[1,1], +"md_doc_2builder.html#autotoc_md47":[1,1,0], +"md_doc_2builder.html#autotoc_md48":[1,2], +"md_doc_2builder.html#autotoc_md49":[1,2,0], +"md_doc_2builder.html#autotoc_md50":[1,2,1], +"md_doc_2builder.html#autotoc_md51":[1,2,2], +"md_doc_2builder.html#autotoc_md52":[1,2,3], +"md_doc_2compile__time__accessors.html":[2], +"md_doc_2compile__time__accessors.html#autotoc_md54":[2,0], +"md_doc_2compile__time__accessors.html#autotoc_md55":[2,1], +"md_doc_2compile__time__accessors.html#autotoc_md56":[2,2], +"md_doc_2compile__time__accessors.html#autotoc_md57":[2,3], +"md_doc_2compile__time__accessors.html#autotoc_md58":[2,3,0], +"md_doc_2compile__time__accessors.html#autotoc_md59":[2,3,1], +"md_doc_2compile__time__accessors.html#autotoc_md60":[2,4], +"md_doc_2compile__time__accessors.html#autotoc_md61":[2,4,0], +"md_doc_2compile__time__accessors.html#autotoc_md62":[2,4,1], +"md_doc_2compile__time__accessors.html#autotoc_md63":[2,5], +"md_doc_2compile__time__accessors.html#autotoc_md64":[2,5,0], +"md_doc_2compile__time__accessors.html#autotoc_md65":[2,5,1], +"md_doc_2compile__time__accessors.html#autotoc_md66":[2,6], +"md_doc_2compile__time__accessors.html#autotoc_md67":[2,6,0], +"md_doc_2compile__time__accessors.html#autotoc_md68":[2,6,1], +"md_doc_2compile__time__accessors.html#autotoc_md69":[2,6,2], +"md_doc_2compile__time__accessors.html#autotoc_md70":[2,7], +"md_doc_2compile__time__accessors.html#autotoc_md71":[2,7,0], +"md_doc_2compile__time__accessors.html#autotoc_md72":[2,7,1], +"md_doc_2compile__time__accessors.html#autotoc_md73":[2,7,2], +"md_doc_2compile__time__accessors.html#autotoc_md74":[2,8], +"md_doc_2compile__time__accessors.html#autotoc_md75":[2,9], +"md_doc_2compile__time__accessors.html#autotoc_md76":[2,10], +"md_doc_2compile__time__accessors.html#autotoc_md77":[2,11], +"md_doc_2compile__time__accessors.html#autotoc_md78":[2,12], +"md_doc_2dom.html":[3], +"md_doc_2dom.html#autotoc_md79":[3,0], +"md_doc_2dom.html#autotoc_md80":[3,1], +"md_doc_2dom.html#autotoc_md81":[3,2], +"md_doc_2dom.html#autotoc_md82":[3,2,0], +"md_doc_2dom.html#autotoc_md83":[3,3], +"md_doc_2dom.html#autotoc_md84":[3,4], +"md_doc_2dom.html#autotoc_md85":[3,5], +"md_doc_2dom.html#autotoc_md86":[3,6], +"md_doc_2dom.html#autotoc_md87":[3,7], +"md_doc_2dom.html#autotoc_md88":[3,7,0], +"md_doc_2dom.html#autotoc_md89":[3,8], +"md_doc_2dom.html#autotoc_md90":[3,8,0], +"md_doc_2dom.html#autotoc_md91":[3,8,1], +"md_doc_2dom.html#autotoc_md92":[3,9], +"md_doc_2dom.html#autotoc_md93":[3,10], +"md_doc_2dom.html#autotoc_md94":[3,11], +"md_doc_2dom.html#autotoc_md95":[3,12], +"md_doc_2dom.html#autotoc_md96":[3,13], +"md_doc_2dom.html#autotoc_md97":[3,14], +"md_doc_2implementation-selection.html":[4], +"md_doc_2implementation-selection.html#autotoc_md100":[4,2], +"md_doc_2implementation-selection.html#autotoc_md101":[4,3], +"md_doc_2implementation-selection.html#autotoc_md102":[4,4], +"md_doc_2implementation-selection.html#autotoc_md103":[4,5], +"md_doc_2implementation-selection.html#autotoc_md98":[4,0], +"md_doc_2implementation-selection.html#autotoc_md99":[4,1], +"md_doc_2iterate__many.html":[5], +"md_doc_2iterate__many.html#autotoc_md104":[5,0], +"md_doc_2iterate__many.html#autotoc_md105":[5,1], +"md_doc_2iterate__many.html#autotoc_md106":[5,2], +"md_doc_2iterate__many.html#autotoc_md107":[5,2,0], +"md_doc_2iterate__many.html#autotoc_md108":[5,2,1], +"md_doc_2iterate__many.html#autotoc_md109":[5,2,2], +"md_doc_2iterate__many.html#autotoc_md110":[5,3], +"md_doc_2iterate__many.html#autotoc_md111":[5,4], +"md_doc_2iterate__many.html#autotoc_md112":[5,5], +"md_doc_2iterate__many.html#autotoc_md113":[5,6], +"md_doc_2iterate__many.html#autotoc_md114":[5,7], +"md_doc_2iterate__many.html#autotoc_md115":[5,8], +"md_doc_2iterate__many.html#autotoc_md116":[5,9], +"md_doc_2ondemand__design.html":[6], +"md_doc_2ondemand__design.html#autotoc_md117":[0], +"md_doc_2ondemand__design.html#autotoc_md118":[1], +"md_doc_2ondemand__design.html#autotoc_md119":[2], +"md_doc_2ondemand__design.html#autotoc_md120":[3], +"md_doc_2ondemand__design.html#autotoc_md121":[6,0], +"md_doc_2ondemand__design.html#autotoc_md122":[6,0,4], +"md_doc_2ondemand__design.html#autotoc_md123":[6,1], +"md_doc_2ondemand__design.html#autotoc_md124":[6,1,0], +"md_doc_2ondemand__design.html#autotoc_md125":[6,1,1], +"md_doc_2ondemand__design.html#autotoc_md126":[6,1,2], +"md_doc_2ondemand__design.html#autotoc_md127":[6,1,3], +"md_doc_2ondemand__design.html#autotoc_md128":[6,1,4], +"md_doc_2ondemand__design.html#autotoc_md129":[6,2], +"md_doc_2parse__many.html":[7], +"md_doc_2parse__many.html#autotoc_md130":[7,0], +"md_doc_2parse__many.html#autotoc_md131":[7,1], +"md_doc_2parse__many.html#autotoc_md132":[7,2], +"md_doc_2parse__many.html#autotoc_md133":[7,3], +"md_doc_2parse__many.html#autotoc_md134":[7,3,0], +"md_doc_2parse__many.html#autotoc_md135":[7,3,1], +"md_doc_2parse__many.html#autotoc_md136":[7,3,2], +"md_doc_2parse__many.html#autotoc_md137":[7,4], +"md_doc_2parse__many.html#autotoc_md138":[7,5], +"md_doc_2parse__many.html#autotoc_md139":[7,6], +"md_doc_2parse__many.html#autotoc_md140":[7,7], +"md_doc_2parse__many.html#autotoc_md141":[7,8], +"md_doc_2performance.html":[8], +"md_doc_2performance.html#autotoc_md142":[8,0], +"md_doc_2performance.html#autotoc_md143":[8,1], +"md_doc_2performance.html#autotoc_md144":[8,2], +"md_doc_2performance.html#autotoc_md145":[8,3], +"md_doc_2performance.html#autotoc_md146":[8,4], +"md_doc_2performance.html#autotoc_md147":[8,5], +"md_doc_2performance.html#autotoc_md148":[8,6], +"md_doc_2performance.html#autotoc_md149":[8,7], +"md_doc_2performance.html#autotoc_md150":[8,8], +"md_doc_2tape.html":[9], +"md_doc_2tape.html#autotoc_md152":[9,0], +"md_doc_2tape.html#autotoc_md153":[9,0,0], +"md_doc_2tape.html#autotoc_md154":[9,1], +"md_doc_2tape.html#autotoc_md155":[9,2], +"md_doc_2tape.html#autotoc_md156":[9,3], +"md_doc_2tape.html#autotoc_md157":[9,4], +"md_doc_2tape.html#autotoc_md158":[9,5], +"md_doc_2tape.html#autotoc_md159":[9,6], +"md_doc_2tape.html#autotoc_md160":[9,7], +"minify_8h_source.html":[14,0,0,0,34], +"namespacemembers.html":[12,1,0], +"namespacemembers_enum.html":[12,1,4], +"namespacemembers_eval.html":[12,1,5], +"namespacemembers_func.html":[12,1,1], +"namespacemembers_type.html":[12,1,3], +"namespacemembers_vars.html":[12,1,2], +"namespaces.html":[12,0], +"namespacesimdjson.html":[12,0,0], +"namespacesimdjson.html#a04edabca6d128b8b31592e1e2e331ae0":[12,0,0,54], +"namespacesimdjson.html#a05cc0046bde46e606edca27b0f9b3e0c":[12,0,0,34], +"namespacesimdjson.html#a27d0ec4db7cb0197fa90096703a13e25":[12,0,0,31], +"namespacesimdjson.html#a28a847c4b31fc804bec2987b171dbd07":[12,0,0,55], +"namespacesimdjson.html#a2ad10bace3d523b188415e609640536a":[12,0,0,41], +"namespacesimdjson.html#a2cda17221b852e5c398bad5bf350d270":[12,0,0,49], +"namespacesimdjson.html#a43514fe76c3095e45f30a050a9551d27":[12,0,0,42], +"namespacesimdjson.html#a4c998fcc6bf2bca2196b45a5c3e1967a":[12,0,0,51], +"namespacesimdjson.html#a53546f3af0ed6840ffbeefcbefd305a1":[12,0,0,53], +"namespacesimdjson.html#a56e8e2fa6798b9e0da80bc51ae4a5f29":[12,0,0,33], +"namespacesimdjson.html#a598dd79ec46726de8a6d409ba1bae034":[12,0,0,48], +"namespacesimdjson.html#a63b494af834917af13120dcd57719bdb":[12,0,0,28], +"namespacesimdjson.html#a65b00a7a7a9c8fafe9eb3b9b413a36fa":[12,0,0,32], +"namespacesimdjson.html#a667605c4c36cfa45bf111d6c76d39284":[12,0,0,44], +"namespacesimdjson.html#a687e6510cd2f94c7dc8a31a6db83d278":[12,0,0,46], +"namespacesimdjson.html#a6df2598eb1d4e1ea669c41831cc7325d":[12,0,0,56], +"namespacesimdjson.html#a6f306690d6d088d80b0cc2717040b2d0":[12,0,0,37], +"namespacesimdjson.html#a73aaf38a36c010a6c5421dbe747c5736":[12,0,0,43], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9":[12,0,0,29], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a00d7c038f551d9527ba8897f3cee907d":[12,0,0,29,29], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a0c6b4af181d3d5f40a09182522c88681":[12,0,0,29,4], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a0f9ce97e85e7607e0f4d3811b818a013":[12,0,0,29,15], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a1de02af1d67e8350f612eee0dcf634b4":[12,0,0,29,17], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a2d50048bbe409023df4e88f6ffe3bc71":[12,0,0,29,1], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a351bcafefbbc80a6dadc1ea6c27a35e6":[12,0,0,29,26], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a398a5389d6e20c39e8880b0101b66f56":[12,0,0,29,11], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a3efa5cb684eb31639e2e36cda195e2d7":[12,0,0,29,32], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a3f94172e04ae52a978ea62157140b0de":[12,0,0,29,30], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4005fbda56edc47e077e5cfd4e68cda9":[12,0,0,29,3], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4a2c71f8eca438b3f0553a2811bdab9a":[12,0,0,29,20], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4d768ac107473bceb91f8a0d1a824bc2":[12,0,0,29,16], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a4e161f7bd0b3ca10f41a220a75de8cde":[12,0,0,29,8], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a69f1b9e7b9970fbb60416ebce2f894c3":[12,0,0,29,33], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a7aed571b420dcdfe59742e0df97b415a":[12,0,0,29,13], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a7b0467451dc0cecb41d3ea46c4a0005b":[12,0,0,29,23], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a80bcf6820da38abe1a2e9abeaa0f0c49":[12,0,0,29,19], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8c779dcc8fb73a4eb8891af3ef65eebb":[12,0,0,29,18], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9a8ef9cfdd78dd92d2b304249917638d12":[12,0,0,29,5], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa0e71422c8ae80ebaa11d8d74d64737f":[12,0,0,29,2], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aa4ffc800804829a88c5b52ac3c4c6681":[12,0,0,29,0], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab6e8bfc242f7bea38657eaf61400077f":[12,0,0,29,6], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab70f5a6f0ac798d482e95a0fcc528676":[12,0,0,29,31], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ab8a4df583110f900741d0b3f229f349a":[12,0,0,29,28], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9abdd3905c91a152a01637a2946066db6b":[12,0,0,29,24], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ac2aef8f0fc33187cc118c95fade925d2":[12,0,0,29,12], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aca57917fc85c421aab3f2dd451519fa5":[12,0,0,29,14], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9acaec8ffce84b1acf9e6833b0f930878e":[12,0,0,29,21], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9adfcabbbd1ddb0843a0f320e062866ae8":[12,0,0,29,9], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae5acac431888aeadfef98bee7d66957e":[12,0,0,29,10], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae726a74b8a99e4bf802f3078436a2394":[12,0,0,29,7], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9ae9067bb5cb6283141b1c66466005ac0d":[12,0,0,29,25], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aee3335b961f2d0f732e95b359c16a69a":[12,0,0,29,27], +"namespacesimdjson.html#a7b735a3a50ba79e3f7f14df5f77d8da9aeeaf930969566f76840224d64ee3a9a1":[12,0,0,29,22], +"namespacesimdjson.html#a94bb4244756d764cf0ed7de180ae6520":[12,0,0,39], +"namespacesimdjson.html#ab655c5e7cc4bead4faaca9f74ca94abe":[12,0,0,36], +"namespacesimdjson.html#abdd2db13c7545fea225086c6037657b5":[12,0,0,35], +"namespacesimdjson.html#ac4131fd8cef9c8046d0bc9aee8d44d16":[12,0,0,45], +"namespacesimdjson.html#ad0bad3783275be4012bd5cfd0327875a":[12,0,0,57], +"namespacesimdjson.html#ade4516933f53705eacfaed65ed14962d":[12,0,0,52], +"namespacesimdjson.html#ade48fbb6e7d8bf0be40bf7345cfbe4be":[12,0,0,38], +"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811":[12,0,0,30], +"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811a929eb14f376ff68fc0ddd3d682e00d4c":[12,0,0,30,1], +"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811aaf37d08ae228a87dc6b265fd1019c97d":[12,0,0,30,0], +"namespacesimdjson.html#ae6ec9f0ce23fc51d87116b64fdbeb811ac059cc555f4992b3eb481f03b70df100":[12,0,0,30,2], +"namespacesimdjson.html#aeb4ef5cab43d52da3fdd99cb689aff2c":[12,0,0,40], +"namespacesimdjson.html#aecdd750132f0eb123a6d61113b4197bf":[12,0,0,58], +"namespacesimdjson.html#aed443864cc94c09c3f88eea39f8ce645":[12,0,0,47], +"namespacesimdjson.html#afc529e3bcacb5b3c747b525fb443771f":[12,0,0,50], +"namespacesimdjson_1_1arm64.html":[12,0,0,0], +"namespacesimdjson_1_1dom.html":[12,0,0,1], +"namespacesimdjson_1_1dom.html#a1c26d3ab6fcbbb3ecb69add4236f0a4d":[12,0,0,1,10], +"namespacesimdjson_1_1dom.html#a34e6f2a4920f4dcb683f5730f8d8601b":[12,0,0,1,8], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3a":[12,0,0,1,7], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa4e866b275c85fbb439f6484251cfb31c":[12,0,0,1,7,2], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa63b588d5559f64f89a416e656880b949":[12,0,0,1,7,5], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa6de7acf711860176ba606e9aa2b85d5f":[12,0,0,1,7,3], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aa8eee8e217391199668cbac89472ace53":[12,0,0,1,7,1], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa97b2c144243b2b9d2c593ec268b62f5":[12,0,0,1,7,6], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aaa9f0aff2067f91437e50e4872b229e6a":[12,0,0,1,7,7], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aacb4fb1757fb37c43cded35d3eb857c43":[12,0,0,1,7,0], +"namespacesimdjson_1_1dom.html#a6e1dee3a823ecfee91086d3478bbab3aafd3e4ece78a7d422280d5ed379482229":[12,0,0,1,7,4], +"namespacesimdjson_1_1dom.html#abdab607221c423b08344548fa442a45a":[12,0,0,1,9], +"namespacesimdjson_1_1fallback.html":[12,0,0,2], +"namespacesimdjson_1_1haswell.html":[12,0,0,3], +"namespacesimdjson_1_1icelake.html":[12,0,0,4], +"namespacesimdjson_1_1lasx.html":[12,0,0,5], +"namespacesimdjson_1_1lsx.html":[12,0,0,6] }; diff --git a/navtreeindex4.js b/navtreeindex4.js index 710551d5d..16f321ee6 100644 --- a/navtreeindex4.js +++ b/navtreeindex4.js @@ -1,165 +1,195 @@ var NAVTREEINDEX4 = { -"simdjson_8h_source.html":[13,0,0,0,42], -"simdjson__version_8h_source.html":[13,0,0,0,43], -"simdprune__tables_8h_source.html":[13,0,0,0,7,6], -"std__deserialize_8h_source.html":[13,0,0,0,4,0,33], -"string__view_8hpp_source.html":[13,0,0,0,10,0], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html":[12,0,0,1,3], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a108dd35fd49314820106a21afa0fb2ea":[12,0,0,1,3,0], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a11133790f4386ea4d11567a3a0806096":[12,0,0,1,3,7], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a25289df3eaabd14f029e9872a6db3dfb":[12,0,0,1,3,17], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a42ccbe9cf141063172dd3b53bd0f0c76":[12,0,0,1,3,8], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a44ff65b6194c7c1cb74180b43e438619":[12,0,0,1,3,3], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a4f59b204f1eddcdc2b36e6df0639a516":[12,0,0,1,3,1], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a5bf4c42c2cf080f5a3e52586e0a6686c":[12,0,0,1,3,6], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a69649cb039a0b7a0dbdb453b3b4903a9":[12,0,0,1,3,15], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a7ae043cecbabaaaa11b8bb1c1f7b3fd7":[12,0,0,1,3,13], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a96c905c44f3c53cb6cdb23b760d323b8":[12,0,0,1,3,5], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#aa70f44114c55574f111deee115eac900":[12,0,0,1,3,12], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ab37ffa449eaeb55020440de39bf5654f":[12,0,0,1,3,14], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#acd950d432e76a0bc1a7f3236cc7a1894":[12,0,0,1,3,11], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ae51247dce4e77f1e6067cfd4654cca30":[12,0,0,1,3,16], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af167f69543e1834ffbb57b20839d7365":[12,0,0,1,3,9], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af433effbfc61f13dd00002b6ff7fa3dc":[12,0,0,1,3,4], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af8a436d40886a295f618311d3849d7e5":[12,0,0,1,3,2], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#affadf1e1f762248d60950e333b739820":[12,0,0,1,3,10], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html":[12,0,0,1,1,6], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a2b56b11b68e621bbd8ce2051ed10ab60":[12,0,0,1,1,6,12], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a38d6b4b4e91f30c8def71997d23454c2":[12,0,0,1,1,6,9], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a41dc1bfd660e0b9c86cb5a5171fd7c02":[12,0,0,1,1,6,3], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a48f9e54ebd40e1c060be0a4b1d4ff823":[12,0,0,1,1,6,8], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a8c8d29d831635c958e87de0cc2dab8b4":[12,0,0,1,1,6,6], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a92b12b32ee177c2a818618d0595d2584":[12,0,0,1,1,6,5], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa17e81138859bcef934d9502a9852049":[12,0,0,1,1,6,13], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa3481ec0d0726a732688b7fc64372049":[12,0,0,1,1,6,2], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ab261642a30f5e26b0769ce701cd5b9f8":[12,0,0,1,1,6,4], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ac6b75b1d1af73c9ef8958e573c367e1c":[12,0,0,1,1,6,11], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#adb931b17ba9d4d41dd8111ad9288256c":[12,0,0,1,1,6,1], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ae5b327f855878cba9b026059a1fc8a1b":[12,0,0,1,1,6,0], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#af0e89976b80a7a7dedaf8c1a7cfd64a2":[12,0,0,1,1,6,10], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aff5939efdcb41c9d2b9a1997816f093f":[12,0,0,1,1,6,7], -"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html":[12,0,0,1,4], -"structsimdjson_1_1has__custom__serialization.html":[11,0,0,9], -"structsimdjson_1_1has__custom__serialization.html":[12,0,0,2], -"structsimdjson_1_1padded__string.html":[11,0,0,11], -"structsimdjson_1_1padded__string.html":[12,0,0,4], -"structsimdjson_1_1padded__string.html#a07d50795f042119ab848c37cb8911db4":[11,0,0,11,12], -"structsimdjson_1_1padded__string.html#a07d50795f042119ab848c37cb8911db4":[12,0,0,4,12], -"structsimdjson_1_1padded__string.html#a0e5b8e8917478af4e82e023c2efa40e9":[11,0,0,11,9], -"structsimdjson_1_1padded__string.html#a0e5b8e8917478af4e82e023c2efa40e9":[12,0,0,4,9], -"structsimdjson_1_1padded__string.html#a1b15f9345c0215e7548df1aa0105de98":[12,0,0,4,2], -"structsimdjson_1_1padded__string.html#a1b15f9345c0215e7548df1aa0105de98":[11,0,0,11,2], -"structsimdjson_1_1padded__string.html#a44fb0f219f05528e606f79dab7c32482":[12,0,0,4,3], -"structsimdjson_1_1padded__string.html#a44fb0f219f05528e606f79dab7c32482":[11,0,0,11,3], -"structsimdjson_1_1padded__string.html#a4bf80c11155b8067a87bd76762bee23b":[12,0,0,4,10], -"structsimdjson_1_1padded__string.html#a4bf80c11155b8067a87bd76762bee23b":[11,0,0,11,10], -"structsimdjson_1_1padded__string.html#a6199f5bf259fcac114addeef569cf5a5":[12,0,0,4,4], -"structsimdjson_1_1padded__string.html#a6199f5bf259fcac114addeef569cf5a5":[11,0,0,11,4], -"structsimdjson_1_1padded__string.html#a863fded7b347718299190ad3f501d38c":[12,0,0,4,8], -"structsimdjson_1_1padded__string.html#a863fded7b347718299190ad3f501d38c":[11,0,0,11,8], -"structsimdjson_1_1padded__string.html#a8e10a3a5a46a4d58459b052975b0bf66":[12,0,0,4,0], -"structsimdjson_1_1padded__string.html#a8e10a3a5a46a4d58459b052975b0bf66":[11,0,0,11,0], -"structsimdjson_1_1padded__string.html#a952eaf7ff8ddf252d9c00a693978a4da":[11,0,0,11,5], -"structsimdjson_1_1padded__string.html#a952eaf7ff8ddf252d9c00a693978a4da":[12,0,0,4,5], -"structsimdjson_1_1padded__string.html#aa43b3a8e0df4edcf960f04441dd9b930":[11,0,0,11,11], -"structsimdjson_1_1padded__string.html#aa43b3a8e0df4edcf960f04441dd9b930":[12,0,0,4,11], -"structsimdjson_1_1padded__string.html#aa833ecdbe40c220c5baf7a29c472c972":[11,0,0,11,7], -"structsimdjson_1_1padded__string.html#aa833ecdbe40c220c5baf7a29c472c972":[12,0,0,4,7], -"structsimdjson_1_1padded__string.html#aadd3bb268cbba43012c5d17a8c1ab7ef":[11,0,0,11,6], -"structsimdjson_1_1padded__string.html#aadd3bb268cbba43012c5d17a8c1ab7ef":[12,0,0,4,6], -"structsimdjson_1_1padded__string.html#ac06ec74c78934565cdf50df163d35476":[12,0,0,4,1], -"structsimdjson_1_1padded__string.html#ac06ec74c78934565cdf50df163d35476":[11,0,0,11,1], -"structsimdjson_1_1simdjson__error.html":[12,0,0,6], -"structsimdjson_1_1simdjson__error.html":[11,0,0,13], -"structsimdjson_1_1simdjson__error.html#a0bfb7b6beaf33fae13cc16dc9b5dc168":[11,0,0,13,2], -"structsimdjson_1_1simdjson__error.html#a0bfb7b6beaf33fae13cc16dc9b5dc168":[12,0,0,6,2], -"structsimdjson_1_1simdjson__error.html#aa8143615e5f6f02474f6ab165682ab6e":[12,0,0,6,1], -"structsimdjson_1_1simdjson__error.html#aa8143615e5f6f02474f6ab165682ab6e":[11,0,0,13,1], -"structsimdjson_1_1simdjson__error.html#af5355b65f85b897251b3665086075f39":[12,0,0,6,0], -"structsimdjson_1_1simdjson__error.html#af5355b65f85b897251b3665086075f39":[11,0,0,13,0], -"structsimdjson_1_1simdjson__result.html":[12,0,0,7], -"structsimdjson_1_1simdjson__result.html":[11,0,0,14], -"structsimdjson_1_1simdjson__result.html#a0fd74413679274feb2557b412c057cea":[11,0,0,14,1], -"structsimdjson_1_1simdjson__result.html#a0fd74413679274feb2557b412c057cea":[12,0,0,7,1], -"structsimdjson_1_1simdjson__result.html#a23470fcc7f01262019e96d3f3010b4a1":[11,0,0,14,0], -"structsimdjson_1_1simdjson__result.html#a23470fcc7f01262019e96d3f3010b4a1":[12,0,0,7,0], -"structsimdjson_1_1simdjson__result.html#a58753296caf9ec6e03116161519aaed7":[11,0,0,14,7], -"structsimdjson_1_1simdjson__result.html#a58753296caf9ec6e03116161519aaed7":[12,0,0,7,7], -"structsimdjson_1_1simdjson__result.html#a67ba566f7561173cdcfe8ceb99ee1126":[11,0,0,14,6], -"structsimdjson_1_1simdjson__result.html#a67ba566f7561173cdcfe8ceb99ee1126":[12,0,0,7,6], -"structsimdjson_1_1simdjson__result.html#a815368a9e09fa675d0b6672595f5ad19":[11,0,0,14,4], -"structsimdjson_1_1simdjson__result.html#a815368a9e09fa675d0b6672595f5ad19":[12,0,0,7,4], -"structsimdjson_1_1simdjson__result.html#a86dbcba063713c0e284dbde9fae17568":[12,0,0,7,5], -"structsimdjson_1_1simdjson__result.html#a86dbcba063713c0e284dbde9fae17568":[11,0,0,14,5], -"structsimdjson_1_1simdjson__result.html#ab0fafc6d63a14891788a9edaedff4b05":[11,0,0,14,2], -"structsimdjson_1_1simdjson__result.html#ab0fafc6d63a14891788a9edaedff4b05":[12,0,0,7,2], -"structsimdjson_1_1simdjson__result.html#abb562d9f25241605a9ca8e110259c2c4":[12,0,0,7,9], -"structsimdjson_1_1simdjson__result.html#abb562d9f25241605a9ca8e110259c2c4":[11,0,0,14,9], -"structsimdjson_1_1simdjson__result.html#aeb935568c37351a9ae907662f90d2f45":[11,0,0,14,8], -"structsimdjson_1_1simdjson__result.html#aeb935568c37351a9ae907662f90d2f45":[12,0,0,7,8], -"structsimdjson_1_1simdjson__result.html#afcce23c64894ec135fe8c2d255d2121b":[11,0,0,14,3], -"structsimdjson_1_1simdjson__result.html#afcce23c64894ec135fe8c2d255d2121b":[12,0,0,7,3], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html":[11,0,0,19], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html":[12,0,0,12], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html":[11,0,0,20], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html":[12,0,0,13], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html#ac1bcd8afb10742d6f18b8f2f07ba0392":[12,0,0,13,0], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html#ac1bcd8afb10742d6f18b8f2f07ba0392":[11,0,0,20,0], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html":[11,0,0,21], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html":[12,0,0,14], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html":[12,0,0,15], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html":[11,0,0,22], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html":[12,0,0,16], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html":[11,0,0,23], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html":[11,0,0,24], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html":[12,0,0,17], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html":[11,0,0,25], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html":[12,0,0,18], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html":[11,0,0,26], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html":[12,0,0,19], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a3bfd36dafc82c212f165b434ab5378b3":[12,0,0,19,0], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a3bfd36dafc82c212f165b434ab5378b3":[11,0,0,26,0], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a423064962ffe48495948c98afb0e556c":[12,0,0,19,3], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a423064962ffe48495948c98afb0e556c":[11,0,0,26,3], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a442b2e5803e69d4845b5b7f7bd51a0ed":[12,0,0,19,4], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a442b2e5803e69d4845b5b7f7bd51a0ed":[11,0,0,26,4], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a4ff908713e1eb6d6294706a235be8101":[11,0,0,26,2], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a4ff908713e1eb6d6294706a235be8101":[12,0,0,19,2], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a78b9e4e22a89050c9f911f1878165e88":[11,0,0,26,1], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a78b9e4e22a89050c9f911f1878165e88":[12,0,0,19,1], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#af3d0d03752d5e96d7ee5b83f29136b1b":[11,0,0,26,5], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#af3d0d03752d5e96d7ee5b83f29136b1b":[12,0,0,19,5], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html":[11,0,0,27], -"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html":[12,0,0,20], -"structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html":[12,0,0,8], -"structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html":[11,0,0,15], -"structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html":[11,0,0,16], -"structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html":[12,0,0,9], -"structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html":[11,0,0,17], -"structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html":[12,0,0,10], -"structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html":[11,0,0,18], -"structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html":[12,0,0,11], -"tape__ref-inl_8h_source.html":[13,0,0,0,7,7], -"tape__ref_8h_source.html":[13,0,0,0,7,8], -"tape__type_8h_source.html":[13,0,0,0,7,9], -"token__iterator-inl_8h_source.html":[13,0,0,0,4,0,34], -"token__iterator_8h_source.html":[13,0,0,0,4,0,35], -"topics.html":[10], -"value-inl_8h_source.html":[13,0,0,0,4,0,36], -"value_8h_source.html":[13,0,0,0,4,0,37], -"value__iterator-inl_8h_source.html":[13,0,0,0,4,0,38], -"value__iterator_8h_source.html":[13,0,0,0,4,0,39], -"westmere_2base_8h_source.html":[13,0,0,0,12,0], -"westmere_2begin_8h_source.html":[13,0,0,0,12,1], -"westmere_2bitmanipulation_8h_source.html":[13,0,0,0,12,2], -"westmere_2bitmask_8h_source.html":[13,0,0,0,12,3], -"westmere_2end_8h_source.html":[13,0,0,0,12,4], -"westmere_2implementation_8h_source.html":[13,0,0,0,12,5], -"westmere_2intrinsics_8h_source.html":[13,0,0,0,12,6], -"westmere_2numberparsing__defs_8h_source.html":[13,0,0,0,12,7], -"westmere_2ondemand_8h_source.html":[13,0,0,0,12,8], -"westmere_2simd_8h_source.html":[13,0,0,0,12,9], -"westmere_2stringparsing__defs_8h_source.html":[13,0,0,0,12,10], -"westmere_8h_source.html":[13,0,0,0,44] +"namespacesimdjson_1_1ppc64.html":[12,0,0,7], +"namespacesimdjson_1_1westmere.html":[12,0,0,8], +"numberparsing_8h_source.html":[14,0,0,0,4,9], +"numberparsing__tables_8h_source.html":[14,0,0,0,7,5], +"object__iterator-inl_8h_source.html":[14,0,0,0,4,0,26], +"object__iterator_8h_source.html":[14,0,0,0,4,0,27], +"ondemand_2amalgamated_8h_source.html":[14,0,0,0,4,0,0], +"ondemand_2dependencies_8h_source.html":[14,0,0,0,4,0,7], +"ondemand_8h_source.html":[14,0,0,0,35], +"padded__string-inl_8h_source.html":[14,0,0,0,36], +"padded__string_8h_source.html":[14,0,0,0,37], +"padded__string__view-inl_8h_source.html":[14,0,0,0,38], +"padded__string__view_8h_source.html":[14,0,0,0,39], +"pages.html":[], +"portability_8h_source.html":[14,0,0,0,40], +"ppc64_2base_8h_source.html":[14,0,0,0,11,0], +"ppc64_2begin_8h_source.html":[14,0,0,0,11,1], +"ppc64_2bitmanipulation_8h_source.html":[14,0,0,0,11,2], +"ppc64_2bitmask_8h_source.html":[14,0,0,0,11,3], +"ppc64_2end_8h_source.html":[14,0,0,0,11,4], +"ppc64_2implementation_8h_source.html":[14,0,0,0,11,5], +"ppc64_2intrinsics_8h_source.html":[14,0,0,0,11,6], +"ppc64_2numberparsing__defs_8h_source.html":[14,0,0,0,11,7], +"ppc64_2ondemand_8h_source.html":[14,0,0,0,11,8], +"ppc64_2simd_8h_source.html":[14,0,0,0,11,9], +"ppc64_2stringparsing__defs_8h_source.html":[14,0,0,0,11,10], +"ppc64_8h_source.html":[14,0,0,0,41], +"raw__json__string-inl_8h_source.html":[14,0,0,0,4,0,30], +"raw__json__string_8h_source.html":[14,0,0,0,4,0,31], +"simdjson_8h.html":[14,0,0,0,42], +"simdjson_8h_source.html":[14,0,0,0,42], +"simdjson__version_8h_source.html":[14,0,0,0,43], +"simdprune__tables_8h_source.html":[14,0,0,0,7,6], +"std__deserialize_8h_source.html":[14,0,0,0,4,0,34], +"string__view_8hpp_source.html":[14,0,0,0,10,0], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html":[13,0,0,1,3], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a108dd35fd49314820106a21afa0fb2ea":[13,0,0,1,3,0], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a11133790f4386ea4d11567a3a0806096":[13,0,0,1,3,7], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a25289df3eaabd14f029e9872a6db3dfb":[13,0,0,1,3,17], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a42ccbe9cf141063172dd3b53bd0f0c76":[13,0,0,1,3,8], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a44ff65b6194c7c1cb74180b43e438619":[13,0,0,1,3,3], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a4f59b204f1eddcdc2b36e6df0639a516":[13,0,0,1,3,1], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a5bf4c42c2cf080f5a3e52586e0a6686c":[13,0,0,1,3,6], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a69649cb039a0b7a0dbdb453b3b4903a9":[13,0,0,1,3,15], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a7ae043cecbabaaaa11b8bb1c1f7b3fd7":[13,0,0,1,3,13], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#a96c905c44f3c53cb6cdb23b760d323b8":[13,0,0,1,3,5], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#aa70f44114c55574f111deee115eac900":[13,0,0,1,3,12], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ab37ffa449eaeb55020440de39bf5654f":[13,0,0,1,3,14], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#acd950d432e76a0bc1a7f3236cc7a1894":[13,0,0,1,3,11], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#ae51247dce4e77f1e6067cfd4654cca30":[13,0,0,1,3,16], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af167f69543e1834ffbb57b20839d7365":[13,0,0,1,3,9], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af433effbfc61f13dd00002b6ff7fa3dc":[13,0,0,1,3,4], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#af8a436d40886a295f618311d3849d7e5":[13,0,0,1,3,2], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1implementation__simdjson__result__base.html#affadf1e1f762248d60950e333b739820":[13,0,0,1,3,10], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html":[13,0,0,1,1,6], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a2b56b11b68e621bbd8ce2051ed10ab60":[13,0,0,1,1,6,12], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a38d6b4b4e91f30c8def71997d23454c2":[13,0,0,1,1,6,9], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a41dc1bfd660e0b9c86cb5a5171fd7c02":[13,0,0,1,1,6,3], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a48f9e54ebd40e1c060be0a4b1d4ff823":[13,0,0,1,1,6,8], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a8c8d29d831635c958e87de0cc2dab8b4":[13,0,0,1,1,6,6], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#a92b12b32ee177c2a818618d0595d2584":[13,0,0,1,1,6,5], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa17e81138859bcef934d9502a9852049":[13,0,0,1,1,6,13], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aa3481ec0d0726a732688b7fc64372049":[13,0,0,1,1,6,2], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ab261642a30f5e26b0769ce701cd5b9f8":[13,0,0,1,1,6,4], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ac6b75b1d1af73c9ef8958e573c367e1c":[13,0,0,1,1,6,11], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#adb931b17ba9d4d41dd8111ad9288256c":[13,0,0,1,1,6,1], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#ae5b327f855878cba9b026059a1fc8a1b":[13,0,0,1,1,6,0], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#af0e89976b80a7a7dedaf8c1a7cfd64a2":[13,0,0,1,1,6,10], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1number.html#aff5939efdcb41c9d2b9a1997816f093f":[13,0,0,1,1,6,7], +"structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html":[13,0,0,1,4], +"structsimdjson_1_1has__custom__serialization.html":[12,0,0,9], +"structsimdjson_1_1has__custom__serialization.html":[13,0,0,2], +"structsimdjson_1_1padded__string.html":[12,0,0,11], +"structsimdjson_1_1padded__string.html":[13,0,0,4], +"structsimdjson_1_1padded__string.html#a07d50795f042119ab848c37cb8911db4":[12,0,0,11,12], +"structsimdjson_1_1padded__string.html#a07d50795f042119ab848c37cb8911db4":[13,0,0,4,12], +"structsimdjson_1_1padded__string.html#a0e5b8e8917478af4e82e023c2efa40e9":[12,0,0,11,9], +"structsimdjson_1_1padded__string.html#a0e5b8e8917478af4e82e023c2efa40e9":[13,0,0,4,9], +"structsimdjson_1_1padded__string.html#a1b15f9345c0215e7548df1aa0105de98":[13,0,0,4,2], +"structsimdjson_1_1padded__string.html#a1b15f9345c0215e7548df1aa0105de98":[12,0,0,11,2], +"structsimdjson_1_1padded__string.html#a44fb0f219f05528e606f79dab7c32482":[13,0,0,4,3], +"structsimdjson_1_1padded__string.html#a44fb0f219f05528e606f79dab7c32482":[12,0,0,11,3], +"structsimdjson_1_1padded__string.html#a4bf80c11155b8067a87bd76762bee23b":[13,0,0,4,10], +"structsimdjson_1_1padded__string.html#a4bf80c11155b8067a87bd76762bee23b":[12,0,0,11,10], +"structsimdjson_1_1padded__string.html#a6199f5bf259fcac114addeef569cf5a5":[13,0,0,4,4], +"structsimdjson_1_1padded__string.html#a6199f5bf259fcac114addeef569cf5a5":[12,0,0,11,4], +"structsimdjson_1_1padded__string.html#a863fded7b347718299190ad3f501d38c":[13,0,0,4,8], +"structsimdjson_1_1padded__string.html#a863fded7b347718299190ad3f501d38c":[12,0,0,11,8], +"structsimdjson_1_1padded__string.html#a8e10a3a5a46a4d58459b052975b0bf66":[13,0,0,4,0], +"structsimdjson_1_1padded__string.html#a8e10a3a5a46a4d58459b052975b0bf66":[12,0,0,11,0], +"structsimdjson_1_1padded__string.html#a952eaf7ff8ddf252d9c00a693978a4da":[12,0,0,11,5], +"structsimdjson_1_1padded__string.html#a952eaf7ff8ddf252d9c00a693978a4da":[13,0,0,4,5], +"structsimdjson_1_1padded__string.html#aa43b3a8e0df4edcf960f04441dd9b930":[12,0,0,11,11], +"structsimdjson_1_1padded__string.html#aa43b3a8e0df4edcf960f04441dd9b930":[13,0,0,4,11], +"structsimdjson_1_1padded__string.html#aa833ecdbe40c220c5baf7a29c472c972":[12,0,0,11,7], +"structsimdjson_1_1padded__string.html#aa833ecdbe40c220c5baf7a29c472c972":[13,0,0,4,7], +"structsimdjson_1_1padded__string.html#aadd3bb268cbba43012c5d17a8c1ab7ef":[12,0,0,11,6], +"structsimdjson_1_1padded__string.html#aadd3bb268cbba43012c5d17a8c1ab7ef":[13,0,0,4,6], +"structsimdjson_1_1padded__string.html#ac06ec74c78934565cdf50df163d35476":[13,0,0,4,1], +"structsimdjson_1_1padded__string.html#ac06ec74c78934565cdf50df163d35476":[12,0,0,11,1], +"structsimdjson_1_1simdjson__error.html":[13,0,0,6], +"structsimdjson_1_1simdjson__error.html":[12,0,0,13], +"structsimdjson_1_1simdjson__error.html#a0bfb7b6beaf33fae13cc16dc9b5dc168":[12,0,0,13,2], +"structsimdjson_1_1simdjson__error.html#a0bfb7b6beaf33fae13cc16dc9b5dc168":[13,0,0,6,2], +"structsimdjson_1_1simdjson__error.html#aa8143615e5f6f02474f6ab165682ab6e":[13,0,0,6,1], +"structsimdjson_1_1simdjson__error.html#aa8143615e5f6f02474f6ab165682ab6e":[12,0,0,13,1], +"structsimdjson_1_1simdjson__error.html#af5355b65f85b897251b3665086075f39":[13,0,0,6,0], +"structsimdjson_1_1simdjson__error.html#af5355b65f85b897251b3665086075f39":[12,0,0,13,0], +"structsimdjson_1_1simdjson__result.html":[13,0,0,7], +"structsimdjson_1_1simdjson__result.html":[12,0,0,14], +"structsimdjson_1_1simdjson__result.html#a0fd74413679274feb2557b412c057cea":[12,0,0,14,1], +"structsimdjson_1_1simdjson__result.html#a0fd74413679274feb2557b412c057cea":[13,0,0,7,1], +"structsimdjson_1_1simdjson__result.html#a23470fcc7f01262019e96d3f3010b4a1":[12,0,0,14,0], +"structsimdjson_1_1simdjson__result.html#a23470fcc7f01262019e96d3f3010b4a1":[13,0,0,7,0], +"structsimdjson_1_1simdjson__result.html#a58753296caf9ec6e03116161519aaed7":[12,0,0,14,7], +"structsimdjson_1_1simdjson__result.html#a58753296caf9ec6e03116161519aaed7":[13,0,0,7,7], +"structsimdjson_1_1simdjson__result.html#a67ba566f7561173cdcfe8ceb99ee1126":[12,0,0,14,6], +"structsimdjson_1_1simdjson__result.html#a67ba566f7561173cdcfe8ceb99ee1126":[13,0,0,7,6], +"structsimdjson_1_1simdjson__result.html#a815368a9e09fa675d0b6672595f5ad19":[12,0,0,14,4], +"structsimdjson_1_1simdjson__result.html#a815368a9e09fa675d0b6672595f5ad19":[13,0,0,7,4], +"structsimdjson_1_1simdjson__result.html#a86dbcba063713c0e284dbde9fae17568":[13,0,0,7,5], +"structsimdjson_1_1simdjson__result.html#a86dbcba063713c0e284dbde9fae17568":[12,0,0,14,5], +"structsimdjson_1_1simdjson__result.html#ab0fafc6d63a14891788a9edaedff4b05":[12,0,0,14,2], +"structsimdjson_1_1simdjson__result.html#ab0fafc6d63a14891788a9edaedff4b05":[13,0,0,7,2], +"structsimdjson_1_1simdjson__result.html#abb562d9f25241605a9ca8e110259c2c4":[13,0,0,7,9], +"structsimdjson_1_1simdjson__result.html#abb562d9f25241605a9ca8e110259c2c4":[12,0,0,14,9], +"structsimdjson_1_1simdjson__result.html#aeb935568c37351a9ae907662f90d2f45":[12,0,0,14,8], +"structsimdjson_1_1simdjson__result.html#aeb935568c37351a9ae907662f90d2f45":[13,0,0,7,8], +"structsimdjson_1_1simdjson__result.html#afcce23c64894ec135fe8c2d255d2121b":[12,0,0,14,3], +"structsimdjson_1_1simdjson__result.html#afcce23c64894ec135fe8c2d255d2121b":[13,0,0,7,3], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html":[12,0,0,19], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html":[13,0,0,12], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html":[12,0,0,20], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html":[13,0,0,13], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html#ac1bcd8afb10742d6f18b8f2f07ba0392":[13,0,0,13,0], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html#ac1bcd8afb10742d6f18b8f2f07ba0392":[12,0,0,20,0], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html":[12,0,0,21], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html":[13,0,0,14], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html":[13,0,0,15], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html":[12,0,0,22], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html":[13,0,0,16], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html":[12,0,0,23], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html":[12,0,0,24], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html":[13,0,0,17], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html":[12,0,0,25], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html":[13,0,0,18], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html":[12,0,0,26], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html":[13,0,0,19], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a3bfd36dafc82c212f165b434ab5378b3":[13,0,0,19,0], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a3bfd36dafc82c212f165b434ab5378b3":[12,0,0,26,0], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a423064962ffe48495948c98afb0e556c":[13,0,0,19,3], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a423064962ffe48495948c98afb0e556c":[12,0,0,26,3], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a442b2e5803e69d4845b5b7f7bd51a0ed":[13,0,0,19,4], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a442b2e5803e69d4845b5b7f7bd51a0ed":[12,0,0,26,4], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a4ff908713e1eb6d6294706a235be8101":[12,0,0,26,2], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a4ff908713e1eb6d6294706a235be8101":[13,0,0,19,2], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a78b9e4e22a89050c9f911f1878165e88":[12,0,0,26,1], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#a78b9e4e22a89050c9f911f1878165e88":[13,0,0,19,1], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#af3d0d03752d5e96d7ee5b83f29136b1b":[12,0,0,26,5], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html#af3d0d03752d5e96d7ee5b83f29136b1b":[13,0,0,19,5], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html":[12,0,0,27], +"structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html":[13,0,0,20], +"structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html":[13,0,0,8], +"structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html":[12,0,0,15], +"structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html":[12,0,0,16], +"structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html":[13,0,0,9], +"structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html":[12,0,0,17], +"structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html":[13,0,0,10], +"structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html":[12,0,0,18], +"structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html":[13,0,0,11], +"tape__ref-inl_8h_source.html":[14,0,0,0,7,7], +"tape__ref_8h_source.html":[14,0,0,0,7,8], +"tape__type_8h_source.html":[14,0,0,0,7,9], +"token__iterator-inl_8h_source.html":[14,0,0,0,4,0,35], +"token__iterator_8h_source.html":[14,0,0,0,4,0,36], +"topics.html":[11], +"value-inl_8h_source.html":[14,0,0,0,4,0,37], +"value_8h_source.html":[14,0,0,0,4,0,38], +"value__iterator-inl_8h_source.html":[14,0,0,0,4,0,39], +"value__iterator_8h_source.html":[14,0,0,0,4,0,40], +"westmere_2base_8h_source.html":[14,0,0,0,12,0], +"westmere_2begin_8h_source.html":[14,0,0,0,12,1], +"westmere_2bitmanipulation_8h_source.html":[14,0,0,0,12,2], +"westmere_2bitmask_8h_source.html":[14,0,0,0,12,3], +"westmere_2end_8h_source.html":[14,0,0,0,12,4], +"westmere_2implementation_8h_source.html":[14,0,0,0,12,5], +"westmere_2intrinsics_8h_source.html":[14,0,0,0,12,6], +"westmere_2numberparsing__defs_8h_source.html":[14,0,0,0,12,7], +"westmere_2ondemand_8h_source.html":[14,0,0,0,12,8], +"westmere_2simd_8h_source.html":[14,0,0,0,12,9], +"westmere_2stringparsing__defs_8h_source.html":[14,0,0,0,12,10], +"westmere_8h_source.html":[14,0,0,0,44] }; diff --git a/numberparsing_8h_source.html b/numberparsing_8h_source.html index 6b30d7d25..5b77a5b75 100644 --- a/numberparsing_8h_source.html +++ b/numberparsing_8h_source.html @@ -29,7 +29,7 @@ diff --git a/numberparsing__tables_8h_source.html b/numberparsing__tables_8h_source.html index 6e6b22f26..b1cb0f683 100644 --- a/numberparsing__tables_8h_source.html +++ b/numberparsing__tables_8h_source.html @@ -29,7 +29,7 @@ diff --git a/object__iterator-inl_8h_source.html b/object__iterator-inl_8h_source.html index 207ec9fb5..885c7319e 100644 --- a/object__iterator-inl_8h_source.html +++ b/object__iterator-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/object__iterator_8h_source.html b/object__iterator_8h_source.html index 08ee0a11a..459f24dc4 100644 --- a/object__iterator_8h_source.html +++ b/object__iterator_8h_source.html @@ -29,7 +29,7 @@ @@ -118,7 +118,7 @@ $(document).ready(function(){initNavTree('object__iterator_8h_source.html','');
    15public:
    -
    21 simdjson_inline object_iterator() noexcept = default;
    +
    21 simdjson_inline object_iterator() noexcept = default;
    22
    23 //
    24 // Iterator interface
    @@ -126,15 +126,15 @@ $(document).ready(function(){initNavTree('object__iterator_8h_source.html','');
    26
    27 // Reads key and value, yielding them to the user.
    28 // MUST ONLY BE CALLED ONCE PER ITERATION.
    -
    29 simdjson_inline simdjson_result<field> operator*() noexcept;
    +
    29 simdjson_inline simdjson_result<field> operator*() noexcept;
    30 // Assumes it's being compared with the end. true if depth < iter->depth.
    -
    31 simdjson_inline bool operator==(const object_iterator &) const noexcept;
    +
    31 simdjson_inline bool operator==(const object_iterator &) const noexcept;
    32 // Assumes it's being compared with the end. true if depth >= iter->depth.
    -
    33 simdjson_inline bool operator!=(const object_iterator &) const noexcept;
    +
    33 simdjson_inline bool operator!=(const object_iterator &) const noexcept;
    34 // Checks for ']' and ','
    -
    35 simdjson_inline object_iterator &operator++() noexcept;
    +
    35 simdjson_inline object_iterator &operator++() noexcept;
    36
    - +
    37private:
    44 value_iterator iter{};
    45
    46 simdjson_inline object_iterator(const value_iterator &iter) noexcept;
    @@ -173,7 +173,6 @@ $(document).ready(function(){initNavTree('object__iterator_8h_source.html','');
    78} // namespace simdjson
    79
    80#endif // SIMDJSON_GENERIC_ONDEMAND_OBJECT_ITERATOR_H
    -
    A JSON field (key/value pair) in an object.
    Definition field.h:22
    simdjson_inline object_iterator() noexcept=default
    Create a new invalid object_iterator.
    diff --git a/ondemand_2amalgamated_8h_source.html b/ondemand_2amalgamated_8h_source.html index 6692c15df..bbf995a6d 100644 --- a/ondemand_2amalgamated_8h_source.html +++ b/ondemand_2amalgamated_8h_source.html @@ -29,7 +29,7 @@
    @@ -156,6 +156,9 @@ $(document).ready(function(){initNavTree('ondemand_2amalgamated_8h_source.html',
    52#include "simdjson/generic/ondemand/json_string_builder-inl.h"
    53#include "simdjson/generic/ondemand/json_builder.h"
    54
    +
    55// JSON path accessor (compile-time) - must be after inline definitions
    +
    56#include "simdjson/generic/ondemand/compile_time_accessors.h"
    +
    57
    diff --git a/ondemand_2dependencies_8h_source.html b/ondemand_2dependencies_8h_source.html index 28d75924e..e69d7de95 100644 --- a/ondemand_2dependencies_8h_source.html +++ b/ondemand_2dependencies_8h_source.html @@ -29,7 +29,7 @@ diff --git a/ondemand_8h_source.html b/ondemand_8h_source.html index fda245b43..847caaac5 100644 --- a/ondemand_8h_source.html +++ b/ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/padded__string-inl_8h_source.html b/padded__string-inl_8h_source.html index 3d48137fd..1d7526586 100644 --- a/padded__string-inl_8h_source.html +++ b/padded__string-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/padded__string_8h_source.html b/padded__string_8h_source.html index d76f0bd78..e82e3be8a 100644 --- a/padded__string_8h_source.html +++ b/padded__string_8h_source.html @@ -29,7 +29,7 @@ diff --git a/padded__string__view-inl_8h_source.html b/padded__string__view-inl_8h_source.html index 07b33b606..edb281076 100644 --- a/padded__string__view-inl_8h_source.html +++ b/padded__string__view-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/padded__string__view_8h_source.html b/padded__string__view_8h_source.html index 6f83d08db..3db61103f 100644 --- a/padded__string__view_8h_source.html +++ b/padded__string__view_8h_source.html @@ -29,7 +29,7 @@ diff --git a/pages.html b/pages.html index 28df87d31..8a91be69a 100644 --- a/pages.html +++ b/pages.html @@ -29,7 +29,7 @@ @@ -101,14 +101,15 @@ $(document).ready(function(){initNavTree('pages.html',''); initResizable(); });
    std::ostream & simdjson::dom::operator<< std::ostream & simdjson::dom::operator<< ( std::ostream &  out,
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    - - - - - - - - + + + + + + + + +
     The Basics
     Builder
     The Document-Object-Model (DOM) front-end
     CPU Architecture-Specific Implementations
     iterate_many
     A Better Way to Parse Documents?
     parse_many
     Performance Notes
     Tape structure in simdjson
     Deprecated List
     Compile-Time JSONPath and JSON Pointer Accessors
     The Document-Object-Model (DOM) front-end
     CPU Architecture-Specific Implementations
     iterate_many
     A Better Way to Parse Documents?
     parse_many
     Performance Notes
     Tape structure in simdjson
     Deprecated List
    diff --git a/portability_8h_source.html b/portability_8h_source.html index db349ab72..85acc4f42 100644 --- a/portability_8h_source.html +++ b/portability_8h_source.html @@ -29,7 +29,7 @@
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    - + - + - + - + - + - + - + - + - + - + - +

    Public Member Functions

    simdjson_inline ondemand::number_type get_number_type () const noexcept
    simdjson_inline ondemand::number_type get_number_type () const noexcept
     return the automatically determined type of the number: number_type::floating_point_number, number_type::signed_integer or number_type::unsigned_integer.
     
    simdjson_inline bool is_uint64 () const noexcept
    simdjson_inline bool is_uint64 () const noexcept
     return true if the automatically determined type of the number is number_type::unsigned_integer.
     
    simdjson_inline uint64_t get_uint64 () const noexcept
    simdjson_inline uint64_t get_uint64 () const noexcept
     return the value as a uint64_t, only valid if is_uint64() is true.
     
    simdjson_inline operator uint64_t () const noexcept
    simdjson_inline operator uint64_t () const noexcept
     
    simdjson_inline bool is_int64 () const noexcept
    simdjson_inline bool is_int64 () const noexcept
     return true if the automatically determined type of the number is number_type::signed_integer.
     
    simdjson_inline int64_t get_int64 () const noexcept
    simdjson_inline int64_t get_int64 () const noexcept
     return the value as a int64_t, only valid if is_int64() is true.
     
    simdjson_inline operator int64_t () const noexcept
    simdjson_inline operator int64_t () const noexcept
     
    simdjson_inline bool is_double () const noexcept
    simdjson_inline bool is_double () const noexcept
     return true if the automatically determined type of the number is number_type::floating_point_number.
     
    simdjson_inline double get_double () const noexcept
    simdjson_inline double get_double () const noexcept
     return the value as a double, only valid if is_double() is true.
     
    simdjson_inline operator double () const noexcept
    simdjson_inline operator double () const noexcept
     
    simdjson_inline double as_double () const noexcept
    simdjson_inline double as_double () const noexcept
     Convert the number to a double.
     
    - + - + - + - +

    Protected Member Functions

    simdjson_inline void append_s64 (int64_t value) noexcept
    simdjson_inline void append_s64 (int64_t value) noexcept
     Store a signed 64-bit value to the number.
     
    simdjson_inline void append_u64 (uint64_t value) noexcept
    simdjson_inline void append_u64 (uint64_t value) noexcept
     Store an unsigned 64-bit value to the number.
     
    simdjson_inline void append_double (double value) noexcept
    simdjson_inline void append_double (double value) noexcept
     Store a double value to the number.
     
    simdjson_inline void skip_double () noexcept
    simdjson_inline void skip_double () noexcept
     Specifies that the value is a double, but leave it undefined.
     
    @@ -160,11 +160,11 @@ Protected Member Functions Protected Attributes - + - + - + @@ -188,9 +188,9 @@ Protected Attributes
    union { 
     
       double   floating_point_number 
       double   floating_point_number 
     
       int64_t   signed_integer 
       int64_t   signed_integer 
     
       uint64_t   unsigned_integer 
       uint64_t   unsigned_integer 
     
    payload 
     End of friend declarations.
    - + - + @@ -218,9 +218,9 @@ Protected Attributes
    simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::append_double simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::append_double (double double  value)
    - + - + @@ -248,9 +248,9 @@ Protected Attributes
    simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::append_s64 simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::append_s64 (int64_t int64_t  value)
    - + - + @@ -278,7 +278,7 @@ Protected Attributes
    simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::append_u64 simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::append_u64 (uint64_t uint64_t  value)
    - + @@ -308,7 +308,7 @@ Protected Attributes
    simdjson_inline double simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::as_double simdjson_inline double simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::as_double ( ) const
    - + @@ -337,7 +337,7 @@ Protected Attributes
    simdjson_inline double simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::get_double simdjson_inline double simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::get_double ( ) const
    - + @@ -396,7 +396,7 @@ Protected Attributes
    simdjson_inline int64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::get_int64 simdjson_inline int64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::get_int64 ( ) const
    - + @@ -425,7 +425,7 @@ Protected Attributes
    simdjson_inline uint64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::get_uint64 simdjson_inline uint64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::get_uint64 ( ) const
    - + @@ -454,7 +454,7 @@ Protected Attributes
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_double simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_double ( ) const
    - + @@ -483,7 +483,7 @@ Protected Attributes
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_int64 simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_int64 ( ) const
    - + @@ -512,7 +512,7 @@ Protected Attributes
    simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_uint64 simdjson_inline bool simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::is_uint64 ( ) const
    - + @@ -539,7 +539,7 @@ Protected Attributes diff --git a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html index 6f52aca6f..f3ceeab36 100644 --- a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html +++ b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1has__custom__serialization.html b/structsimdjson_1_1has__custom__serialization.html index e01fbcdfb..488c39611 100644 --- a/structsimdjson_1_1has__custom__serialization.html +++ b/structsimdjson_1_1has__custom__serialization.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1padded__string-members.html b/structsimdjson_1_1padded__string-members.html index 690a0bba5..ae54e0f6c 100644 --- a/structsimdjson_1_1padded__string-members.html +++ b/structsimdjson_1_1padded__string-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1padded__string.html b/structsimdjson_1_1padded__string.html index 503309590..d1aa87afd 100644 --- a/structsimdjson_1_1padded__string.html +++ b/structsimdjson_1_1padded__string.html @@ -29,7 +29,7 @@ @@ -499,7 +499,7 @@ Static Public Member Functions

    Load this padded string from a file.

    -

    +

    Windows and Unicode

    Windows users who need to read files with non-ANSI characters in the name should set their code page to UTF-8 (65001) before calling this function. This should be the default with Windows 11 and better. Further, they may use the AreFileApisANSI function to determine whether the filename is interpreted using the ANSI or the system default OEM codepage, and they may call SetFileApisToOEM accordingly.

    Returns
    IO_ERROR on error. Be mindful that on some 32-bit systems, the file size might be limited to 2 GB.
    diff --git a/structsimdjson_1_1simdjson__error-members.html b/structsimdjson_1_1simdjson__error-members.html index b92a69650..5c7d6ecfb 100644 --- a/structsimdjson_1_1simdjson__error-members.html +++ b/structsimdjson_1_1simdjson__error-members.html @@ -29,7 +29,7 @@
    diff --git a/structsimdjson_1_1simdjson__error.html b/structsimdjson_1_1simdjson__error.html index a1c0453d3..33defb7c8 100644 --- a/structsimdjson_1_1simdjson__error.html +++ b/structsimdjson_1_1simdjson__error.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result-members.html b/structsimdjson_1_1simdjson__result-members.html index 705695d92..44436cbba 100644 --- a/structsimdjson_1_1simdjson__result-members.html +++ b/structsimdjson_1_1simdjson__result-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result.html b/structsimdjson_1_1simdjson__result.html index 13f20a0a3..1fc17707f 100644 --- a/structsimdjson_1_1simdjson__result.html +++ b/structsimdjson_1_1simdjson__result.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman663397d8034fdf0054210fe0a2553fd5.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman663397d8034fdf0054210fe0a2553fd5.html index eeb08b344..ebada7dac 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman663397d8034fdf0054210fe0a2553fd5.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman663397d8034fdf0054210fe0a2553fd5.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman73f6105c02baf0bea5c887e614f5b224.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman73f6105c02baf0bea5c887e614f5b224.html index a2f16db9c..c7a0e6504 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman73f6105c02baf0bea5c887e614f5b224.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman73f6105c02baf0bea5c887e614f5b224.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman8d5f87b59eed7747952fa5b22ffa7abe.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman8d5f87b59eed7747952fa5b22ffa7abe.html index 6b2f56213..24c2c0b79 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman8d5f87b59eed7747952fa5b22ffa7abe.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondeman8d5f87b59eed7747952fa5b22ffa7abe.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemanc727a1699918daa2a31e62be31f36420.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemanc727a1699918daa2a31e62be31f36420.html index 2dea75418..0c0008d5b 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemanc727a1699918daa2a31e62be31f36420.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemanc727a1699918daa2a31e62be31f36420.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4-members.html index 8de34b5d5..1ca5279ae 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html index e9976a528..b13156499 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1array_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html index 82ca17cf7..430f2ae3f 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1document__reference_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4-members.html index 44fcf6db8..57d6592c0 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html index fbc9dc129..ed7f8d4cb 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1field_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html index ea1e65612..dc4cc3107 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__iterator_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4-members.html index 0c976147a..4d8832260 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html index d1820f3d6..a88e14d28 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1json__type_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4-members.html index 47a91c021..a902c822a 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html index 600d85c9a..eff5cc748 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1object_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html index 414b211a9..4f1edef21 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1token__iterator_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4-members.html index 911dffa6d..5e03dd710 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html index ebbbd1ce9..216fc89b4 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value_01_4.html @@ -29,7 +29,7 @@ @@ -610,8 +610,7 @@ Additional Inherited Members

    Look up a field by name on an object (order-sensitive).

    The following code reads z, then y, then x, and thus will not retrieve x or y if fed the JSON { "x": 1, "y": 2, "z": 3 }:

    -
    ++
    -
    simdjson::ondemand::parser parser;
    +
    simdjson::ondemand::parser parser;
    auto obj = parser.parse(R"( { "x": 1, "y": 2, "z": 3 } )"_padded);
    double z = obj.find_field("z");
    double y = obj.find_field("y");
    diff --git a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html index 308d94885..e86ec4a12 100644 --- a/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1ondemand_1_1value__iterator_01_4.html @@ -29,7 +29,7 @@
    diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4-members.html index 73a41549e..4c1d54ea2 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html index 25ebed28e..a7c8ffe18 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1array_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4-members.html index c93bcdf99..740eac6be 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html index abbfd7989..90c58b0cd 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1document__stream_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4-members.html index fac131966..e8b139211 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html index d007b82ea..3da53a08f 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1element_01_4.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4-members.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4-members.html index e6a557a5b..be76a12f2 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4-members.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4-members.html @@ -29,7 +29,7 @@ diff --git a/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html b/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html index 084b188bb..3ab2aa76b 100644 --- a/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html +++ b/structsimdjson_1_1simdjson__result_3_01dom_1_1object_01_4.html @@ -29,7 +29,7 @@ diff --git a/tape__ref-inl_8h_source.html b/tape__ref-inl_8h_source.html index 213ed732d..72e4c0f47 100644 --- a/tape__ref-inl_8h_source.html +++ b/tape__ref-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/tape__ref_8h_source.html b/tape__ref_8h_source.html index d67d9bcf1..c426a104a 100644 --- a/tape__ref_8h_source.html +++ b/tape__ref_8h_source.html @@ -29,7 +29,7 @@ diff --git a/tape__type_8h_source.html b/tape__type_8h_source.html index 4cc6f7e43..80cb37145 100644 --- a/tape__type_8h_source.html +++ b/tape__type_8h_source.html @@ -29,7 +29,7 @@ diff --git a/token__iterator-inl_8h_source.html b/token__iterator-inl_8h_source.html index 7f737215d..9ad343f27 100644 --- a/token__iterator-inl_8h_source.html +++ b/token__iterator-inl_8h_source.html @@ -29,7 +29,7 @@ diff --git a/token__iterator_8h_source.html b/token__iterator_8h_source.html index afd724880..d765c504c 100644 --- a/token__iterator_8h_source.html +++ b/token__iterator_8h_source.html @@ -29,7 +29,7 @@ diff --git a/topics.html b/topics.html index ba5c2205c..40f9d78c7 100644 --- a/topics.html +++ b/topics.html @@ -29,7 +29,7 @@ diff --git a/value-inl_8h_source.html b/value-inl_8h_source.html index 17f8b4f4b..cb02e55d9 100644 --- a/value-inl_8h_source.html +++ b/value-inl_8h_source.html @@ -29,7 +29,7 @@ @@ -121,8 +121,8 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    17namespace ondemand {
    18
    -
    19simdjson_inline value::value(const value_iterator &_iter) noexcept
    -
    20 : iter{_iter}
    +
    19simdjson_inline value::value(const value_iterator &_iter) noexcept
    +
    20 : iter{_iter}
    21{
    22}
    @@ -138,17 +138,17 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    29
    - +
    30simdjson_inline simdjson_result<array> value::get_array() noexcept {
    31 return array::start(iter);
    32}
    - +
    33simdjson_inline simdjson_result<object> value::get_object() noexcept {
    34 return object::start(iter);
    35}
    - +
    37 if (iter.at_start()) {
    38 return get_object();
    39 } else {
    @@ -158,68 +158,68 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    43
    - +
    45 return iter.get_raw_json_string();
    46}
    - -
    48 return iter.get_string(allow_replacement);
    +
    47simdjson_inline simdjson_result<std::string_view> value::get_string(bool allow_replacement) noexcept {
    +
    48 return iter.get_string(allow_replacement);
    49}
    50template <typename string_type>
    -
    51simdjson_warn_unused simdjson_inline error_code value::get_string(string_type& receiver, bool allow_replacement) noexcept {
    -
    52 return iter.get_string(receiver, allow_replacement);
    +
    51simdjson_warn_unused simdjson_inline error_code value::get_string(string_type& receiver, bool allow_replacement) noexcept {
    +
    52 return iter.get_string(receiver, allow_replacement);
    53}
    - +
    55 return iter.get_wobbly_string();
    56}
    - +
    57simdjson_inline simdjson_result<double> value::get_double() noexcept {
    58 return iter.get_double();
    59}
    - +
    61 return iter.get_double_in_string();
    62}
    - +
    63simdjson_inline simdjson_result<uint64_t> value::get_uint64() noexcept {
    64 return iter.get_uint64();
    65}
    - +
    67 return iter.get_uint64_in_string();
    68}
    - +
    69simdjson_inline simdjson_result<int64_t> value::get_int64() noexcept {
    70 return iter.get_int64();
    71}
    - +
    73 return iter.get_int64_in_string();
    74}
    - +
    75simdjson_inline simdjson_result<bool> value::get_bool() noexcept {
    76 return iter.get_bool();
    77}
    - +
    78simdjson_inline simdjson_result<bool> value::is_null() noexcept {
    79 return iter.is_null();
    80}
    81
    -
    82template<> simdjson_inline simdjson_result<array> value::get() noexcept { return get_array(); }
    +
    82template<> simdjson_inline simdjson_result<array> value::get() noexcept { return get_array(); }
    83template<> simdjson_inline simdjson_result<object> value::get() noexcept { return get_object(); }
    84template<> simdjson_inline simdjson_result<raw_json_string> value::get() noexcept { return get_raw_json_string(); }
    85template<> simdjson_inline simdjson_result<std::string_view> value::get() noexcept { return get_string(false); }
    @@ -243,105 +243,105 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    103#if SIMDJSON_EXCEPTIONS
    104template <class T>
    -
    105simdjson_inline value::operator T() noexcept(false) {
    -
    106 return get<T>();
    +
    105simdjson_inline value::operator T() noexcept(false) {
    +
    106 return get<T>();
    107}
    -
    108simdjson_inline value::operator array() noexcept(false) {
    +
    108simdjson_inline value::operator array() noexcept(false) {
    109 return get_array();
    110}
    -
    111simdjson_inline value::operator object() noexcept(false) {
    +
    111simdjson_inline value::operator object() noexcept(false) {
    112 return get_object();
    113}
    -
    114simdjson_inline value::operator uint64_t() noexcept(false) {
    +
    114simdjson_inline value::operator uint64_t() noexcept(false) {
    115 return get_uint64();
    116}
    -
    117simdjson_inline value::operator int64_t() noexcept(false) {
    +
    117simdjson_inline value::operator int64_t() noexcept(false) {
    118 return get_int64();
    119}
    -
    120simdjson_inline value::operator double() noexcept(false) {
    +
    120simdjson_inline value::operator double() noexcept(false) {
    121 return get_double();
    122}
    -
    123simdjson_inline value::operator std::string_view() noexcept(false) {
    +
    123simdjson_inline value::operator std::string_view() noexcept(false) {
    124 return get_string(false);
    125}
    -
    126simdjson_inline value::operator raw_json_string() noexcept(false) {
    +
    126simdjson_inline value::operator raw_json_string() noexcept(false) {
    127 return get_raw_json_string();
    128}
    -
    129simdjson_inline value::operator bool() noexcept(false) {
    +
    129simdjson_inline value::operator bool() noexcept(false) {
    130 return get_bool();
    131}
    132#endif
    133
    -
    134simdjson_inline simdjson_result<array_iterator> value::begin() & noexcept {
    -
    135 return get_array().begin();
    +
    134simdjson_inline simdjson_result<array_iterator> value::begin() & noexcept {
    +
    135 return get_array().begin();
    136}
    -
    137simdjson_inline simdjson_result<array_iterator> value::end() & noexcept {
    +
    137simdjson_inline simdjson_result<array_iterator> value::end() & noexcept {
    138 return {};
    139}
    -
    140simdjson_inline simdjson_result<size_t> value::count_elements() & noexcept {
    - -
    142 auto a = get_array();
    - +
    140simdjson_inline simdjson_result<size_t> value::count_elements() & noexcept {
    + +
    142 auto a = get_array();
    +
    143 answer = a.count_elements();
    144 // count_elements leaves you pointing inside the array, at the first element.
    145 // We need to move back so that the user can create a new array (which requires that
    146 // we point at '[').
    147 iter.move_at_start();
    -
    148 return answer;
    +
    148 return answer;
    149}
    -
    150simdjson_inline simdjson_result<size_t> value::count_fields() & noexcept {
    - -
    152 auto a = get_object();
    -
    153 answer = a.count_fields();
    +
    150simdjson_inline simdjson_result<size_t> value::count_fields() & noexcept {
    + +
    152 auto a = get_object();
    +
    153 answer = a.count_fields();
    154 iter.move_at_start();
    -
    155 return answer;
    +
    155 return answer;
    156}
    -
    157simdjson_inline simdjson_result<value> value::at(size_t index) noexcept {
    -
    158 auto a = get_array();
    -
    159 return a.at(index);
    +
    157simdjson_inline simdjson_result<value> value::at(size_t index) noexcept {
    +
    158 auto a = get_array();
    +
    159 return a.at(index);
    160}
    161
    -
    162simdjson_inline simdjson_result<value> value::find_field(std::string_view key) noexcept {
    +
    162simdjson_inline simdjson_result<value> value::find_field(std::string_view key) noexcept {
    163 return start_or_resume_object().find_field(key);
    164}
    -
    165simdjson_inline simdjson_result<value> value::find_field(const char *key) noexcept {
    +
    165simdjson_inline simdjson_result<value> value::find_field(const char *key) noexcept {
    166 return start_or_resume_object().find_field(key);
    167}
    168
    -
    169simdjson_inline simdjson_result<value> value::find_field_unordered(std::string_view key) noexcept {
    +
    169simdjson_inline simdjson_result<value> value::find_field_unordered(std::string_view key) noexcept {
    170 return start_or_resume_object().find_field_unordered(key);
    171}
    -
    172simdjson_inline simdjson_result<value> value::find_field_unordered(const char *key) noexcept {
    +
    172simdjson_inline simdjson_result<value> value::find_field_unordered(const char *key) noexcept {
    173 return start_or_resume_object().find_field_unordered(key);
    174}
    175
    @@ -353,63 +353,63 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    181}
    182
    - +
    183simdjson_inline simdjson_result<json_type> value::type() noexcept {
    184 return iter.type();
    185}
    186
    - - -
    189 auto error = type().get(this_type);
    +
    187simdjson_inline simdjson_result<bool> value::is_scalar() noexcept {
    +
    188 json_type this_type;
    +
    189 auto error = type().get(this_type);
    190 if(error) { return error; }
    - +
    191 return ! ((this_type == json_type::array) || (this_type == json_type::object));
    192}
    193
    - - -
    196 auto error = type().get(this_type);
    +
    194simdjson_inline simdjson_result<bool> value::is_string() noexcept {
    +
    195 json_type this_type;
    +
    196 auto error = type().get(this_type);
    197 if(error) { return error; }
    -
    198 return (this_type == json_type::string);
    +
    198 return (this_type == json_type::string);
    199}
    200
    201
    -
    202simdjson_inline bool value::is_negative() noexcept {
    +
    202simdjson_inline bool value::is_negative() noexcept {
    203 return iter.is_negative();
    204}
    205
    - +
    206simdjson_inline simdjson_result<bool> value::is_integer() noexcept {
    207 return iter.is_integer();
    208}
    -
    209simdjson_warn_unused simdjson_inline simdjson_result<number_type> value::get_number_type() noexcept {
    +
    209simdjson_warn_unused simdjson_inline simdjson_result<number_type> value::get_number_type() noexcept {
    210 return iter.get_number_type();
    211}
    -
    212simdjson_warn_unused simdjson_inline simdjson_result<number> value::get_number() noexcept {
    +
    212simdjson_warn_unused simdjson_inline simdjson_result<number> value::get_number() noexcept {
    213 return iter.get_number();
    214}
    215
    -
    216simdjson_inline std::string_view value::raw_json_token() noexcept {
    +
    216simdjson_inline std::string_view value::raw_json_token() noexcept {
    217 return std::string_view(reinterpret_cast<const char*>(iter.peek_start()), iter.peek_start_length());
    218}
    219
    - -
    221 json_type t;
    -
    222 SIMDJSON_TRY(type().get(t));
    -
    223 switch (t)
    + +
    221 json_type t;
    +
    222 SIMDJSON_TRY(type().get(t));
    +
    223 switch (t)
    224 {
    225 case json_type::array: {
    226 ondemand::array array;
    @@ -428,19 +428,19 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    239
    - +
    241 return iter.json_iter().current_location();
    242}
    243
    - +
    244simdjson_inline int32_t value::current_depth() const noexcept{
    245 return iter.json_iter().depth();
    246}
    247
    -
    248inline bool is_pointer_well_formed(std::string_view json_pointer) noexcept {
    -
    249 if (simdjson_unlikely(json_pointer.empty())) { // can't be
    +
    248inline bool is_pointer_well_formed(std::string_view json_pointer) noexcept {
    +
    249 if (simdjson_unlikely(json_pointer.empty())) { // can't be
    250 return false;
    251 }
    252 if (simdjson_unlikely(json_pointer[0] != '/')) {
    @@ -460,18 +460,18 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    266}
    267
    -
    268simdjson_inline simdjson_result<value> value::at_pointer(std::string_view json_pointer) noexcept {
    -
    269 json_type t;
    -
    270 SIMDJSON_TRY(type().get(t));
    -
    271 switch (t)
    +
    268simdjson_inline simdjson_result<value> value::at_pointer(std::string_view json_pointer) noexcept {
    +
    269 json_type t;
    +
    270 SIMDJSON_TRY(type().get(t));
    +
    271 switch (t)
    272 {
    273 case json_type::array:
    -
    274 return (*this).get_array().at_pointer(json_pointer);
    +
    274 return (*this).get_array().at_pointer(json_pointer);
    -
    276 return (*this).get_object().at_pointer(json_pointer);
    +
    276 return (*this).get_object().at_pointer(json_pointer);
    277 default:
    278 // a non-empty string can be invalid, or accessing a primitive (issue 2154)
    -
    279 if (is_pointer_well_formed(json_pointer)) {
    +
    279 if (is_pointer_well_formed(json_pointer)) {
    280 return NO_SUCH_FIELD;
    281 }
    @@ -480,14 +480,14 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    285
    -
    286simdjson_inline simdjson_result<value> value::at_path(std::string_view json_path) noexcept {
    -
    287 json_type t;
    -
    288 SIMDJSON_TRY(type().get(t));
    -
    289 switch (t) {
    +
    286simdjson_inline simdjson_result<value> value::at_path(std::string_view json_path) noexcept {
    +
    287 json_type t;
    +
    288 SIMDJSON_TRY(type().get(t));
    +
    289 switch (t) {
    290 case json_type::array:
    -
    291 return (*this).get_array().at_path(json_path);
    +
    291 return (*this).get_array().at_path(json_path);
    -
    293 return (*this).get_object().at_path(json_path);
    +
    293 return (*this).get_object().at_path(json_path);
    294 default:
    296 }
    @@ -760,10 +760,7 @@ $(document).ready(function(){initNavTree('value-inl_8h_source.html',''); initRes
    550
    551#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_INL_H
    -
    simdjson_inline simdjson_result< value > at(size_t index) noexcept
    Get the value at the given index.
    Definition array-inl.h:173
    static simdjson_inline simdjson_result< array > start(value_iterator &iter) noexcept
    Begin array iteration.
    Definition array-inl.h:61
    -
    simdjson_inline simdjson_result< array_iterator > begin() noexcept
    Begin array iteration.
    Definition array-inl.h:79
    -
    simdjson_inline simdjson_result< size_t > count_elements() &noexcept
    This method scans the array and counts the number of elements.
    Definition array-inl.h:107
    simdjson_inline simdjson_result< std::string_view > raw_json() noexcept
    Consumes the array and returns a string_view instance corresponding to the array as represented in JS...
    Definition array-inl.h:94
    A forward-only JSON object field iterator.
    Definition object.h:20
    A string escaped per JSON rules, terminated with quote (").
    diff --git a/value_8h_source.html b/value_8h_source.html index 02f49734c..a6f91c3b6 100644 --- a/value_8h_source.html +++ b/value_8h_source.html @@ -29,7 +29,7 @@
    @@ -121,164 +121,164 @@ $(document).ready(function(){initNavTree('value_8h_source.html',''); initResizab
    21class value {
    22public:
    -
    28 simdjson_inline value() noexcept = default;
    +
    28 simdjson_inline value() noexcept = default;
    29
    - +
    42 template <typename T>
    -
    43 simdjson_inline simdjson_result<T> get()
    +
    43 simdjson_inline simdjson_result<T> get()
    44#if SIMDJSON_SUPPORTS_CONCEPTS
    - +
    45 noexcept(custom_deserializable<T, value> ? nothrow_custom_deserializable<T, value> : true)
    46#else
    47 noexcept
    -
    48#endif
    +
    48#endif
    49 {
    50 static_assert(std::is_default_constructible<T>::value, "The specified type is not default constructible.");
    -
    51 T out{};
    -
    52 SIMDJSON_TRY(get<T>(out));
    -
    53 return out;
    +
    51 T out{};
    +
    52 SIMDJSON_TRY(get<T>(out));
    +
    53 return out;
    54 }
    55
    56
    67 template <typename T>
    -
    68 simdjson_warn_unused simdjson_inline error_code get(T &out)
    +
    68 simdjson_warn_unused simdjson_inline error_code get(T &out)
    69#if SIMDJSON_SUPPORTS_CONCEPTS
    - +
    70 noexcept(custom_deserializable<T, value> ? nothrow_custom_deserializable<T, value> : true)
    71#else
    72 noexcept
    -
    73#endif
    +
    73#endif
    74 {
    75 #if SIMDJSON_SUPPORTS_CONCEPTS
    -
    76 if constexpr (custom_deserializable<T, value>) {
    -
    77 return deserialize(*this, out);
    +
    76 if constexpr (custom_deserializable<T, value>) {
    +
    77 return deserialize(*this, out);
    78 } else if constexpr (concepts::optional_type<T>) {
    79 using value_type = typename std::remove_cvref_t<T>::value_type;
    80
    81 // Check if the value is null
    -
    82 bool is_null_value;
    -
    83 SIMDJSON_TRY( is_null().get(is_null_value) );
    -
    84 if (is_null_value) {
    -
    85 out.reset(); // Set to nullopt
    +
    82 bool is_null_value;
    +
    83 SIMDJSON_TRY( is_null().get(is_null_value) );
    +
    84 if (is_null_value) {
    +
    85 out.reset(); // Set to nullopt
    86 return SUCCESS;
    87 }
    88
    -
    89 if (!out) {
    -
    90 out.emplace();
    +
    89 if (!out) {
    +
    90 out.emplace();
    91 }
    -
    92 return get<value_type>(out.value());
    +
    92 return get<value_type>(out.value());
    93 } else {
    -
    94 static_assert(!sizeof(T), "The get<T> method with type T is not implemented by the simdjson library. "
    +
    94 static_assert(!sizeof(T), "The get<T> method with type T is not implemented by the simdjson library. "
    95 "And you do not seem to have added support for it. Indeed, we have that "
    96 "simdjson::custom_deserializable<T> is false and the type T is not a default type "
    97 "such as ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
    98 "int64_t, double, or bool.");
    -
    99 static_cast<void>(out); // to get rid of unused errors
    +
    99 static_cast<void>(out); // to get rid of unused errors
    100 return UNINITIALIZED;
    101 }
    102#else // SIMDJSON_SUPPORTS_CONCEPTS
    103 // Unless the simdjson library or the user provides an inline implementation, calling this method should
    104 // immediately fail.
    -
    105 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
    +
    105 static_assert(!sizeof(T), "The get method with given type is not implemented by the simdjson library. "
    106 "The supported types are ondemand::object, ondemand::array, raw_json_string, std::string_view, uint64_t, "
    107 "int64_t, double, and bool. We recommend you use get_double(), get_bool(), get_uint64(), get_int64(), "
    108 " get_object(), get_array(), get_raw_json_string(), or get_string() instead of the get template."
    109 " You may also add support for custom types, see our documentation.");
    -
    110 static_cast<void>(out); // to get rid of unused errors
    +
    110 static_cast<void>(out); // to get rid of unused errors
    111 return UNINITIALIZED;
    112#endif
    113 }
    114
    -
    121 simdjson_inline simdjson_result<array> get_array() noexcept;
    +
    121 simdjson_inline simdjson_result<array> get_array() noexcept;
    122
    -
    129 simdjson_inline simdjson_result<object> get_object() noexcept;
    +
    129 simdjson_inline simdjson_result<object> get_object() noexcept;
    130
    -
    137 simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
    +
    137 simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
    138
    - +
    145 simdjson_inline simdjson_result<uint64_t> get_uint64_in_string() noexcept;
    146
    -
    153 simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
    +
    153 simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
    154
    - +
    161 simdjson_inline simdjson_result<int64_t> get_int64_in_string() noexcept;
    162
    -
    169 simdjson_inline simdjson_result<double> get_double() noexcept;
    +
    169 simdjson_inline simdjson_result<double> get_double() noexcept;
    170
    -
    177 simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
    +
    177 simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
    178
    - +
    204 simdjson_inline simdjson_result<std::string_view> get_string(bool allow_replacement = false) noexcept;
    205
    - -
    220 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
    +
    219 template <typename string_type>
    +
    220 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement = false) noexcept;
    221
    - - +
    235 simdjson_inline simdjson_result<std::string_view> get_wobbly_string() noexcept;
    +
    244 simdjson_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
    245
    -
    252 simdjson_inline simdjson_result<bool> get_bool() noexcept;
    +
    252 simdjson_inline simdjson_result<bool> get_bool() noexcept;
    253
    -
    262 simdjson_inline simdjson_result<bool> is_null() noexcept;
    +
    262 simdjson_inline simdjson_result<bool> is_null() noexcept;
    263
    264#if SIMDJSON_EXCEPTIONS
    274 template <class T>
    -
    275 explicit simdjson_inline operator T() noexcept(false);
    -
    282 simdjson_inline operator array() noexcept(false);
    -
    289 simdjson_inline operator object() noexcept(false);
    -
    296 simdjson_inline operator uint64_t() noexcept(false);
    -
    303 simdjson_inline operator int64_t() noexcept(false);
    -
    310 simdjson_inline operator double() noexcept(false);
    -
    322 simdjson_inline operator std::string_view() noexcept(false);
    -
    331 simdjson_inline operator raw_json_string() noexcept(false);
    -
    338 simdjson_inline operator bool() noexcept(false);
    +
    275 explicit simdjson_inline operator T() noexcept(false);
    +
    282 simdjson_inline operator array() noexcept(false);
    +
    289 simdjson_inline operator object() noexcept(false);
    +
    296 simdjson_inline operator uint64_t() noexcept(false);
    +
    303 simdjson_inline operator int64_t() noexcept(false);
    +
    310 simdjson_inline operator double() noexcept(false);
    +
    322 simdjson_inline operator std::string_view() noexcept(false);
    +
    331 simdjson_inline operator raw_json_string() noexcept(false);
    +
    338 simdjson_inline operator bool() noexcept(false);
    339#endif
    340
    -
    348 simdjson_inline simdjson_result<array_iterator> begin() & noexcept;
    -
    354 simdjson_inline simdjson_result<array_iterator> end() & noexcept;
    -
    369 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
    -
    387 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
    -
    395 simdjson_inline simdjson_result<value> at(size_t index) noexcept;
    -
    418 simdjson_inline simdjson_result<value> find_field(std::string_view key) noexcept;
    -
    420 simdjson_inline simdjson_result<value> find_field(const char *key) noexcept;
    +
    348 simdjson_inline simdjson_result<array_iterator> begin() & noexcept;
    +
    354 simdjson_inline simdjson_result<array_iterator> end() & noexcept;
    +
    369 simdjson_inline simdjson_result<size_t> count_elements() & noexcept;
    +
    387 simdjson_inline simdjson_result<size_t> count_fields() & noexcept;
    +
    395 simdjson_inline simdjson_result<value> at(size_t index) noexcept;
    +
    418 simdjson_inline simdjson_result<value> find_field(std::string_view key) noexcept;
    +
    420 simdjson_inline simdjson_result<value> find_field(const char *key) noexcept;
    421
    -
    444 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) noexcept;
    -
    446 simdjson_inline simdjson_result<value> find_field_unordered(const char *key) noexcept;
    -
    448 simdjson_inline simdjson_result<value> operator[](std::string_view key) noexcept;
    -
    450 simdjson_inline simdjson_result<value> operator[](const char *key) noexcept;
    -
    451 simdjson_result<value> operator[](int) noexcept = delete;
    +
    444 simdjson_inline simdjson_result<value> find_field_unordered(std::string_view key) noexcept;
    +
    446 simdjson_inline simdjson_result<value> find_field_unordered(const char *key) noexcept;
    +
    448 simdjson_inline simdjson_result<value> operator[](std::string_view key) noexcept;
    +
    450 simdjson_inline simdjson_result<value> operator[](const char *key) noexcept;
    +
    451 simdjson_result<value> operator[](int) noexcept = delete;
    452
    -
    466 simdjson_inline simdjson_result<json_type> type() noexcept;
    +
    466 simdjson_inline simdjson_result<json_type> type() noexcept;
    467
    -
    475 simdjson_inline simdjson_result<bool> is_scalar() noexcept;
    -
    482 simdjson_inline simdjson_result<bool> is_string() noexcept;
    +
    475 simdjson_inline simdjson_result<bool> is_scalar() noexcept;
    +
    482 simdjson_inline simdjson_result<bool> is_string() noexcept;
    483
    -
    489 simdjson_inline bool is_negative() noexcept;
    -
    503 simdjson_inline simdjson_result<bool> is_integer() noexcept;
    -
    528 simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
    +
    489 simdjson_inline bool is_negative() noexcept;
    +
    503 simdjson_inline simdjson_result<bool> is_integer() noexcept;
    +
    528 simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
    529
    -
    562 simdjson_warn_unused simdjson_inline simdjson_result<number> get_number() noexcept;
    +
    562 simdjson_warn_unused simdjson_inline simdjson_result<number> get_number() noexcept;
    563
    -
    589 simdjson_inline std::string_view raw_json_token() noexcept;
    +
    589 simdjson_inline std::string_view raw_json_token() noexcept;
    590
    -
    599 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
    +
    599 simdjson_inline simdjson_result<std::string_view> raw_json() noexcept;
    600
    -
    604 simdjson_inline simdjson_result<const char *> current_location() noexcept;
    +
    604 simdjson_inline simdjson_result<const char *> current_location() noexcept;
    605
    -
    615 simdjson_inline int32_t current_depth() const noexcept;
    +
    615 simdjson_inline int32_t current_depth() const noexcept;
    616
    - +
    659 simdjson_inline simdjson_result<value> at_pointer(std::string_view json_pointer) noexcept;
    660
    - +
    672 simdjson_inline simdjson_result<value> at_path(std::string_view at_path) noexcept;
    673
    674
    - -
    679 simdjson_inline value(const value_iterator &iter) noexcept;
    +
    675protected:
    +
    679 simdjson_inline value(const value_iterator &iter) noexcept;
    680
    -
    684 simdjson_inline void skip() noexcept;
    +
    684 simdjson_inline void skip() noexcept;
    685
    -
    691 static simdjson_inline value start(const value_iterator &iter) noexcept;
    +
    691 static simdjson_inline value start(const value_iterator &iter) noexcept;
    692
    -
    696 static simdjson_inline value resume(const value_iterator &iter) noexcept;
    +
    696 static simdjson_inline value resume(const value_iterator &iter) noexcept;
    697
    -
    701 simdjson_inline simdjson_result<object> start_or_resume_object() noexcept;
    +
    701 simdjson_inline simdjson_result<object> start_or_resume_object() noexcept;
    702
    703 // simdjson_inline void log_value(const char *type) const noexcept;
    704 // simdjson_inline void log_error(const char *message) const noexcept;
    @@ -380,7 +380,6 @@ $(document).ready(function(){initNavTree('value_8h_source.html',''); initResizab
    865#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_H
    -
    simdjson_result< bool > reset() &noexcept
    Reset the iterator so that we are pointing back at the beginning of the array.
    Definition array-inl.h:127
    A JSON field (key/value pair) in an object.
    Definition field.h:22
    A forward-only JSON object field iterator.
    Definition object.h:20
    diff --git a/value__iterator-inl_8h_source.html b/value__iterator-inl_8h_source.html index 7073765d4..3fbe6ca9c 100644 --- a/value__iterator-inl_8h_source.html +++ b/value__iterator-inl_8h_source.html @@ -29,7 +29,7 @@
    @@ -128,21 +128,21 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    24}
    25
    -
    26simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::start_object() noexcept {
    +
    26simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::start_object() noexcept {
    27 SIMDJSON_TRY( start_container('{', "Not an object", "object") );
    28 return started_object();
    29}
    30
    - +
    31simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::start_root_object() noexcept {
    32 SIMDJSON_TRY( start_container('{', "Not an object", "object") );
    33 return started_root_object();
    34}
    35
    -
    36simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::started_object() noexcept {
    +
    36simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::started_object() noexcept {
    37 assert_at_container_start();
    38#if SIMDJSON_DEVELOPMENT_CHECKS
    39 _json_iter->set_start_position(_depth, start_position());
    @@ -158,7 +158,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    49
    -
    50simdjson_warn_unused simdjson_inline error_code value_iterator::check_root_object() noexcept {
    +
    50simdjson_warn_unused simdjson_inline error_code value_iterator::check_root_object() noexcept {
    51 // When in streaming mode, we cannot expect peek_last() to be the last structural element of the
    52 // current document. It only works in the normal mode where we have indexed a single document.
    53 // Note that adding a check for 'streaming' is not expensive since we only have at most
    @@ -190,14 +190,14 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    79
    - +
    80simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::started_root_object() noexcept {
    81 auto error = check_root_object();
    82 if(error) { return error; }
    83 return started_object();
    84}
    85
    -
    86simdjson_warn_unused simdjson_inline error_code value_iterator::end_container() noexcept {
    +
    86simdjson_warn_unused simdjson_inline error_code value_iterator::end_container() noexcept {
    87#if SIMDJSON_CHECK_EOF
    88 if (depth() > 1 && at_end()) { return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "missing parent ] or }"); }
    89 // if (depth() <= 1 && !at_end()) { return report_error(INCOMPLETE_ARRAY_OR_OBJECT, "missing [ or { at start"); }
    @@ -207,7 +207,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    93}
    94
    -
    95simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::has_next_field() noexcept {
    +
    95simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::has_next_field() noexcept {
    96 assert_at_next();
    97
    98 // It's illegal to call this unless there are more tokens: anything that ends in } or ] is
    @@ -226,7 +226,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    111
    -
    112simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::find_field_raw(const std::string_view key) noexcept {
    +
    112simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::find_field_raw(const std::string_view key) noexcept {
    113 error_code error;
    114 bool has_value;
    115 //
    @@ -283,12 +283,12 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    166 }
    167 while (has_value) {
    168 // Get the key and colon, stopping at the value.
    - +
    169 raw_json_string actual_key;
    170 // size_t max_key_length = _json_iter->peek_length() - 2; // -2 for the two quotes
    171 // Note: _json_iter->peek_length() - 2 might overflow if _json_iter->peek_length() < 2.
    172 // field_key() advances the pointer and checks that '"' is found (corresponding to a key).
    173 // The depth is left unchanged by field_key().
    -
    174 if ((error = field_key().get(actual_key) )) { abandon(); return error; };
    +
    174 if ((error = field_key().get(actual_key) )) { abandon(); return error; };
    175 // field_value() will advance and check that we find a ':' separating the
    176 // key and the value. It will also increment the depth by one.
    177 if ((error = field_value() )) { abandon(); return error; }
    @@ -300,7 +300,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    183 // user provides an adversarial key (containing a well placed unescaped quote
    184 // character and being longer than the number of bytes remaining in the JSON
    185 // input).
    -
    186 if (actual_key.unsafe_is_equal(key)) {
    +
    186 if (actual_key.unsafe_is_equal(key)) {
    187 logger::log_event(*this, "match", key, -2);
    188 // If we return here, then we return while pointing at the ':' that we just checked.
    189 return true;
    @@ -325,16 +325,16 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    207SIMDJSON_PUSH_DISABLE_WARNINGS
    208SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
    -
    209simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::find_field_unordered_raw(const std::string_view key) noexcept {
    +
    209simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::find_field_unordered_raw(const std::string_view key) noexcept {
    217 error_code error;
    218 bool has_value;
    219
    220 // First, we scan from that point to the end.
    221 // If we don't find a match, we may loop back around, and scan from the beginning to that point.
    -
    222 token_position search_start = _json_iter->position();
    +
    222 token_position search_start = _json_iter->position();
    223
    224 // We want to know whether we need to go back to the beginning.
    -
    225 bool at_first = at_first_field();
    +
    225 bool at_first = at_first_field();
    227 // Initially, the object can be in one of a few different places:
    228 //
    229 // 1. At the first key:
    @@ -344,7 +344,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    233 // ^ (depth 2, index 1)
    234 // ```
    235 //
    -
    236 if (at_first) {
    +
    236 if (at_first) {
    237 has_value = true;
    238
    239 // 2. When a previous search did not yield a value or the object is empty:
    @@ -365,7 +365,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    254 if (_json_iter->depth() < depth() - 1) { return OUT_OF_ORDER_ITERATION; }
    255#endif
    256 SIMDJSON_TRY(reset_object().get(has_value));
    -
    257 at_first = true;
    +
    257 at_first = true;
    258 // 3. When a previous search found a field or an iterator yielded a value:
    259 //
    260 // ```
    @@ -385,7 +385,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    274 // at the ':' and we need to move forward through the value... If the value was
    275 // processed then skip_child() does not move the iterator (but may adjust the depth).
    276 if ((error = skip_child() )) { abandon(); return error; }
    -
    277 search_start = _json_iter->position();
    +
    277 search_start = _json_iter->position();
    278 if ((error = has_next_field().get(has_value) )) { abandon(); return error; }
    279#if SIMDJSON_DEVELOPMENT_CHECKS
    280 if (_json_iter->start_position(_depth) != start_position()) { return OUT_OF_ORDER_ITERATION; }
    @@ -410,12 +410,12 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    299 SIMDJSON_ASSUME( _json_iter->_depth == _depth ); // We must be at the start of a field
    300
    301 // Get the key and colon, stopping at the value.
    - +
    302 raw_json_string actual_key;
    303 // size_t max_key_length = _json_iter->peek_length() - 2; // -2 for the two quotes
    304 // Note: _json_iter->peek_length() - 2 might overflow if _json_iter->peek_length() < 2.
    305 // field_key() advances the pointer and checks that '"' is found (corresponding to a key).
    306 // The depth is left unchanged by field_key().
    -
    307 if ((error = field_key().get(actual_key) )) { abandon(); return error; };
    +
    307 if ((error = field_key().get(actual_key) )) { abandon(); return error; };
    308 // field_value() will advance and check that we find a ':' separating the
    309 // key and the value. It will also increment the depth by one.
    310 if ((error = field_value() )) { abandon(); return error; }
    @@ -428,7 +428,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    317 // user provides an adversarial key (containing a well placed unescaped quote
    318 // character and being longer than the number of bytes remaining in the JSON
    319 // input).
    -
    320 if (actual_key.unsafe_is_equal(key)) {
    +
    320 if (actual_key.unsafe_is_equal(key)) {
    321 logger::log_event(*this, "match", key, -2);
    322 // If we return here, then we return while pointing at the ':' that we just checked.
    323 return true;
    @@ -448,7 +448,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    337 // no other query following. Indeed, it would require reskipping the whole object.
    338 // Instead, you can just stay where you are. If there is a new query, there is always time
    339 // to rewind.
    -
    340 if(at_first) { return false; }
    +
    340 if(at_first) { return false; }
    341
    342 // If we reach the end without finding a match, search the rest of the fields starting at the
    343 // beginning of the object.
    @@ -460,12 +460,12 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    349 SIMDJSON_ASSUME( _json_iter->_depth == _depth ); // We must be at the start of a field
    350
    351 // Get the key and colon, stopping at the value.
    - +
    352 raw_json_string actual_key;
    353 // size_t max_key_length = _json_iter->peek_length() - 2; // -2 for the two quotes
    354 // Note: _json_iter->peek_length() - 2 might overflow if _json_iter->peek_length() < 2.
    355 // field_key() advances the pointer and checks that '"' is found (corresponding to a key).
    356 // The depth is left unchanged by field_key().
    -
    357 error = field_key().get(actual_key); SIMDJSON_ASSUME(!error);
    +
    357 error = field_key().get(actual_key); SIMDJSON_ASSUME(!error);
    358 // field_value() will advance and check that we find a ':' separating the
    359 // key and the value. It will also increment the depth by one.
    360 error = field_value(); SIMDJSON_ASSUME(!error);
    @@ -478,7 +478,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    367 // user provides an adversarial key (containing a well placed unescaped quote
    368 // character and being longer than the number of bytes remaining in the JSON
    369 // input).
    -
    370 if (actual_key.unsafe_is_equal(key)) {
    +
    370 if (actual_key.unsafe_is_equal(key)) {
    371 logger::log_event(*this, "match", key, -2);
    372 // If we return here, then we return while pointing at the ':' that we just checked.
    373 return true;
    @@ -492,7 +492,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    381 // If we reached the end of the key-value pair we started from, then we know
    382 // that the key is not there so we return false. We are either right before
    383 // the next comma or the final brace.
    -
    384 if(_json_iter->position() == search_start) { return false; }
    +
    384 if(_json_iter->position() == search_start) { return false; }
    385 // The has_next_field() advances the pointer and check that either ',' or '}' is found.
    386 // It returns true if ',' is found, false otherwise. If anything other than ',' or '}' is found,
    387 // then we are in error and we abort.
    @@ -508,17 +508,17 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    396SIMDJSON_POP_DISABLE_WARNINGS
    397
    - +
    398simdjson_warn_unused simdjson_inline simdjson_result<raw_json_string> value_iterator::field_key() noexcept {
    399 assert_at_next();
    400
    -
    401 const uint8_t *key = _json_iter->return_current_and_advance();
    +
    401 const uint8_t *key = _json_iter->return_current_and_advance();
    402 if (*(key++) != '"') { return report_error(TAPE_ERROR, "Object key is not a string"); }
    403 return raw_json_string(key);
    404}
    405
    -
    406simdjson_warn_unused simdjson_inline error_code value_iterator::field_value() noexcept {
    +
    406simdjson_warn_unused simdjson_inline error_code value_iterator::field_value() noexcept {
    407 assert_at_next();
    408
    409 if (*_json_iter->return_current_and_advance() != ':') { return report_error(TAPE_ERROR, "Missing colon in object field"); }
    @@ -528,28 +528,28 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    413
    -
    414simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::start_array() noexcept {
    +
    414simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::start_array() noexcept {
    415 SIMDJSON_TRY( start_container('[', "Not an array", "array") );
    416 return started_array();
    417}
    418
    - +
    419simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::start_root_array() noexcept {
    420 SIMDJSON_TRY( start_container('[', "Not an array", "array") );
    421 return started_root_array();
    422}
    423
    -
    424inline std::string value_iterator::to_string() const noexcept {
    -
    425 auto answer = std::string("value_iterator [ depth : ") + std::to_string(_depth) + std::string(", ");
    -
    426 if(_json_iter != nullptr) { answer += _json_iter->to_string(); }
    +
    424inline std::string value_iterator::to_string() const noexcept {
    +
    425 auto answer = std::string("value_iterator [ depth : ") + std::to_string(_depth) + std::string(", ");
    +
    426 if(_json_iter != nullptr) { answer += _json_iter->to_string(); }
    427 answer += std::string(" ]");
    428 return answer;
    429}
    430
    -
    431simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::started_array() noexcept {
    +
    431simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::started_array() noexcept {
    432 assert_at_container_start();
    433 if (*_json_iter->peek() == ']') {
    434 logger::log_value(*_json_iter, "empty array");
    @@ -566,7 +566,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    445
    -
    446simdjson_warn_unused simdjson_inline error_code value_iterator::check_root_array() noexcept {
    +
    446simdjson_warn_unused simdjson_inline error_code value_iterator::check_root_array() noexcept {
    447 // When in streaming mode, we cannot expect peek_last() to be the last structural element of the
    448 // current document. It only works in the normal mode where we have indexed a single document.
    449 // Note that adding a check for 'streaming' is not expensive since we only have at most
    @@ -598,7 +598,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    475
    - +
    476simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::started_root_array() noexcept {
    477 auto error = check_root_array();
    478 if (error) { return error; }
    479 return started_array();
    @@ -606,7 +606,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    481
    - +
    482simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::has_next_element() noexcept {
    483 assert_at_next();
    484
    485 logger::log_event(*this, "has_next_element");
    @@ -624,10 +624,10 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    497}
    498
    -
    499simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::parse_bool(const uint8_t *json) const noexcept {
    -
    500 auto not_true = atomparsing::str4ncmp(json, "true");
    -
    501 auto not_false = atomparsing::str4ncmp(json, "fals") | (json[4] ^ 'e');
    -
    502 bool error = (not_true && not_false) || jsoncharutils::is_not_structural_or_whitespace(json[not_true ? 5 : 4]);
    +
    499simdjson_warn_unused simdjson_inline simdjson_result<bool> value_iterator::parse_bool(const uint8_t *json) const noexcept {
    +
    500 auto not_true = atomparsing::str4ncmp(json, "true");
    +
    501 auto not_false = atomparsing::str4ncmp(json, "fals") | (json[4] ^ 'e');
    +
    502 bool error = (not_true && not_false) || jsoncharutils::is_not_structural_or_whitespace(json[not_true ? 5 : 4]);
    503 if (error) { return incorrect_type_error("Not a boolean"); }
    504 return simdjson_result<bool>(!not_true);
    505}
    @@ -945,7 +945,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    817}
    818
    -
    819simdjson_inline value_iterator value_iterator::child() const noexcept {
    +
    819simdjson_inline value_iterator value_iterator::child() const noexcept {
    820 assert_at_child();
    821 return { _json_iter, depth()+1, _json_iter->token.position() };
    822}
    @@ -956,7 +956,7 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    826// marked non-inline.
    827SIMDJSON_PUSH_DISABLE_WARNINGS
    828SIMDJSON_DISABLE_STRICT_OVERFLOW_WARNING
    -
    829simdjson_inline bool value_iterator::is_open() const noexcept {
    +
    829simdjson_inline bool value_iterator::is_open() const noexcept {
    830 return _json_iter->depth() >= depth();
    831}
    832SIMDJSON_POP_DISABLE_WARNINGS
    @@ -1220,8 +1220,8 @@ $(document).ready(function(){initNavTree('value__iterator-inl_8h_source.html',''
    1095} // namespace simdjson
    1096
    1097#endif // SIMDJSON_GENERIC_ONDEMAND_VALUE_ITERATOR_INL_H
    -
    A string escaped per JSON rules, terminated with quote (").
    +
    simdjson_inline bool unsafe_is_equal(size_t length, std::string_view target) const noexcept
    This compares the current instance to the std::string_view target: returns true if they are byte-by-b...
    simdjson_warn_unused simdjson_inline simdjson_result< bool > started_array() noexcept
    Start an array iteration, after the user has already checked and moved past the [.
    simdjson_warn_unused simdjson_inline simdjson_result< bool > start_array() noexcept
    Check for an opening [ and start an array iteration.
    simdjson_warn_unused simdjson_inline error_code check_root_array() noexcept
    Checks whether an array could be started from the root.
    diff --git a/value__iterator_8h_source.html b/value__iterator_8h_source.html index 6a0124030..1698e015a 100644 --- a/value__iterator_8h_source.html +++ b/value__iterator_8h_source.html @@ -29,7 +29,7 @@
    @@ -155,130 +155,130 @@ $(document).ready(function(){initNavTree('value__iterator_8h_source.html',''); i
    160
    164 simdjson_warn_unused simdjson_inline error_code field_value() noexcept;
    165
    -
    182 simdjson_warn_unused simdjson_inline error_code find_field(const std::string_view key) noexcept;
    +
    182 simdjson_warn_unused simdjson_inline error_code find_field(const std::string_view key) noexcept;
    183
    -
    201 simdjson_warn_unused simdjson_inline simdjson_result<bool> find_field_raw(const std::string_view key) noexcept;
    +
    201 simdjson_warn_unused simdjson_inline simdjson_result<bool> find_field_raw(const std::string_view key) noexcept;
    202
    -
    221 simdjson_warn_unused simdjson_inline simdjson_result<bool> find_field_unordered_raw(const std::string_view key) noexcept;
    +
    221 simdjson_warn_unused simdjson_inline simdjson_result<bool> find_field_unordered_raw(const std::string_view key) noexcept;
    222
    -
    238 simdjson_warn_unused simdjson_inline simdjson_result<bool> start_array() noexcept;
    -
    246 simdjson_warn_unused simdjson_inline simdjson_result<bool> start_root_array() noexcept;
    -
    254 simdjson_warn_unused simdjson_inline error_code check_root_array() noexcept;
    -
    265 simdjson_warn_unused simdjson_inline simdjson_result<bool> started_array() noexcept;
    -
    276 simdjson_warn_unused simdjson_inline simdjson_result<bool> started_root_array() noexcept;
    +
    238 simdjson_warn_unused simdjson_inline simdjson_result<bool> start_array() noexcept;
    +
    246 simdjson_warn_unused simdjson_inline simdjson_result<bool> start_root_array() noexcept;
    +
    254 simdjson_warn_unused simdjson_inline error_code check_root_array() noexcept;
    +
    265 simdjson_warn_unused simdjson_inline simdjson_result<bool> started_array() noexcept;
    +
    276 simdjson_warn_unused simdjson_inline simdjson_result<bool> started_root_array() noexcept;
    277
    -
    287 simdjson_warn_unused simdjson_inline simdjson_result<bool> has_next_element() noexcept;
    +
    287 simdjson_warn_unused simdjson_inline simdjson_result<bool> has_next_element() noexcept;
    288
    -
    292 simdjson_warn_unused simdjson_inline value_iterator child() const noexcept;
    +
    292 simdjson_warn_unused simdjson_inline value_iterator child() const noexcept;
    293
    -
    302 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_string(bool allow_replacement) noexcept;
    - -
    304 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement) noexcept;
    -
    305 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_wobbly_string() noexcept;
    -
    306 simdjson_warn_unused simdjson_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
    -
    307 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
    -
    308 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_uint64_in_string() noexcept;
    -
    309 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
    -
    310 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_int64_in_string() noexcept;
    -
    311 simdjson_warn_unused simdjson_inline simdjson_result<double> get_double() noexcept;
    -
    312 simdjson_warn_unused simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
    -
    313 simdjson_warn_unused simdjson_inline simdjson_result<bool> get_bool() noexcept;
    -
    314 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_null() noexcept;
    -
    315 simdjson_warn_unused simdjson_inline bool is_negative() noexcept;
    -
    316 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_integer() noexcept;
    -
    317 simdjson_warn_unused simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
    -
    318 simdjson_warn_unused simdjson_inline simdjson_result<number> get_number() noexcept;
    +
    302 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_string(bool allow_replacement) noexcept;
    +
    303 template <typename string_type>
    +
    304 simdjson_warn_unused simdjson_inline error_code get_string(string_type& receiver, bool allow_replacement) noexcept;
    +
    305 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_wobbly_string() noexcept;
    +
    306 simdjson_warn_unused simdjson_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
    +
    307 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_uint64() noexcept;
    +
    308 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_uint64_in_string() noexcept;
    +
    309 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_int64() noexcept;
    +
    310 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_int64_in_string() noexcept;
    +
    311 simdjson_warn_unused simdjson_inline simdjson_result<double> get_double() noexcept;
    +
    312 simdjson_warn_unused simdjson_inline simdjson_result<double> get_double_in_string() noexcept;
    +
    313 simdjson_warn_unused simdjson_inline simdjson_result<bool> get_bool() noexcept;
    +
    314 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_null() noexcept;
    +
    315 simdjson_warn_unused simdjson_inline bool is_negative() noexcept;
    +
    316 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_integer() noexcept;
    +
    317 simdjson_warn_unused simdjson_inline simdjson_result<number_type> get_number_type() noexcept;
    +
    318 simdjson_warn_unused simdjson_inline simdjson_result<number> get_number() noexcept;
    319
    -
    320 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_root_string(bool check_trailing, bool allow_replacement) noexcept;
    - -
    322 simdjson_warn_unused simdjson_inline error_code get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept;
    -
    323 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_root_wobbly_string(bool check_trailing) noexcept;
    -
    324 simdjson_warn_unused simdjson_inline simdjson_result<raw_json_string> get_root_raw_json_string(bool check_trailing) noexcept;
    -
    325 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_root_uint64(bool check_trailing) noexcept;
    -
    326 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_root_uint64_in_string(bool check_trailing) noexcept;
    -
    327 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_root_int64(bool check_trailing) noexcept;
    -
    328 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_root_int64_in_string(bool check_trailing) noexcept;
    -
    329 simdjson_warn_unused simdjson_inline simdjson_result<double> get_root_double(bool check_trailing) noexcept;
    -
    330 simdjson_warn_unused simdjson_inline simdjson_result<double> get_root_double_in_string(bool check_trailing) noexcept;
    -
    331 simdjson_warn_unused simdjson_inline simdjson_result<bool> get_root_bool(bool check_trailing) noexcept;
    -
    332 simdjson_warn_unused simdjson_inline bool is_root_negative() noexcept;
    -
    333 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_root_integer(bool check_trailing) noexcept;
    -
    334 simdjson_warn_unused simdjson_inline simdjson_result<number_type> get_root_number_type(bool check_trailing) noexcept;
    -
    335 simdjson_warn_unused simdjson_inline simdjson_result<number> get_root_number(bool check_trailing) noexcept;
    -
    336 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_root_null(bool check_trailing) noexcept;
    +
    320 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_root_string(bool check_trailing, bool allow_replacement) noexcept;
    +
    321 template <typename string_type>
    +
    322 simdjson_warn_unused simdjson_inline error_code get_root_string(string_type& receiver, bool check_trailing, bool allow_replacement) noexcept;
    +
    323 simdjson_warn_unused simdjson_inline simdjson_result<std::string_view> get_root_wobbly_string(bool check_trailing) noexcept;
    +
    324 simdjson_warn_unused simdjson_inline simdjson_result<raw_json_string> get_root_raw_json_string(bool check_trailing) noexcept;
    +
    325 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_root_uint64(bool check_trailing) noexcept;
    +
    326 simdjson_warn_unused simdjson_inline simdjson_result<uint64_t> get_root_uint64_in_string(bool check_trailing) noexcept;
    +
    327 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_root_int64(bool check_trailing) noexcept;
    +
    328 simdjson_warn_unused simdjson_inline simdjson_result<int64_t> get_root_int64_in_string(bool check_trailing) noexcept;
    +
    329 simdjson_warn_unused simdjson_inline simdjson_result<double> get_root_double(bool check_trailing) noexcept;
    +
    330 simdjson_warn_unused simdjson_inline simdjson_result<double> get_root_double_in_string(bool check_trailing) noexcept;
    +
    331 simdjson_warn_unused simdjson_inline simdjson_result<bool> get_root_bool(bool check_trailing) noexcept;
    +
    332 simdjson_warn_unused simdjson_inline bool is_root_negative() noexcept;
    +
    333 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_root_integer(bool check_trailing) noexcept;
    +
    334 simdjson_warn_unused simdjson_inline simdjson_result<number_type> get_root_number_type(bool check_trailing) noexcept;
    +
    335 simdjson_warn_unused simdjson_inline simdjson_result<number> get_root_number(bool check_trailing) noexcept;
    +
    336 simdjson_warn_unused simdjson_inline simdjson_result<bool> is_root_null(bool check_trailing) noexcept;
    337
    -
    338 simdjson_warn_unused simdjson_inline error_code error() const noexcept;
    -
    339 simdjson_inline uint8_t *&string_buf_loc() noexcept;
    -
    340 simdjson_inline const json_iterator &json_iter() const noexcept;
    -
    341 simdjson_inline json_iterator &json_iter() noexcept;
    +
    338 simdjson_warn_unused simdjson_inline error_code error() const noexcept;
    +
    339 simdjson_inline uint8_t *&string_buf_loc() noexcept;
    +
    340 simdjson_inline const json_iterator &json_iter() const noexcept;
    +
    341 simdjson_inline json_iterator &json_iter() noexcept;
    342
    -
    343 simdjson_inline void assert_is_valid() const noexcept;
    -
    344 simdjson_inline bool is_valid() const noexcept;
    +
    343 simdjson_inline void assert_is_valid() const noexcept;
    +
    344 simdjson_inline bool is_valid() const noexcept;
    345
    - -
    352 simdjson_inline simdjson_result<bool> reset_array() noexcept;
    -
    357 simdjson_inline simdjson_result<bool> reset_object() noexcept;
    -
    365 simdjson_inline void move_at_start() noexcept;
    +
    347protected:
    +
    352 simdjson_inline simdjson_result<bool> reset_array() noexcept;
    +
    357 simdjson_inline simdjson_result<bool> reset_object() noexcept;
    +
    365 simdjson_inline void move_at_start() noexcept;
    366
    -
    373 simdjson_inline void move_at_container_start() noexcept;
    +
    373 simdjson_inline void move_at_container_start() noexcept;
    374 /* Useful for debugging and logging purposes. */
    -
    375 inline std::string to_string() const noexcept;
    -
    376 simdjson_inline value_iterator(json_iterator *json_iter, depth_t depth, token_position start_index) noexcept;
    +
    375 inline std::string to_string() const noexcept;
    +
    376 simdjson_inline value_iterator(json_iterator *json_iter, depth_t depth, token_position start_index) noexcept;
    377
    -
    378 simdjson_inline simdjson_result<bool> parse_null(const uint8_t *json) const noexcept;
    -
    379 simdjson_inline simdjson_result<bool> parse_bool(const uint8_t *json) const noexcept;
    -
    380 simdjson_inline const uint8_t *peek_start() const noexcept;
    -
    381 simdjson_inline uint32_t peek_start_length() const noexcept;
    -
    382 simdjson_inline uint32_t peek_root_length() const noexcept;
    +
    378 simdjson_inline simdjson_result<bool> parse_null(const uint8_t *json) const noexcept;
    +
    379 simdjson_inline simdjson_result<bool> parse_bool(const uint8_t *json) const noexcept;
    +
    380 simdjson_inline const uint8_t *peek_start() const noexcept;
    +
    381 simdjson_inline uint32_t peek_start_length() const noexcept;
    +
    382 simdjson_inline uint32_t peek_root_length() const noexcept;
    383
    -
    413 simdjson_inline void advance_scalar(const char *type) noexcept;
    -
    414 simdjson_inline void advance_root_scalar(const char *type) noexcept;
    -
    415 simdjson_inline void advance_non_root_scalar(const char *type) noexcept;
    +
    413 simdjson_inline void advance_scalar(const char *type) noexcept;
    +
    414 simdjson_inline void advance_root_scalar(const char *type) noexcept;
    +
    415 simdjson_inline void advance_non_root_scalar(const char *type) noexcept;
    416
    -
    417 simdjson_inline const uint8_t *peek_scalar(const char *type) noexcept;
    -
    418 simdjson_inline const uint8_t *peek_root_scalar(const char *type) noexcept;
    -
    419 simdjson_inline const uint8_t *peek_non_root_scalar(const char *type) noexcept;
    +
    417 simdjson_inline const uint8_t *peek_scalar(const char *type) noexcept;
    +
    418 simdjson_inline const uint8_t *peek_root_scalar(const char *type) noexcept;
    +
    419 simdjson_inline const uint8_t *peek_non_root_scalar(const char *type) noexcept;
    420
    421
    -
    422 simdjson_warn_unused simdjson_inline error_code start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept;
    -
    423 simdjson_warn_unused simdjson_inline error_code end_container() noexcept;
    +
    422 simdjson_warn_unused simdjson_inline error_code start_container(uint8_t start_char, const char *incorrect_type_message, const char *type) noexcept;
    +
    423 simdjson_warn_unused simdjson_inline error_code end_container() noexcept;
    424
    -
    431 simdjson_inline simdjson_result<const uint8_t *> advance_to_value() noexcept;
    +
    431 simdjson_inline simdjson_result<const uint8_t *> advance_to_value() noexcept;
    432
    -
    433 simdjson_warn_unused simdjson_inline error_code incorrect_type_error(const char *message) const noexcept;
    -
    434 simdjson_warn_unused simdjson_inline error_code error_unless_more_tokens(uint32_t tokens=1) const noexcept;
    +
    433 simdjson_warn_unused simdjson_inline error_code incorrect_type_error(const char *message) const noexcept;
    +
    434 simdjson_warn_unused simdjson_inline error_code error_unless_more_tokens(uint32_t tokens=1) const noexcept;
    435
    -
    436 simdjson_inline bool is_at_start() const noexcept;
    -
    443 simdjson_inline bool is_at_iterator_start() const noexcept;
    +
    436 simdjson_inline bool is_at_start() const noexcept;
    +
    443 simdjson_inline bool is_at_iterator_start() const noexcept;
    444
    -
    452 simdjson_inline bool is_at_key() const noexcept;
    +
    452 simdjson_inline bool is_at_key() const noexcept;
    453
    -
    454 inline void assert_at_start() const noexcept;
    -
    455 inline void assert_at_container_start() const noexcept;
    -
    456 inline void assert_at_root() const noexcept;
    -
    457 inline void assert_at_child() const noexcept;
    -
    458 inline void assert_at_next() const noexcept;
    -
    459 inline void assert_at_non_root_start() const noexcept;
    +
    454 inline void assert_at_start() const noexcept;
    +
    455 inline void assert_at_container_start() const noexcept;
    +
    456 inline void assert_at_root() const noexcept;
    +
    457 inline void assert_at_child() const noexcept;
    +
    458 inline void assert_at_next() const noexcept;
    +
    459 inline void assert_at_non_root_start() const noexcept;
    460
    -
    462 simdjson_inline token_position start_position() const noexcept;
    +
    462 simdjson_inline token_position start_position() const noexcept;
    463
    -
    465 simdjson_inline token_position position() const noexcept;
    -
    467 simdjson_inline token_position last_position() const noexcept;
    -
    469 simdjson_inline token_position end_position() const noexcept;
    -
    471 simdjson_warn_unused simdjson_inline error_code report_error(error_code error, const char *message) noexcept;
    +
    465 simdjson_inline token_position position() const noexcept;
    +
    467 simdjson_inline token_position last_position() const noexcept;
    +
    469 simdjson_inline token_position end_position() const noexcept;
    +
    471 simdjson_warn_unused simdjson_inline error_code report_error(error_code error, const char *message) noexcept;
    472
    - -
    474 friend class object;
    - - - +
    473 friend class document;
    +
    474 friend class object;
    +
    475 friend class array;
    +
    476 friend class value;
    +
    477 friend class field;
    478}; // value_iterator
    479
    480} // namespace ondemand
    481} // namespace SIMDJSON_IMPLEMENTATION
    482} // namespace simdjson
    483
    - +
    484namespace simdjson {
    485
    486template<>
    diff --git a/westmere_2base_8h_source.html b/westmere_2base_8h_source.html index a614a6c24..2d9423c28 100644 --- a/westmere_2base_8h_source.html +++ b/westmere_2base_8h_source.html @@ -29,7 +29,7 @@
    diff --git a/westmere_2begin_8h_source.html b/westmere_2begin_8h_source.html index 6250b2456..07a74f33e 100644 --- a/westmere_2begin_8h_source.html +++ b/westmere_2begin_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2bitmanipulation_8h_source.html b/westmere_2bitmanipulation_8h_source.html index fb9ae0c31..86a975013 100644 --- a/westmere_2bitmanipulation_8h_source.html +++ b/westmere_2bitmanipulation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2bitmask_8h_source.html b/westmere_2bitmask_8h_source.html index d85e6b39f..eb5c2444e 100644 --- a/westmere_2bitmask_8h_source.html +++ b/westmere_2bitmask_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2end_8h_source.html b/westmere_2end_8h_source.html index ae47e76d8..8a1fcf805 100644 --- a/westmere_2end_8h_source.html +++ b/westmere_2end_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2implementation_8h_source.html b/westmere_2implementation_8h_source.html index 28a039e68..222486ded 100644 --- a/westmere_2implementation_8h_source.html +++ b/westmere_2implementation_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2intrinsics_8h_source.html b/westmere_2intrinsics_8h_source.html index 71d884952..f5a77239f 100644 --- a/westmere_2intrinsics_8h_source.html +++ b/westmere_2intrinsics_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2numberparsing__defs_8h_source.html b/westmere_2numberparsing__defs_8h_source.html index 8ae494840..7b3b1a5cd 100644 --- a/westmere_2numberparsing__defs_8h_source.html +++ b/westmere_2numberparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2ondemand_8h_source.html b/westmere_2ondemand_8h_source.html index 7b9c01c41..136216b32 100644 --- a/westmere_2ondemand_8h_source.html +++ b/westmere_2ondemand_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2simd_8h_source.html b/westmere_2simd_8h_source.html index 1616f10e9..6998e7eef 100644 --- a/westmere_2simd_8h_source.html +++ b/westmere_2simd_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_2stringparsing__defs_8h_source.html b/westmere_2stringparsing__defs_8h_source.html index b04f57cfd..87d71d7ff 100644 --- a/westmere_2stringparsing__defs_8h_source.html +++ b/westmere_2stringparsing__defs_8h_source.html @@ -29,7 +29,7 @@ diff --git a/westmere_8h_source.html b/westmere_8h_source.html index 53303fc99..4269ff784 100644 --- a/westmere_8h_source.html +++ b/westmere_8h_source.html @@ -29,7 +29,7 @@
    simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::operator double simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::operator double ( ) const
    - + @@ -566,7 +566,7 @@ Protected Attributes
    simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::operator int64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::operator int64_t ( ) const
    - + @@ -593,7 +593,7 @@ Protected Attributes
    simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::operator uint64_t simdjson_inline simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::operator uint64_t ( ) const
    - + @@ -620,7 +620,7 @@ Protected Attributes
    simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::skip_double simdjson_inline void simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::skip_double ( )
    - +
    double simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::floating_point_numberdouble simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::floating_point_number
    @@ -653,7 +653,7 @@ Protected Attributes
    - +
    int64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::signed_integerint64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::signed_integer
    @@ -693,7 +693,7 @@ Protected Attributes
    - +
    uint64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::unsigned_integeruint64_t simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::unsigned_integer
    diff --git a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container-members.html b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container-members.html index 785f31824..381068ee9 100644 --- a/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container-members.html +++ b/structsimdjson_1_1_s_i_m_d_j_s_o_n___i_m_p_l_e_m_e_n_t_a_t_i_o_n_1_1open__container-members.html @@ -29,7 +29,7 @@
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON
    -
    simdjson 4.0.7 +
    simdjson 4.1.0
    Ridiculously Fast JSON