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 81c8509  deploy: 75934fa5347a5b7a7a48872a4d974e1a8988b210
81c8509 is described below

commit 81c8509fd27efdbeb0d2bd0422099a3082235e84
Author: leerho <[email protected]>
AuthorDate: Fri Jun 5 16:20:24 2026 +0000

    deploy: 75934fa5347a5b7a7a48872a4d974e1a8988b210
---
 docs/master/CouponList-internal_8hpp_source.html | 527 ++++++++++++-----------
 1 file changed, 271 insertions(+), 256 deletions(-)

diff --git a/docs/master/CouponList-internal_8hpp_source.html 
b/docs/master/CouponList-internal_8hpp_source.html
index eaf24a5..523c0ee 100644
--- a/docs/master/CouponList-internal_8hpp_source.html
+++ b/docs/master/CouponList-internal_8hpp_source.html
@@ -182,287 +182,302 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   
99</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> emptyFlag = ((data[hll_constants::FLAGS_BYTE] 
&amp; hll_constants::EMPTY_FLAG_MASK) ? <span class="keyword">true</span> : 
false);</div>
 <div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  
100</span> </div>
 <div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  
101</span>  <span class="keyword">const</span> uint32_t couponCount = 
data[hll_constants::LIST_COUNT_BYTE];</div>
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  
102</span>  <span class="keyword">const</span> uint32_t couponsInArray = 
(compact ? couponCount : (1 &lt;&lt; HllUtil&lt;A&gt;::computeLgArrInts(LIST, 
couponCount, lgK)));</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  
103</span>  <span class="keyword">const</span> <span 
class="keywordtype">size_t</span> expectedLength = 
hll_constants::LIST_INT_ARR_START + (couponsInArray * <span 
class="keyword">sizeof</span>(uint32_t));</div>
-<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  
104</span>  <span class="keywordflow">if</span> (len &lt; expectedLength) 
{</div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  
105</span>    <span class="keywordflow">throw</span> std::out_of_range(<span 
class="stringliteral">&quot;Byte array too short for sketch. Expected 
&quot;</span> + std::to_string(expectedLength)</div>
-<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  
106</span>                                + <span class="stringliteral">&quot;, 
found: &quot;</span> + std::to_string(len));</div>
-<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  
107</span>  }</div>
-<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  
108</span> </div>
-<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  
109</span>  ClAlloc cla(allocator);</div>
-<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  
110</span>  CouponList&lt;A&gt;* sketch = <span class="keyword">new</span> 
(cla.allocate(1)) CouponList&lt;A&gt;(lgK, tgtHllType, mode, allocator);</div>
-<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  
111</span>  sketch-&gt;couponCount_ = couponCount;</div>
-<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  
112</span>  sketch-&gt;putOutOfOrderFlag(oooFlag); <span class="comment">// 
should always be false for LIST</span></div>
-<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  
113</span> </div>
-<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  
114</span>  <span class="keywordflow">if</span> (!emptyFlag) {</div>
-<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  
115</span>    <span class="comment">// only need to read valid coupons, unlike 
in stream case</span></div>
-<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  
116</span>    std::memcpy(sketch-&gt;coupons_.data(), data + 
hll_constants::LIST_INT_ARR_START, couponCount * <span 
class="keyword">sizeof</span>(uint32_t));</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>  </div>
-<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  
119</span>  <span class="keywordflow">return</span> sketch;</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> </div>
-<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  
122</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  
123</span>CouponList&lt;A&gt;* CouponList&lt;A&gt;::newList(std::istream&amp; 
is, <span class="keyword">const</span> A&amp; allocator) {</div>
-<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  
124</span>  uint8_t listHeader[8];</div>
-<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  
125</span>  read(is, listHeader, 8 * <span 
class="keyword">sizeof</span>(uint8_t));</div>
-<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  
126</span> </div>
-<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  
127</span>  <span class="keywordflow">if</span> 
(listHeader[hll_constants::PREAMBLE_INTS_BYTE] != hll_constants::LIST_PREINTS) 
{</div>
-<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  
128</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Incorrect number of 
preInts in input stream&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>  <span class="keywordflow">if</span> 
(listHeader[hll_constants::SER_VER_BYTE] != hll_constants::SER_VER) {</div>
-<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  
131</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Wrong ser ver in input 
stream&quot;</span>);</div>
-<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  
132</span>  }</div>
-<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  
133</span>  <span class="keywordflow">if</span> 
(listHeader[hll_constants::FAMILY_BYTE] != hll_constants::FAMILY_ID) {</div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  
134</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Input stream is not an 
HLL sketch&quot;</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> </div>
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  
137</span>  hll_mode mode = 
HllSketchImpl&lt;A&gt;::extractCurMode(listHeader[hll_constants::MODE_BYTE]);</div>
-<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  
138</span>  <span class="keywordflow">if</span> (mode != LIST) {</div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  
139</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Calling list 
constructor with non-list mode data&quot;</span>);</div>
-<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  
140</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>  <span class="keyword">const</span> <a class="code hl_enumeration" 
href="namespacedatasketches.html#a76c1ad9235877691984d49415bb263e4">target_hll_type</a>
 tgtHllType = 
HllSketchImpl&lt;A&gt;::extractTgtHllType(listHeader[hll_constants::MODE_BYTE]);</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  
102</span>  <span class="comment">// Reject LIST counts at or above the fixed 
LIST capacity.</span></div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  
103</span>  <span class="keyword">const</span> uint32_t listCapacity = 1u 
&lt;&lt; hll_constants::LG_INIT_LIST_SIZE;</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  
104</span>  <span class="keywordflow">if</span> (couponCount &gt;= 
listCapacity) {</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  
105</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Attempt to deserialize 
invalid CouponList with couponCount &gt;= capacity. Found couponCount: 
&quot;</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  
106</span>                                + std::to_string(couponCount)</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  
107</span>                                + <span class="stringliteral">&quot;, 
capacity: &quot;</span> + std::to_string(listCapacity));</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  
108</span>  }</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  
109</span>  <span class="keyword">const</span> uint32_t couponsInArray = 
(compact ? couponCount : (1 &lt;&lt; HllUtil&lt;A&gt;::computeLgArrInts(LIST, 
couponCount, lgK)));</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  
110</span>  <span class="keyword">const</span> <span 
class="keywordtype">size_t</span> expectedLength = 
hll_constants::LIST_INT_ARR_START + (couponsInArray * <span 
class="keyword">sizeof</span>(uint32_t));</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  
111</span>  <span class="keywordflow">if</span> (len &lt; expectedLength) 
{</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  
112</span>    <span class="keywordflow">throw</span> std::out_of_range(<span 
class="stringliteral">&quot;Byte array too short for sketch. Expected 
&quot;</span> + std::to_string(expectedLength)</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  
113</span>                                + <span class="stringliteral">&quot;, 
found: &quot;</span> + std::to_string(len));</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  
114</span>  }</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  
115</span> </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  
116</span>  ClAlloc cla(allocator);</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  
117</span>  CouponList&lt;A&gt;* sketch = <span class="keyword">new</span> 
(cla.allocate(1)) CouponList&lt;A&gt;(lgK, tgtHllType, mode, allocator);</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  
118</span>  sketch-&gt;couponCount_ = couponCount;</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  
119</span>  sketch-&gt;putOutOfOrderFlag(oooFlag); <span class="comment">// 
should always be false for LIST</span></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">if</span> (!emptyFlag) {</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  
122</span>    <span class="comment">// only need to read valid coupons, unlike 
in stream case</span></div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  
123</span>    std::memcpy(sketch-&gt;coupons_.data(), data + 
hll_constants::LIST_INT_ARR_START, couponCount * <span 
class="keyword">sizeof</span>(uint32_t));</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  
124</span>  }</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  
125</span>  </div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  
126</span>  <span class="keywordflow">return</span> sketch;</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  
127</span>}</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  
128</span> </div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  
129</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  
130</span>CouponList&lt;A&gt;* CouponList&lt;A&gt;::newList(std::istream&amp; 
is, <span class="keyword">const</span> A&amp; allocator) {</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  
131</span>  uint8_t listHeader[8];</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  
132</span>  read(is, listHeader, 8 * <span 
class="keyword">sizeof</span>(uint8_t));</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>  <span class="keywordflow">if</span> 
(listHeader[hll_constants::PREAMBLE_INTS_BYTE] != hll_constants::LIST_PREINTS) 
{</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  
135</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Incorrect number of 
preInts in input stream&quot;</span>);</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  
136</span>  }</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  
137</span>  <span class="keywordflow">if</span> 
(listHeader[hll_constants::SER_VER_BYTE] != hll_constants::SER_VER) {</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  
138</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Wrong ser ver in input 
stream&quot;</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="keywordflow">if</span> 
(listHeader[hll_constants::FAMILY_BYTE] != hll_constants::FAMILY_ID) {</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  
141</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Input stream is not an 
HLL sketch&quot;</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> </div>
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  
144</span>  <span class="keyword">const</span> uint8_t lgK = 
listHeader[hll_constants::LG_K_BYTE];</div>
-<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  
145</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> compact = 
((listHeader[hll_constants::FLAGS_BYTE] &amp; hll_constants::COMPACT_FLAG_MASK) 
? <span class="keyword">true</span> : false);</div>
-<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  
146</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> oooFlag = 
((listHeader[hll_constants::FLAGS_BYTE] &amp; 
hll_constants::OUT_OF_ORDER_FLAG_MASK) ? <span class="keyword">true</span> : 
false);</div>
-<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  
147</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> emptyFlag = 
((listHeader[hll_constants::FLAGS_BYTE] &amp; hll_constants::EMPTY_FLAG_MASK) ? 
<span class="keyword">true</span> : false);</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  
144</span>  hll_mode mode = 
HllSketchImpl&lt;A&gt;::extractCurMode(listHeader[hll_constants::MODE_BYTE]);</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  
145</span>  <span class="keywordflow">if</span> (mode != LIST) {</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  
146</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Calling list 
constructor with non-list mode data&quot;</span>);</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  
147</span>  }</div>
 <div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  
148</span> </div>
-<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  
149</span>  ClAlloc cla(allocator);</div>
-<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  
150</span>  CouponList&lt;A&gt;* sketch = <span class="keyword">new</span> 
(cla.allocate(1)) CouponList&lt;A&gt;(lgK, tgtHllType, mode, allocator);</div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  
151</span>  <span class="keyword">using </span>coupon_list_ptr = 
std::unique_ptr&lt;CouponList&lt;A&gt;, 
std::function&lt;void(HllSketchImpl&lt;A&gt;*)&gt;&gt;;</div>
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  
152</span>  coupon_list_ptr ptr(sketch, sketch-&gt;get_deleter());</div>
-<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  
153</span>  <span class="keyword">const</span> uint32_t couponCount = 
listHeader[hll_constants::LIST_COUNT_BYTE];</div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  
154</span>  sketch-&gt;couponCount_ = couponCount;</div>
-<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  
155</span>  sketch-&gt;putOutOfOrderFlag(oooFlag); <span class="comment">// 
should always be false for LIST</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="keywordflow">if</span> (!emptyFlag) {</div>
-<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  
158</span>    <span class="comment">// For stream processing, need to read 
entire number written to stream so read</span></div>
-<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  
159</span>    <span class="comment">// pointer ends up set 
correctly.</span></div>
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  
160</span>    <span class="comment">// If not compact, still need to read empty 
items even though in order.</span></div>
-<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  
161</span>    <span class="keyword">const</span> uint32_t numToRead = (compact 
? couponCount : <span class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(sketch-&gt;coupons_.size()));</div>
-<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  
162</span>    read(is, sketch-&gt;coupons_.data(), numToRead * <span 
class="keyword">sizeof</span>(uint32_t));</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  
149</span>  <span class="keyword">const</span> <a class="code hl_enumeration" 
href="namespacedatasketches.html#a76c1ad9235877691984d49415bb263e4">target_hll_type</a>
 tgtHllType = 
HllSketchImpl&lt;A&gt;::extractTgtHllType(listHeader[hll_constants::MODE_BYTE]);</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="keyword">const</span> uint8_t lgK = 
listHeader[hll_constants::LG_K_BYTE];</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  
152</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> compact = 
((listHeader[hll_constants::FLAGS_BYTE] &amp; hll_constants::COMPACT_FLAG_MASK) 
? <span class="keyword">true</span> : false);</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  
153</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> oooFlag = 
((listHeader[hll_constants::FLAGS_BYTE] &amp; 
hll_constants::OUT_OF_ORDER_FLAG_MASK) ? <span class="keyword">true</span> : 
false);</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  
154</span>  <span class="keyword">const</span> <span 
class="keywordtype">bool</span> emptyFlag = 
((listHeader[hll_constants::FLAGS_BYTE] &amp; hll_constants::EMPTY_FLAG_MASK) ? 
<span class="keyword">true</span> : false);</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  
155</span> </div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  
156</span>  <span class="keyword">const</span> uint32_t couponCount = 
listHeader[hll_constants::LIST_COUNT_BYTE];</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  
157</span>  <span class="comment">// Reject LIST counts at or above the fixed 
LIST capacity.</span></div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  
158</span>  <span class="keyword">const</span> uint32_t listCapacity = 1u 
&lt;&lt; hll_constants::LG_INIT_LIST_SIZE;</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  
159</span>  <span class="keywordflow">if</span> (couponCount &gt;= 
listCapacity) {</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  
160</span>    <span class="keywordflow">throw</span> 
std::invalid_argument(<span class="stringliteral">&quot;Attempt to deserialize 
invalid CouponList with couponCount &gt;= capacity. Found couponCount: 
&quot;</span></div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  
161</span>                                + std::to_string(couponCount)</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  
162</span>                                + <span class="stringliteral">&quot;, 
capacity: &quot;</span> + std::to_string(listCapacity));</div>
 <div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  
163</span>  }</div>
 <div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  
164</span> </div>
-<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  
165</span>  <span class="keywordflow">if</span> (!is.good()) { <span 
class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;error reading from std::istream&quot;</span>); } 
</div>
-<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  
166</span> </div>
-<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  
167</span>  <span class="keywordflow">return</span> ptr.release();</div>
-<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  
168</span>}</div>
-<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  
169</span> </div>
-<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  
170</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  
171</span><span class="keyword">auto</span> 
CouponList&lt;A&gt;::serialize(<span class="keywordtype">bool</span> compact, 
<span class="keywordtype">unsigned</span> header_size_bytes) <span 
class="keyword">const</span> -&gt; vector_bytes {</div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  
172</span>  <span class="keyword">const</span> <span 
class="keywordtype">size_t</span> sketchSizeBytes = (compact ? 
getCompactSerializationBytes() : getUpdatableSerializationBytes()) + 
header_size_bytes;</div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  
173</span>  vector_bytes byteArr(sketchSizeBytes, 0, getAllocator());</div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  
174</span>  uint8_t* bytes = byteArr.data() + header_size_bytes;</div>
-<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  
175</span> </div>
-<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  
176</span>  bytes[hll_constants::PREAMBLE_INTS_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(getPreInts());</div>
-<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  
177</span>  bytes[hll_constants::SER_VER_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(hll_constants::SER_VER);</div>
-<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  
178</span>  bytes[hll_constants::FAMILY_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(hll_constants::FAMILY_ID);</div>
-<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  
179</span>  bytes[hll_constants::LG_K_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(this-&gt;lgConfigK_);</div>
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  
180</span>  bytes[hll_constants::LG_ARR_BYTE] = 
count_trailing_zeros_in_u32(<span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size()));</div>
-<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  
181</span>  bytes[hll_constants::FLAGS_BYTE] = 
this-&gt;makeFlagsByte(compact);</div>
-<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  
182</span>  bytes[hll_constants::LIST_COUNT_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(this-&gt;mode_ == LIST ? couponCount_ : 0);</div>
-<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  
183</span>  bytes[hll_constants::MODE_BYTE] = this-&gt;makeModeByte();</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  
165</span>  ClAlloc cla(allocator);</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  
166</span>  CouponList&lt;A&gt;* sketch = <span class="keyword">new</span> 
(cla.allocate(1)) CouponList&lt;A&gt;(lgK, tgtHllType, mode, allocator);</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  
167</span>  <span class="keyword">using </span>coupon_list_ptr = 
std::unique_ptr&lt;CouponList&lt;A&gt;, 
std::function&lt;void(HllSketchImpl&lt;A&gt;*)&gt;&gt;;</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  
168</span>  coupon_list_ptr ptr(sketch, sketch-&gt;get_deleter());</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  
169</span>  sketch-&gt;couponCount_ = couponCount;</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  
170</span>  sketch-&gt;putOutOfOrderFlag(oooFlag); <span class="comment">// 
should always be false for LIST</span></div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  
171</span> </div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  
172</span>  <span class="keywordflow">if</span> (!emptyFlag) {</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  
173</span>    <span class="comment">// For stream processing, need to read 
entire number written to stream so read</span></div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  
174</span>    <span class="comment">// pointer ends up set 
correctly.</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  
175</span>    <span class="comment">// If not compact, still need to read empty 
items even though in order.</span></div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  
176</span>    <span class="keyword">const</span> uint32_t numToRead = (compact 
? couponCount : <span class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(sketch-&gt;coupons_.size()));</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  
177</span>    read(is, sketch-&gt;coupons_.data(), numToRead * <span 
class="keyword">sizeof</span>(uint32_t));</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  
178</span>  }</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  
179</span> </div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  
180</span>  <span class="keywordflow">if</span> (!is.good()) { <span 
class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;error reading from std::istream&quot;</span>); } 
</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  
181</span> </div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  
182</span>  <span class="keywordflow">return</span> ptr.release();</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  
183</span>}</div>
 <div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  
184</span> </div>
-<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  
185</span>  <span class="keywordflow">if</span> (this-&gt;mode_ == SET) {</div>
-<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  
186</span>    std::memcpy(bytes + hll_constants::HASH_SET_COUNT_INT, 
&amp;couponCount_, <span class="keyword">sizeof</span>(couponCount_));</div>
-<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  
187</span>  }</div>
-<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  
188</span> </div>
-<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  
189</span>  <span class="comment">// coupons</span></div>
-<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  
190</span>  <span class="comment">// isCompact() is always false for 
now</span></div>
-<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  
191</span>  <span class="keyword">const</span> <span 
class="keywordtype">int</span> sw = (isCompact() ? 2 : 0) | (compact ? 1 : 
0);</div>
-<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  
192</span>  <span class="keywordflow">switch</span> (sw) {</div>
-<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  
193</span>    <span class="keywordflow">case</span> 0: { <span 
class="comment">// src updatable, dst updatable</span></div>
-<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  
194</span>      std::memcpy(bytes + getMemDataStart(), coupons_.data(), 
coupons_.size() * <span class="keyword">sizeof</span>(uint32_t));</div>
-<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  
195</span>      <span class="keywordflow">break</span>;</div>
-<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  
196</span>    }</div>
-<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  
197</span>    <span class="keywordflow">case</span> 1: { <span 
class="comment">// src updatable, dst compact</span></div>
-<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  
198</span>      bytes += getMemDataStart(); <span class="comment">// reusing 
pointer for incremental writes</span></div>
-<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  
199</span>      <span class="keywordflow">for</span> (<span 
class="keyword">const</span> uint32_t coupon: *this) {</div>
-<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  
200</span>        std::memcpy(bytes, &amp;coupon, <span 
class="keyword">sizeof</span>(coupon));</div>
-<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  
201</span>        bytes += <span class="keyword">sizeof</span>(coupon);</div>
-<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  
202</span>      }</div>
-<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  
203</span>      <span class="keywordflow">break</span>;</div>
-<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  
204</span>    }</div>
-<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  
205</span> </div>
-<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  
206</span>    <span class="keywordflow">default</span>:</div>
-<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  
207</span>      <span class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;Impossible condition when 
serializing&quot;</span>);</div>
-<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  
208</span>  }</div>
-<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  
209</span> </div>
-<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  
210</span>  <span class="keywordflow">return</span> byteArr;</div>
-<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  
211</span>}</div>
-<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  
212</span> </div>
-<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  
213</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  
214</span><span class="keywordtype">void</span> 
CouponList&lt;A&gt;::serialize(std::ostream&amp; os, <span 
class="keyword">const</span> <span class="keywordtype">bool</span> 
compact)<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  
215</span>  <span class="comment">// header</span></div>
-<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  
216</span>  <span class="keyword">const</span> uint8_t preInts = 
getPreInts();</div>
-<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  
217</span>  write(os, preInts);</div>
-<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  
218</span>  <span class="keyword">const</span> uint8_t 
serialVersion(hll_constants::SER_VER);</div>
-<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  
219</span>  write(os, serialVersion);</div>
-<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  
220</span>  <span class="keyword">const</span> uint8_t 
familyId(hll_constants::FAMILY_ID);</div>
-<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  
221</span>  write(os, familyId);</div>
-<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  
222</span>  <span class="keyword">const</span> uint8_t lgKByte = 
this-&gt;lgConfigK_;</div>
-<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  
223</span>  write(os, lgKByte);</div>
-<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  
224</span>  <span class="keyword">const</span> uint8_t lgArrIntsByte = 
count_trailing_zeros_in_u32(<span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size()));</div>
-<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  
225</span>  write(os, lgArrIntsByte);</div>
-<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  
226</span>  <span class="keyword">const</span> uint8_t flagsByte = 
this-&gt;makeFlagsByte(compact);</div>
-<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  
227</span>  write(os, flagsByte);</div>
-<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  
228</span> </div>
-<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  
229</span>  <span class="keywordflow">if</span> (this-&gt;mode_ == LIST) {</div>
-<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  
230</span>    <span class="keyword">const</span> uint8_t listCount = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(couponCount_);</div>
-<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  
231</span>    write(os, listCount);</div>
-<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  
232</span>  } <span class="keywordflow">else</span> { <span class="comment">// 
mode == SET</span></div>
-<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  
233</span>      <span class="keyword">const</span> uint8_t unused = 0;</div>
-<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  
234</span>    write(os, unused);</div>
-<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  
235</span>  }</div>
-<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  
236</span> </div>
-<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  
237</span>  <span class="keyword">const</span> uint8_t modeByte = 
this-&gt;makeModeByte();</div>
-<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  
238</span>  write(os, modeByte);</div>
-<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  
239</span> </div>
-<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  
240</span>  <span class="keywordflow">if</span> (this-&gt;mode_ == SET) {</div>
-<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  
241</span>    <span class="comment">// writing as int, already stored as 
int</span></div>
-<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  
242</span>    write(os, couponCount_);</div>
-<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  
243</span>  }</div>
-<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  
244</span> </div>
-<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  
245</span>  <span class="comment">// coupons</span></div>
-<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  
246</span>  <span class="comment">// isCompact() is always false for 
now</span></div>
-<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  
247</span>  <span class="keyword">const</span> <span 
class="keywordtype">int</span> sw = (isCompact() ? 2 : 0) | (compact ? 1 : 
0);</div>
-<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  
248</span>  <span class="keywordflow">switch</span> (sw) {</div>
-<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  
249</span>    <span class="keywordflow">case</span> 0: { <span 
class="comment">// src updatable, dst updatable</span></div>
-<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  
250</span>      write(os, coupons_.data(), coupons_.size() * <span 
class="keyword">sizeof</span>(uint32_t));</div>
-<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  
251</span>      <span class="keywordflow">break</span>;</div>
-<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  
252</span>    }</div>
-<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  
253</span>    <span class="keywordflow">case</span> 1: { <span 
class="comment">// src updatable, dst compact</span></div>
-<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  
254</span>      <span class="keywordflow">for</span> (<span 
class="keyword">const</span> uint32_t coupon: *this) {</div>
-<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  
255</span>        write(os, coupon);</div>
-<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  
256</span>      }</div>
-<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  
257</span>      <span class="keywordflow">break</span>;</div>
-<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  
258</span>    }</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  
185</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  
186</span><span class="keyword">auto</span> 
CouponList&lt;A&gt;::serialize(<span class="keywordtype">bool</span> compact, 
<span class="keywordtype">unsigned</span> header_size_bytes) <span 
class="keyword">const</span> -&gt; vector_bytes {</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  
187</span>  <span class="keyword">const</span> <span 
class="keywordtype">size_t</span> sketchSizeBytes = (compact ? 
getCompactSerializationBytes() : getUpdatableSerializationBytes()) + 
header_size_bytes;</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  
188</span>  vector_bytes byteArr(sketchSizeBytes, 0, getAllocator());</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  
189</span>  uint8_t* bytes = byteArr.data() + header_size_bytes;</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  
190</span> </div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  
191</span>  bytes[hll_constants::PREAMBLE_INTS_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(getPreInts());</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  
192</span>  bytes[hll_constants::SER_VER_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(hll_constants::SER_VER);</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  
193</span>  bytes[hll_constants::FAMILY_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(hll_constants::FAMILY_ID);</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  
194</span>  bytes[hll_constants::LG_K_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(this-&gt;lgConfigK_);</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  
195</span>  bytes[hll_constants::LG_ARR_BYTE] = 
count_trailing_zeros_in_u32(<span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size()));</div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  
196</span>  bytes[hll_constants::FLAGS_BYTE] = 
this-&gt;makeFlagsByte(compact);</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  
197</span>  bytes[hll_constants::LIST_COUNT_BYTE] = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(this-&gt;mode_ == LIST ? couponCount_ : 0);</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  
198</span>  bytes[hll_constants::MODE_BYTE] = this-&gt;makeModeByte();</div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  
199</span> </div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  
200</span>  <span class="keywordflow">if</span> (this-&gt;mode_ == SET) {</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  
201</span>    std::memcpy(bytes + hll_constants::HASH_SET_COUNT_INT, 
&amp;couponCount_, <span class="keyword">sizeof</span>(couponCount_));</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  
202</span>  }</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  
203</span> </div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  
204</span>  <span class="comment">// coupons</span></div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  
205</span>  <span class="comment">// isCompact() is always false for 
now</span></div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  
206</span>  <span class="keyword">const</span> <span 
class="keywordtype">int</span> sw = (isCompact() ? 2 : 0) | (compact ? 1 : 
0);</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  
207</span>  <span class="keywordflow">switch</span> (sw) {</div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  
208</span>    <span class="keywordflow">case</span> 0: { <span 
class="comment">// src updatable, dst updatable</span></div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  
209</span>      std::memcpy(bytes + getMemDataStart(), coupons_.data(), 
coupons_.size() * <span class="keyword">sizeof</span>(uint32_t));</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  
210</span>      <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  
211</span>    }</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  
212</span>    <span class="keywordflow">case</span> 1: { <span 
class="comment">// src updatable, dst compact</span></div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  
213</span>      bytes += getMemDataStart(); <span class="comment">// reusing 
pointer for incremental writes</span></div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  
214</span>      <span class="keywordflow">for</span> (<span 
class="keyword">const</span> uint32_t coupon: *this) {</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  
215</span>        std::memcpy(bytes, &amp;coupon, <span 
class="keyword">sizeof</span>(coupon));</div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  
216</span>        bytes += <span class="keyword">sizeof</span>(coupon);</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  
217</span>      }</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  
218</span>      <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  
219</span>    }</div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  
220</span> </div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  
221</span>    <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  
222</span>      <span class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;Impossible condition when 
serializing&quot;</span>);</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  
223</span>  }</div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  
224</span> </div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  
225</span>  <span class="keywordflow">return</span> byteArr;</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  
226</span>}</div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  
227</span> </div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  
228</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  
229</span><span class="keywordtype">void</span> 
CouponList&lt;A&gt;::serialize(std::ostream&amp; os, <span 
class="keyword">const</span> <span class="keywordtype">bool</span> 
compact)<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  
230</span>  <span class="comment">// header</span></div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  
231</span>  <span class="keyword">const</span> uint8_t preInts = 
getPreInts();</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  
232</span>  write(os, preInts);</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  
233</span>  <span class="keyword">const</span> uint8_t 
serialVersion(hll_constants::SER_VER);</div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  
234</span>  write(os, serialVersion);</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  
235</span>  <span class="keyword">const</span> uint8_t 
familyId(hll_constants::FAMILY_ID);</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  
236</span>  write(os, familyId);</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  
237</span>  <span class="keyword">const</span> uint8_t lgKByte = 
this-&gt;lgConfigK_;</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  
238</span>  write(os, lgKByte);</div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  
239</span>  <span class="keyword">const</span> uint8_t lgArrIntsByte = 
count_trailing_zeros_in_u32(<span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size()));</div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  
240</span>  write(os, lgArrIntsByte);</div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  
241</span>  <span class="keyword">const</span> uint8_t flagsByte = 
this-&gt;makeFlagsByte(compact);</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  
242</span>  write(os, flagsByte);</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  
243</span> </div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  
244</span>  <span class="keywordflow">if</span> (this-&gt;mode_ == LIST) {</div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  
245</span>    <span class="keyword">const</span> uint8_t listCount = <span 
class="keyword">static_cast&lt;</span>uint8_t<span 
class="keyword">&gt;</span>(couponCount_);</div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  
246</span>    write(os, listCount);</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  
247</span>  } <span class="keywordflow">else</span> { <span class="comment">// 
mode == SET</span></div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  
248</span>      <span class="keyword">const</span> uint8_t unused = 0;</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  
249</span>    write(os, unused);</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  
250</span>  }</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  
251</span> </div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  
252</span>  <span class="keyword">const</span> uint8_t modeByte = 
this-&gt;makeModeByte();</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  
253</span>  write(os, modeByte);</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  
254</span> </div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  
255</span>  <span class="keywordflow">if</span> (this-&gt;mode_ == SET) {</div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  
256</span>    <span class="comment">// writing as int, already stored as 
int</span></div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  
257</span>    write(os, couponCount_);</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  
258</span>  }</div>
 <div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  
259</span> </div>
-<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  
260</span>    <span class="keywordflow">default</span>:</div>
-<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  
261</span>      <span class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;Impossible condition when 
serializing&quot;</span>);</div>
-<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  
262</span>  }</div>
-<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  
263</span>  </div>
-<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  
264</span>  <span class="keywordflow">return</span>;</div>
-<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  
265</span>}</div>
-<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  
266</span> </div>
-<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  
267</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  
268</span>HllSketchImpl&lt;A&gt;* CouponList&lt;A&gt;::couponUpdate(uint32_t 
coupon) {</div>
-<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  
269</span>  <span class="keywordflow">for</span> (<span 
class="keywordtype">size_t</span> i = 0; i &lt; coupons_.size(); ++i) { <span 
class="comment">// search for empty slot</span></div>
-<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  
270</span>    <span class="keyword">const</span> uint32_t couponAtIdx = 
coupons_[i];</div>
-<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  
271</span>    <span class="keywordflow">if</span> (couponAtIdx == 
hll_constants::EMPTY) {</div>
-<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  
272</span>      coupons_[i] = coupon; <span class="comment">// the actual 
update</span></div>
-<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  
273</span>      ++couponCount_;</div>
-<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  
274</span>      <span class="keywordflow">if</span> (couponCount_ == <span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size())) { <span class="comment">// array 
full</span></div>
-<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  
275</span>        <span class="keywordflow">if</span> (this-&gt;lgConfigK_ &lt; 
8) {</div>
-<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  
276</span>          <span class="keywordflow">return</span> 
promoteHeapListOrSetToHll(*<span class="keyword">this</span>);</div>
-<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  
277</span>        }</div>
-<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  
278</span>        <span class="keywordflow">return</span> 
promoteHeapListToSet(*<span class="keyword">this</span>);</div>
-<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  
279</span>      }</div>
-<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  
280</span>      <span class="keywordflow">return</span> <span 
class="keyword">this</span>;</div>
-<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  
281</span>    }</div>
-<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  
282</span>    <span class="comment">// cell not empty</span></div>
-<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  
283</span>    <span class="keywordflow">if</span> (couponAtIdx == coupon) 
{</div>
-<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  
284</span>      <span class="keywordflow">return</span> <span 
class="keyword">this</span>; <span class="comment">// duplicate</span></div>
-<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  
285</span>    }</div>
-<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  
286</span>    <span class="comment">// cell not empty and not a duplicate, 
continue</span></div>
-<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  
287</span>  }</div>
-<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  
288</span>  <span class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;Array invalid: no empties and no 
duplicates&quot;</span>);</div>
-<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  
289</span>}</div>
-<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  
290</span> </div>
-<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  
291</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  
292</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getCompositeEstimate()<span class="keyword"> const 
</span>{ <span class="keywordflow">return</span> getEstimate(); }</div>
-<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  
293</span> </div>
-<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  
294</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  
295</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getEstimate()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  
296</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> est = 
CubicInterpolation&lt;A&gt;::usingXAndYTables(couponCount_);</div>
-<div class="line"><a id="l00297" name="l00297"></a><span class="lineno">  
297</span>  <span class="keywordflow">return</span> fmax(est, 
couponCount_);</div>
-<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  
298</span>}</div>
-<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  
299</span> </div>
-<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  
300</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  
301</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getLowerBound(uint8_t numStdDev)<span class="keyword"> 
const </span>{</div>
-<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  
302</span>  HllUtil&lt;A&gt;::checkNumStdDev(numStdDev);</div>
-<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  
303</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> est = 
CubicInterpolation&lt;A&gt;::usingXAndYTables(couponCount_);</div>
-<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  
304</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> tmp = est / (1.0 + (numStdDev * 
hll_constants::COUPON_RSE));</div>
-<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  
305</span>  <span class="keywordflow">return</span> fmax(tmp, 
couponCount_);</div>
-<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  
306</span>}</div>
-<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  
307</span> </div>
-<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  
308</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  
309</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getUpperBound(uint8_t numStdDev)<span class="keyword"> 
const </span>{</div>
-<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  
310</span>  HllUtil&lt;A&gt;::checkNumStdDev(numStdDev);</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  
260</span>  <span class="comment">// coupons</span></div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  
261</span>  <span class="comment">// isCompact() is always false for 
now</span></div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  
262</span>  <span class="keyword">const</span> <span 
class="keywordtype">int</span> sw = (isCompact() ? 2 : 0) | (compact ? 1 : 
0);</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  
263</span>  <span class="keywordflow">switch</span> (sw) {</div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  
264</span>    <span class="keywordflow">case</span> 0: { <span 
class="comment">// src updatable, dst updatable</span></div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  
265</span>      write(os, coupons_.data(), coupons_.size() * <span 
class="keyword">sizeof</span>(uint32_t));</div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  
266</span>      <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  
267</span>    }</div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  
268</span>    <span class="keywordflow">case</span> 1: { <span 
class="comment">// src updatable, dst compact</span></div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  
269</span>      <span class="keywordflow">for</span> (<span 
class="keyword">const</span> uint32_t coupon: *this) {</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  
270</span>        write(os, coupon);</div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  
271</span>      }</div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  
272</span>      <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  
273</span>    }</div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  
274</span> </div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  
275</span>    <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  
276</span>      <span class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;Impossible condition when 
serializing&quot;</span>);</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  
277</span>  }</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  
278</span>  </div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  
279</span>  <span class="keywordflow">return</span>;</div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  
280</span>}</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  
281</span> </div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  
282</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  
283</span>HllSketchImpl&lt;A&gt;* CouponList&lt;A&gt;::couponUpdate(uint32_t 
coupon) {</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  
284</span>  <span class="keywordflow">for</span> (<span 
class="keywordtype">size_t</span> i = 0; i &lt; coupons_.size(); ++i) { <span 
class="comment">// search for empty slot</span></div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  
285</span>    <span class="keyword">const</span> uint32_t couponAtIdx = 
coupons_[i];</div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  
286</span>    <span class="keywordflow">if</span> (couponAtIdx == 
hll_constants::EMPTY) {</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  
287</span>      coupons_[i] = coupon; <span class="comment">// the actual 
update</span></div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  
288</span>      ++couponCount_;</div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  
289</span>      <span class="keywordflow">if</span> (couponCount_ == <span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size())) { <span class="comment">// array 
full</span></div>
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  
290</span>        <span class="keywordflow">if</span> (this-&gt;lgConfigK_ &lt; 
8) {</div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  
291</span>          <span class="keywordflow">return</span> 
promoteHeapListOrSetToHll(*<span class="keyword">this</span>);</div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  
292</span>        }</div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  
293</span>        <span class="keywordflow">return</span> 
promoteHeapListToSet(*<span class="keyword">this</span>);</div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  
294</span>      }</div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  
295</span>      <span class="keywordflow">return</span> <span 
class="keyword">this</span>;</div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  
296</span>    }</div>
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno">  
297</span>    <span class="comment">// cell not empty</span></div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  
298</span>    <span class="keywordflow">if</span> (couponAtIdx == coupon) 
{</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  
299</span>      <span class="keywordflow">return</span> <span 
class="keyword">this</span>; <span class="comment">// duplicate</span></div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  
300</span>    }</div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  
301</span>    <span class="comment">// cell not empty and not a duplicate, 
continue</span></div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  
302</span>  }</div>
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  
303</span>  <span class="keywordflow">throw</span> std::runtime_error(<span 
class="stringliteral">&quot;Array invalid: no empties and no 
duplicates&quot;</span>);</div>
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  
304</span>}</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  
305</span> </div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  
306</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  
307</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getCompositeEstimate()<span class="keyword"> const 
</span>{ <span class="keywordflow">return</span> getEstimate(); }</div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  
308</span> </div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  
309</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  
310</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getEstimate()<span class="keyword"> const </span>{</div>
 <div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  
311</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> est = 
CubicInterpolation&lt;A&gt;::usingXAndYTables(couponCount_);</div>
-<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  
312</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> tmp = est / (1.0 - (numStdDev * 
hll_constants::COUPON_RSE));</div>
-<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  
313</span>  <span class="keywordflow">return</span> fmax(tmp, 
couponCount_);</div>
-<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  
314</span>}</div>
-<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  
315</span> </div>
-<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  
316</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  
317</span><span class="keywordtype">bool</span> 
CouponList&lt;A&gt;::isEmpty()<span class="keyword"> const </span>{ <span 
class="keywordflow">return</span> getCouponCount() == 0; }</div>
-<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  
318</span> </div>
-<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  
319</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  
320</span>uint32_t CouponList&lt;A&gt;::getUpdatableSerializationBytes()<span 
class="keyword"> const </span>{</div>
-<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  
321</span>  <span class="keywordflow">return</span> getMemDataStart() + <span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size()) * <span 
class="keyword">sizeof</span>(uint32_t);</div>
-<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  
322</span>}</div>
-<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  
323</span> </div>
-<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  
324</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  
325</span>uint32_t CouponList&lt;A&gt;::getCouponCount()<span class="keyword"> 
const </span>{</div>
-<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  
326</span>  <span class="keywordflow">return</span> couponCount_;</div>
-<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  
327</span>}</div>
-<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  
328</span> </div>
-<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  
329</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  
330</span>uint32_t CouponList&lt;A&gt;::getCompactSerializationBytes()<span 
class="keyword"> const </span>{</div>
-<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  
331</span>  <span class="keywordflow">return</span> getMemDataStart() + 
(couponCount_ &lt;&lt; 2);</div>
-<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  
332</span>}</div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  
312</span>  <span class="keywordflow">return</span> fmax(est, 
couponCount_);</div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  
313</span>}</div>
+<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  
314</span> </div>
+<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  
315</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  
316</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getLowerBound(uint8_t numStdDev)<span class="keyword"> 
const </span>{</div>
+<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  
317</span>  HllUtil&lt;A&gt;::checkNumStdDev(numStdDev);</div>
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  
318</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> est = 
CubicInterpolation&lt;A&gt;::usingXAndYTables(couponCount_);</div>
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  
319</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> tmp = est / (1.0 + (numStdDev * 
hll_constants::COUPON_RSE));</div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  
320</span>  <span class="keywordflow">return</span> fmax(tmp, 
couponCount_);</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  
321</span>}</div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  
322</span> </div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  
323</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  
324</span><span class="keywordtype">double</span> 
CouponList&lt;A&gt;::getUpperBound(uint8_t numStdDev)<span class="keyword"> 
const </span>{</div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  
325</span>  HllUtil&lt;A&gt;::checkNumStdDev(numStdDev);</div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  
326</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> est = 
CubicInterpolation&lt;A&gt;::usingXAndYTables(couponCount_);</div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  
327</span>  <span class="keyword">const</span> <span 
class="keywordtype">double</span> tmp = est / (1.0 - (numStdDev * 
hll_constants::COUPON_RSE));</div>
+<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  
328</span>  <span class="keywordflow">return</span> fmax(tmp, 
couponCount_);</div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  
329</span>}</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  
330</span> </div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  
331</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  
332</span><span class="keywordtype">bool</span> 
CouponList&lt;A&gt;::isEmpty()<span class="keyword"> const </span>{ <span 
class="keywordflow">return</span> getCouponCount() == 0; }</div>
 <div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  
