This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/datasketches-cpp.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new 46d81537 deploy: d5c92d2e0f670ffcaad5a71382fe21a1307986ec
46d81537 is described below
commit 46d81537c91ba86460bd5d1bc4a3580191fe0c8c
Author: leerho <[email protected]>
AuthorDate: Sat Oct 3 20:53:28 2026 +0000
deploy: d5c92d2e0f670ffcaad5a71382fe21a1307986ec
---
...t__theta__sketch__parser__impl_8hpp_source.html | 146 +++++++++++----------
1 file changed, 75 insertions(+), 71 deletions(-)
diff --git a/docs/master/compact__theta__sketch__parser__impl_8hpp_source.html
b/docs/master/compact__theta__sketch__parser__impl_8hpp_source.html
index ae1a9d5e..b4701b78 100644
--- a/docs/master/compact__theta__sketch__parser__impl_8hpp_source.html
+++ b/docs/master/compact__theta__sketch__parser__impl_8hpp_source.html
@@ -163,77 +163,81 @@ $(document).ready(function() { init_codefold(0); });
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">
80</span> check_memory_size(ptr, size, 16, dump_on_error);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">
81</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash, 1,
theta, <span class="keyword">reinterpret_cast<</span><span
class="keyword">const </span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_SINGLE_ENTRY_U64, 64};</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">
82</span> }</div>
-<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">
83</span> <span class="keyword">const</span> uint32_t num_entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
-<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">
84</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> entries_start_u64 = has_theta ?
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 : COMPACT_SKETCH_ENTRIES_EXACT_U64;</div>
-<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">
85</span> <span class="keyword">const</span> uint64_t* entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
entries_start_u64;</div>
-<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">
86</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes = (entries_start_u64 +
num_entries) * <span class="keyword">sizeof</span>(uint64_t);</div>
-<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">
87</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
-<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">
88</span> <span class="keyword">const</span> <span
class="keywordtype">bool</span> is_ordered = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint8_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_FLAGS_BYTE] & (1 <<
COMPACT_SKETCH_IS_ORDERED_FLAG);</div>
-<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">
89</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, is_ordered, seed_hash, num_entries, theta,
entries, 64};</div>
-<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">
90</span> }</div>
-<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">
91</span> <span class="keywordflow">case</span> 1: {</div>
-<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">
92</span> uint16_t seed_hash = compute_seed_hash(seed);</div>
-<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">
93</span> <span class="keyword">const</span> uint32_t num_entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
-<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">
94</span> uint64_t theta = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_THETA_U64];</div>
-<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">
95</span> <span class="keywordtype">bool</span> is_empty = (num_entries ==
0) && (theta == <a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>);</div>
-<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">
96</span> <span class="keywordflow">if</span> (is_empty) <span
class="keywordflow">return</span> {<span class="keyword">true</span>, <span
class="keyword">true</span>, seed_hash, 0, theta, <span
class="keyword">nullptr</span>, 64};</div>
-<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">
97</span> <span class="keyword">const</span> uint64_t* entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64;</div>
-<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">
98</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes =
(COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 + num_entries) * <span
class="keyword">sizeof</span>(uint64_t);</div>
-<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">
99</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
-<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">
100</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash,
num_entries, theta, entries, 64};</div>
-<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">
101</span> }</div>
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">
102</span> <span class="keywordflow">case</span> 2: {</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">
103</span> uint8_t preamble_size = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint8_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_PRE_LONGS_BYTE];</div>
-<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">
104</span> <span class="keyword">const</span> uint16_t seed_hash = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint16_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_SEED_HASH_U16];</div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">
105</span> checker<true>::check_seed_hash(seed_hash,
compute_seed_hash(seed));</div>
-<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">
106</span> <span class="keywordflow">if</span> (preamble_size == 1) {</div>
-<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">
107</span> <span class="keywordflow">return</span> {<span
class="keyword">true</span>, <span class="keyword">true</span>, seed_hash, 0,
<a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>,
<span class="keyword">nullptr</span>, 64};</div>
-<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">
108</span> } <span class="keywordflow">else</span> <span
class="keywordflow">if</span> (preamble_size == 2) {</div>
-<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">
109</span> <span class="keyword">const</span> uint32_t num_entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
-<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">
110</span> <span class="keywordflow">if</span> (num_entries == 0)
{</div>
-<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">
111</span> <span class="keywordflow">return</span> {<span
class="keyword">true</span>, <span class="keyword">true</span>, seed_hash, 0,
<a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>,
<span class="keyword">nullptr</span>, 64};</div>
-<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">
112</span> } <span class="keywordflow">else</span> {</div>
-<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">
113</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes = (preamble_size +
num_entries) << 3;</div>
-<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">
114</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
-<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">
115</span> <span class="keyword">const</span> uint64_t* entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_ENTRIES_EXACT_U64;</div>
-<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">
116</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash,
num_entries, <a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>,
entries, 64};</div>
-<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">
117</span> }</div>
-<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">
118</span> } <span class="keywordflow">else</span> <span
class="keywordflow">if</span> (preamble_size == 3) {</div>
-<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">
119</span> <span class="keyword">const</span> uint32_t num_entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
-<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">
120</span> uint64_t theta = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_THETA_U64];</div>
-<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">
121</span> <span class="keywordtype">bool</span> is_empty =
(num_entries == 0) && (theta == <a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>);</div>
-<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">
122</span> <span class="keywordflow">if</span> (is_empty) <span
class="keywordflow">return</span> {<span class="keyword">true</span>, <span
class="keyword">true</span>, seed_hash, 0, theta, <span
class="keyword">nullptr</span>, 64};</div>
-<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">
123</span> <span class="keyword">const</span> uint64_t* entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64;</div>
-<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">
124</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes =
(COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 + num_entries) * <span
class="keyword">sizeof</span>(uint64_t);</div>
-<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">
125</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
-<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">
126</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash,
num_entries, theta, entries, 64};</div>
-<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">
127</span> } <span class="keywordflow">else</span> {</div>
-<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">
128</span> <span class="keywordflow">throw</span>
std::invalid_argument(std::to_string(preamble_size) + <span
class="stringliteral">" longs of premable, but expected 1, 2, or
3"</span>);</div>
-<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">
129</span> }</div>
-<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">
130</span> }</div>
-<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">
131</span> <span class="keywordflow">default</span>:</div>
-<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">
132</span> <span class="keywordflow">throw</span>
std::invalid_argument(<span class="stringliteral">"unsupported serial
version "</span> + std::to_string(serial_version));</div>
-<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">
133</span> }</div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">
134</span>}</div>
-<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">
135</span> </div>
-<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">
136</span><span class="keyword">template</span><<span
class="keywordtype">bool</span> dummy></div>
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">
137</span><span class="keywordtype">void</span>
compact_theta_sketch_parser<dummy>::check_memory_size(<span
class="keyword">const</span> <span class="keywordtype">void</span>* ptr, <span
class="keywordtype">size_t</span> actual_bytes, <span
class="keywordtype">size_t</span> expected_bytes, <span
class="keywordtype">bool</span> dump_on_error) {</div>
-<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">
138</span> <span class="keywordflow">if</span> (actual_bytes <
expected_bytes) <span class="keywordflow">throw</span> std::out_of_range(<span
class="stringliteral">"at least "</span> +
std::to_string(expected_bytes)</div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">
139</span> + <span class="stringliteral">" bytes expected, actual
"</span> + std::to_string(actual_bytes)</div>
-<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">
140</span> + (dump_on_error ? (<span class="stringliteral">", sketch
dump: "</span> + hex_dump(<span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint8_t*<span class="keyword">></span>(ptr), actual_bytes)) : <span
class="stringliteral">""</span>));</div>
-<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">
141</span>}</div>
-<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">
142</span> </div>
-<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">
143</span><span class="keyword">template</span><<span
class="keywordtype">bool</span> dummy></div>
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">
144</span>std::string compact_theta_sketch_parser<dummy>::hex_dump(<span
class="keyword">const</span> uint8_t* ptr, <span
class="keywordtype">size_t</span> size) {</div>
-<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">
145</span> std::stringstream s;</div>
-<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">
146</span> s << std::hex << std::setfill(<span
class="charliteral">'0'</span>) << std::uppercase;</div>
-<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">
147</span> <span class="keywordflow">for</span> (<span
class="keywordtype">size_t</span> i = 0; i < size; ++i) s <<
std::setw(2) << (ptr[i] & 0xff);</div>
-<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">
148</span> <span class="keywordflow">return</span> s.str();</div>
-<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">
149</span>}</div>
-<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">
150</span> </div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">
151</span>} <span class="comment">/* namespace datasketches */</span></div>
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">
152</span> </div>
-<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">
153</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">
83</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> entries_start_u64 = has_theta ?
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 : COMPACT_SKETCH_ENTRIES_EXACT_U64;</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">
84</span> check_memory_size(ptr, size, entries_start_u64 * <span
class="keyword">sizeof</span>(uint64_t), dump_on_error);</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">
85</span> <span class="keyword">const</span> uint32_t num_entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">
86</span> <span class="keyword">const</span> uint64_t* entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
entries_start_u64;</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">
87</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes = (entries_start_u64 +
num_entries) * <span class="keyword">sizeof</span>(uint64_t);</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">
88</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">
89</span> <span class="keyword">const</span> <span
class="keywordtype">bool</span> is_ordered = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint8_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_FLAGS_BYTE] & (1 <<
COMPACT_SKETCH_IS_ORDERED_FLAG);</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">
90</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, is_ordered, seed_hash, num_entries, theta,
entries, 64};</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">
91</span> }</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">
92</span> <span class="keywordflow">case</span> 1: {</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">
93</span> uint16_t seed_hash = compute_seed_hash(seed);</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">
94</span> check_memory_size(ptr, size,
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 * <span
class="keyword">sizeof</span>(uint64_t), dump_on_error);</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">
95</span> <span class="keyword">const</span> uint32_t num_entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">
96</span> uint64_t theta = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_THETA_U64];</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">
97</span> <span class="keywordtype">bool</span> is_empty = (num_entries ==
0) && (theta == <a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>);</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">
98</span> <span class="keywordflow">if</span> (is_empty) <span
class="keywordflow">return</span> {<span class="keyword">true</span>, <span
class="keyword">true</span>, seed_hash, 0, theta, <span
class="keyword">nullptr</span>, 64};</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">
99</span> <span class="keyword">const</span> uint64_t* entries = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64;</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">
100</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes =
(COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 + num_entries) * <span
class="keyword">sizeof</span>(uint64_t);</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">
101</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">
102</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash,
num_entries, theta, entries, 64};</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">
103</span> }</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">
104</span> <span class="keywordflow">case</span> 2: {</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">
105</span> uint8_t preamble_size = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint8_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_PRE_LONGS_BYTE];</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">
106</span> <span class="keyword">const</span> uint16_t seed_hash = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint16_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_SEED_HASH_U16];</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">
107</span> checker<true>::check_seed_hash(seed_hash,
compute_seed_hash(seed));</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">
108</span> <span class="keywordflow">if</span> (preamble_size == 1) {</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">
109</span> <span class="keywordflow">return</span> {<span
class="keyword">true</span>, <span class="keyword">true</span>, seed_hash, 0,
<a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>,
<span class="keyword">nullptr</span>, 64};</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">
110</span> } <span class="keywordflow">else</span> <span
class="keywordflow">if</span> (preamble_size == 2) {</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">
111</span> check_memory_size(ptr, size,
COMPACT_SKETCH_ENTRIES_EXACT_U64 * <span
class="keyword">sizeof</span>(uint64_t), dump_on_error);</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">
112</span> <span class="keyword">const</span> uint32_t num_entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">
113</span> <span class="keywordflow">if</span> (num_entries == 0)
{</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">
114</span> <span class="keywordflow">return</span> {<span
class="keyword">true</span>, <span class="keyword">true</span>, seed_hash, 0,
<a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>,
<span class="keyword">nullptr</span>, 64};</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">
115</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">
116</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes = (preamble_size +
num_entries) << 3;</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">
117</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">
118</span> <span class="keyword">const</span> uint64_t* entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_ENTRIES_EXACT_U64;</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">
119</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash,
num_entries, <a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>,
entries, 64};</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">
120</span> }</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">
121</span> } <span class="keywordflow">else</span> <span
class="keywordflow">if</span> (preamble_size == 3) {</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">
122</span> check_memory_size(ptr, size,
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 * <span
class="keyword">sizeof</span>(uint64_t), dump_on_error);</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">
123</span> <span class="keyword">const</span> uint32_t num_entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint32_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_NUM_ENTRIES_U32];</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">
124</span> uint64_t theta = <span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span
class="keyword">></span>(ptr)[COMPACT_SKETCH_THETA_U64];</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">
125</span> <span class="keywordtype">bool</span> is_empty =
(num_entries == 0) && (theta == <a class="code hl_variable"
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">theta_constants::MAX_THETA</a>);</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">
126</span> <span class="keywordflow">if</span> (is_empty) <span
class="keywordflow">return</span> {<span class="keyword">true</span>, <span
class="keyword">true</span>, seed_hash, 0, theta, <span
class="keyword">nullptr</span>, 64};</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">
127</span> <span class="keyword">const</span> uint64_t* entries =
<span class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint64_t*<span class="keyword">></span>(ptr) +
COMPACT_SKETCH_ENTRIES_ESTIMATION_U64;</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">
128</span> <span class="keyword">const</span> <span
class="keywordtype">size_t</span> expected_size_bytes =
(COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 + num_entries) * <span
class="keyword">sizeof</span>(uint64_t);</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">
129</span> check_memory_size(ptr, size, expected_size_bytes,
dump_on_error);</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">
130</span> <span class="keywordflow">return</span> {<span
class="keyword">false</span>, <span class="keyword">true</span>, seed_hash,
num_entries, theta, entries, 64};</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">
131</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">
132</span> <span class="keywordflow">throw</span>
std::invalid_argument(std::to_string(preamble_size) + <span
class="stringliteral">" longs of premable, but expected 1, 2, or
3"</span>);</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">
133</span> }</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">
134</span> }</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">
135</span> <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">
136</span> <span class="keywordflow">throw</span>
std::invalid_argument(<span class="stringliteral">"unsupported serial
version "</span> + std::to_string(serial_version));</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">
137</span> }</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">
138</span>}</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">
139</span> </div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">
140</span><span class="keyword">template</span><<span
class="keywordtype">bool</span> dummy></div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">
141</span><span class="keywordtype">void</span>
compact_theta_sketch_parser<dummy>::check_memory_size(<span
class="keyword">const</span> <span class="keywordtype">void</span>* ptr, <span
class="keywordtype">size_t</span> actual_bytes, <span
class="keywordtype">size_t</span> expected_bytes, <span
class="keywordtype">bool</span> dump_on_error) {</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">
142</span> <span class="keywordflow">if</span> (actual_bytes <
expected_bytes) <span class="keywordflow">throw</span> std::out_of_range(<span
class="stringliteral">"at least "</span> +
std::to_string(expected_bytes)</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">
143</span> + <span class="stringliteral">" bytes expected, actual
"</span> + std::to_string(actual_bytes)</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">
144</span> + (dump_on_error ? (<span class="stringliteral">", sketch
dump: "</span> + hex_dump(<span
class="keyword">reinterpret_cast<</span><span class="keyword">const
</span>uint8_t*<span class="keyword">></span>(ptr), actual_bytes)) : <span
class="stringliteral">""</span>));</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">
145</span>}</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">
146</span> </div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">
147</span><span class="keyword">template</span><<span
class="keywordtype">bool</span> dummy></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">
148</span>std::string compact_theta_sketch_parser<dummy>::hex_dump(<span
class="keyword">const</span> uint8_t* ptr, <span
class="keywordtype">size_t</span> size) {</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">
149</span> std::stringstream s;</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">
150</span> s << std::hex << std::setfill(<span
class="charliteral">'0'</span>) << std::uppercase;</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">
151</span> <span class="keywordflow">for</span> (<span
class="keywordtype">size_t</span> i = 0; i < size; ++i) s <<
std::setw(2) << (ptr[i] & 0xff);</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">
152</span> <span class="keywordflow">return</span> s.str();</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">
153</span>}</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">
154</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">
155</span>} <span class="comment">/* namespace datasketches */</span></div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">
156</span> </div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">
157</span><span class="preprocessor">#endif</span></div>
<div class="ttc"
id="anamespacedatasketches_1_1theta__constants_html_ae3243c6bd90c8d8577c32b86100d97ad"><div
class="ttname"><a
href="namespacedatasketches_1_1theta__constants.html#ae3243c6bd90c8d8577c32b86100d97ad">datasketches::theta_constants::MAX_THETA</a></div><div
class="ttdeci">const uint64_t MAX_THETA</div><div class="ttdoc">max theta -
signed max for compatibility with Java</div><div
class="ttdef"><b>Definition</b> theta_constants.hpp:36</div></div>
<div class="ttc" id="anamespacedatasketches_html"><div class="ttname"><a
href="namespacedatasketches.html">datasketches</a></div><div
class="ttdoc">DataSketches namespace.</div><div class="ttdef"><b>Definition</b>
binomial_bounds.hpp:38</div></div>
</div><!-- fragment --></div><!-- contents -->
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]