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&lt;</span><span 
class="keyword">const </span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint8_t*<span 
class="keyword">&gt;</span>(ptr)[COMPACT_SKETCH_FLAGS_BYTE] &amp; (1 &lt;&lt; 
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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint64_t*<span 
class="keyword">&gt;</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) &amp;&amp; (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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint8_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint16_t*<span 
class="keyword">&gt;</span>(ptr)[COMPACT_SKETCH_SEED_HASH_U16];</div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  
105</span>      checker&lt;true&gt;::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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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) &lt;&lt; 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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint64_t*<span 
class="keyword">&gt;</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) &amp;&amp; (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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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">&quot; longs of premable, but expected 1, 2, or 
3&quot;</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">&quot;unsupported serial 
version &quot;</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>&lt;<span 
class="keywordtype">bool</span> dummy&gt;</div>
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  
137</span><span class="keywordtype">void</span> 
compact_theta_sketch_parser&lt;dummy&gt;::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 &lt; 
expected_bytes) <span class="keywordflow">throw</span> std::out_of_range(<span 
class="stringliteral">&quot;at least &quot;</span> + 
std::to_string(expected_bytes)</div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  
139</span>      + <span class="stringliteral">&quot; bytes expected, actual 
&quot;</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">&quot;, sketch 
dump: &quot;</span> + hex_dump(<span 
class="keyword">reinterpret_cast&lt;</span><span class="keyword">const 
</span>uint8_t*<span class="keyword">&gt;</span>(ptr), actual_bytes)) : <span 
class="stringliteral">&quot;&quot;</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>&lt;<span 
class="keywordtype">bool</span> dummy&gt;</div>
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  
144</span>std::string compact_theta_sketch_parser&lt;dummy&gt;::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 &lt;&lt; std::hex &lt;&lt; std::setfill(<span 
class="charliteral">&#39;0&#39;</span>) &lt;&lt; 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 &lt; size; ++i) s &lt;&lt; 
std::setw(2) &lt;&lt; (ptr[i] &amp; 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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint8_t*<span 
class="keyword">&gt;</span>(ptr)[COMPACT_SKETCH_FLAGS_BYTE] &amp; (1 &lt;&lt; 
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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint64_t*<span 
class="keyword">&gt;</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) &amp;&amp; (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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint8_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint16_t*<span 
class="keyword">&gt;</span>(ptr)[COMPACT_SKETCH_SEED_HASH_U16];</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  
107</span>      checker&lt;true&gt;::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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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) &lt;&lt; 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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint32_t*<span 
class="keyword">&gt;</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&lt;</span><span class="keyword">const 
</span>uint64_t*<span 
class="keyword">&gt;</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) &amp;&amp; (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&lt;</span><span class="keyword">const 
</span>uint64_t*<span class="keyword">&gt;</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">&quot; longs of premable, but expected 1, 2, or 
3&quot;</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">&quot;unsupported serial 
version &quot;</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>&lt;<span 
class="keywordtype">bool</span> dummy&gt;</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  
141</span><span class="keywordtype">void</span> 
compact_theta_sketch_parser&lt;dummy&gt;::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 &lt; 
expected_bytes) <span class="keywordflow">throw</span> std::out_of_range(<span 
class="stringliteral">&quot;at least &quot;</span> + 
std::to_string(expected_bytes)</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  
143</span>      + <span class="stringliteral">&quot; bytes expected, actual 
&quot;</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">&quot;, sketch 
dump: &quot;</span> + hex_dump(<span 
class="keyword">reinterpret_cast&lt;</span><span class="keyword">const 
</span>uint8_t*<span class="keyword">&gt;</span>(ptr), actual_bytes)) : <span 
class="stringliteral">&quot;&quot;</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>&lt;<span 
class="keywordtype">bool</span> dummy&gt;</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  
148</span>std::string compact_theta_sketch_parser&lt;dummy&gt;::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 &lt;&lt; std::hex &lt;&lt; std::setfill(<span 
class="charliteral">&#39;0&#39;</span>) &lt;&lt; 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 &lt; size; ++i) s &lt;&lt; 
std::setw(2) &lt;&lt; (ptr[i] &amp; 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]

Reply via email to