333</span> </div>
 <div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  
334</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  
335</span>uint32_t CouponList&lt;A&gt;::getMemDataStart()<span class="keyword"> 
const </span>{</div>
-<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  
336</span>  <span class="keywordflow">return</span> 
hll_constants::LIST_INT_ARR_START;</div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  
335</span>uint32_t CouponList&lt;A&gt;::getUpdatableSerializationBytes()<span 
class="keyword"> const </span>{</div>
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  
336</span>  <span class="keywordflow">return</span> getMemDataStart() + <span 
class="keyword">static_cast&lt;</span>uint32_t<span 
class="keyword">&gt;</span>(coupons_.size()) * <span 
class="keyword">sizeof</span>(uint32_t);</div>
 <div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  
337</span>}</div>
 <div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  
338</span> </div>
 <div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  
339</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  
340</span>uint8_t CouponList&lt;A&gt;::getPreInts()<span class="keyword"> const 
</span>{</div>
-<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  
341</span>  <span class="keywordflow">return</span> 
hll_constants::LIST_PREINTS;</div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  
340</span>uint32_t CouponList&lt;A&gt;::getCouponCount()<span class="keyword"> 
const </span>{</div>
+<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  
341</span>  <span class="keywordflow">return</span> couponCount_;</div>
 <div class="line"><a id="l00342" name="l00342"></a><span class="lineno">  
342</span>}</div>
 <div class="line"><a id="l00343" name="l00343"></a><span class="lineno">  
343</span> </div>
 <div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  
344</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  
345</span><span class="keywordtype">bool</span> 
CouponList&lt;A&gt;::isCompact()<span class="keyword"> const </span>{ <span 
class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
-<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  
346</span> </div>
-<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  
347</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  
348</span><span class="keywordtype">bool</span> 
CouponList&lt;A&gt;::isOutOfOrderFlag()<span class="keyword"> const </span>{ 
<span class="keywordflow">return</span> oooFlag_; }</div>
-<div class="line"><a id="l00349" name="l00349"></a><span class="lineno">  
349</span> </div>
-<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  
350</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  
351</span><span class="keywordtype">void</span> 
CouponList&lt;A&gt;::putOutOfOrderFlag(<span class="keywordtype">bool</span> 
oooFlag) {</div>
-<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  
352</span>  oooFlag_ = oooFlag;</div>
-<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  
353</span>}</div>
-<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  
354</span> </div>
-<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  
355</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  
356</span>A CouponList&lt;A&gt;::getAllocator()<span class="keyword"> const 
</span>{</div>
-<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  
357</span>  <span class="keywordflow">return</span> 
coupons_.get_allocator();</div>
-<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  
358</span>}</div>
-<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  
359</span> </div>
-<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  
360</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  
361</span>HllSketchImpl&lt;A&gt;* 
CouponList&lt;A&gt;::promoteHeapListToSet(CouponList&amp; list) {</div>
-<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  
362</span>  <span class="keywordflow">return</span> 
HllSketchImplFactory&lt;A&gt;::promoteListToSet(list);</div>
-<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  
363</span>}</div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  
345</span>uint32_t CouponList&lt;A&gt;::getCompactSerializationBytes()<span 
class="keyword"> const </span>{</div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  
346</span>  <span class="keywordflow">return</span> getMemDataStart() + 
(couponCount_ &lt;&lt; 2);</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  
347</span>}</div>
+<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  
348</span> </div>
+<div class="line"><a id="l00349" name="l00349"></a><span class="lineno">  
349</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  
350</span>uint32_t CouponList&lt;A&gt;::getMemDataStart()<span class="keyword"> 
const </span>{</div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  
351</span>  <span class="keywordflow">return</span> 
hll_constants::LIST_INT_ARR_START;</div>
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  
352</span>}</div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  
353</span> </div>
+<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  
354</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  
355</span>uint8_t CouponList&lt;A&gt;::getPreInts()<span class="keyword"> const 
</span>{</div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  
356</span>  <span class="keywordflow">return</span> 
hll_constants::LIST_PREINTS;</div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  
357</span>}</div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  
358</span> </div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  
359</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  
360</span><span class="keywordtype">bool</span> 
CouponList&lt;A&gt;::isCompact()<span class="keyword"> const </span>{ <span 
class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  
361</span> </div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  
362</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  
363</span><span class="keywordtype">bool</span> 
CouponList&lt;A&gt;::isOutOfOrderFlag()<span class="keyword"> const </span>{ 
<span class="keywordflow">return</span> oooFlag_; }</div>
 <div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  
364</span> </div>
 <div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  
365</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  
366</span>HllSketchImpl&lt;A&gt;* 
CouponList&lt;A&gt;::promoteHeapListOrSetToHll(CouponList&amp; src) {</div>
-<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  
367</span>  <span class="keywordflow">return</span> 
HllSketchImplFactory&lt;A&gt;::promoteListOrSetToHll(src);</div>
+<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  
366</span><span class="keywordtype">void</span> 
CouponList&lt;A&gt;::putOutOfOrderFlag(<span class="keywordtype">bool</span> 
oooFlag) {</div>
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  
367</span>  oooFlag_ = oooFlag;</div>
 <div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  
368</span>}</div>
 <div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  
369</span> </div>
 <div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  
370</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  
371</span>coupon_iterator&lt;A&gt; CouponList&lt;A&gt;::begin(<span 
class="keywordtype">bool</span> all)<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  
372</span>  <span class="keywordflow">return</span> 
coupon_iterator&lt;A&gt;(coupons_.data(), coupons_.size(), 0, all);</div>
+<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  
371</span>A CouponList&lt;A&gt;::getAllocator()<span class="keyword"> const 
</span>{</div>
+<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  
372</span>  <span class="keywordflow">return</span> 
coupons_.get_allocator();</div>
 <div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  
373</span>}</div>
 <div class="line"><a id="l00374" name="l00374"></a><span class="lineno">  
374</span> </div>
 <div class="line"><a id="l00375" name="l00375"></a><span class="lineno">  
375</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
-<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  
376</span>coupon_iterator&lt;A&gt; CouponList&lt;A&gt;::end()<span 
class="keyword"> const </span>{</div>
-<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  
377</span>  <span class="keywordflow">return</span> 
coupon_iterator&lt;A&gt;(coupons_.data(), coupons_.size(), coupons_.size(), 
<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  
376</span>HllSketchImpl&lt;A&gt;* 
CouponList&lt;A&gt;::promoteHeapListToSet(CouponList&amp; list) {</div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  
377</span>  <span class="keywordflow">return</span> 
HllSketchImplFactory&lt;A&gt;::promoteListToSet(list);</div>
 <div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  
378</span>}</div>
 <div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  
379</span> </div>
-<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  
380</span>}</div>
-<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  
381</span> </div>
-<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  
382</span><span class="preprocessor">#endif </span><span class="comment">// 
_COUPONLIST_INTERNAL_HPP_</span></div>
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  
380</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  
381</span>HllSketchImpl&lt;A&gt;* 
CouponList&lt;A&gt;::promoteHeapListOrSetToHll(CouponList&amp; src) {</div>
+<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  
382</span>  <span class="keywordflow">return</span> 
HllSketchImplFactory&lt;A&gt;::promoteListOrSetToHll(src);</div>
+<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  
383</span>}</div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  
384</span> </div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  
385</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  
386</span>coupon_iterator&lt;A&gt; CouponList&lt;A&gt;::begin(<span 
class="keywordtype">bool</span> all)<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  
387</span>  <span class="keywordflow">return</span> 
coupon_iterator&lt;A&gt;(coupons_.data(), coupons_.size(), 0, all);</div>
+<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  
388</span>}</div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  
389</span> </div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  
390</span><span class="keyword">template</span>&lt;<span 
class="keyword">typename</span> A&gt;</div>
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  
391</span>coupon_iterator&lt;A&gt; CouponList&lt;A&gt;::end()<span 
class="keyword"> const </span>{</div>
+<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  
392</span>  <span class="keywordflow">return</span> 
coupon_iterator&lt;A&gt;(coupons_.data(), coupons_.size(), coupons_.size(), 
<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  
393</span>}</div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  
394</span> </div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  
395</span>}</div>
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  
396</span> </div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  
397</span><span class="preprocessor">#endif </span><span class="comment">// 
_COUPONLIST_INTERNAL_HPP_</span></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 class="ttc" 
id="anamespacedatasketches_html_a76c1ad9235877691984d49415bb263e4"><div 
class="ttname"><a 
href="namespacedatasketches.html#a76c1ad9235877691984d49415bb263e4">datasketches::target_hll_type</a></div><div
 class="ttdeci">target_hll_type</div><div class="ttdoc">Specifies the target 
type of HLL sketch to be created.</div><div class="ttdef"><b>Definition</b> 
hll.hpp:72</div></div>
 </div><!-- fragment --></div><!-- contents -->


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to