Skip to content

Commit 8fe8290

Browse files
committed
deploy: 7548810
1 parent aa24841 commit 8fe8290

File tree

1 file changed

+48
-47
lines changed

1 file changed

+48
-47
lines changed

docs/master/count__min__impl_8hpp_source.html

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> W, <span class="keyword">typename</span> A&gt;</div>
167167
<div class="foldopen" id="foldopen00076" data-start="{" data-end="}">
168168
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="classdatasketches_1_1count__min__sketch.html#a5356c92bb629951dcb748e51677a3886"> 76</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="classdatasketches_1_1count__min__sketch.html#a5356c92bb629951dcb748e51677a3886">count_min_sketch&lt;W,A&gt;::get_relative_error</a>()<span class="keyword"> const </span>{</div>
169-
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> exp(1.0) / double(_num_buckets);</div>
169+
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> exp(1.0) / <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(_num_buckets);</div>
170170
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>}</div>
171171
</div>
172172
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
@@ -583,53 +583,54 @@
583583
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="comment">// count the number of used entries in the sketch</span></div>
584584
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> uint64_t num_nonzero = 0;</div>
585585
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> entry: _sketch_array) {</div>
586-
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keywordflow">if</span> (entry != <span class="keyword">static_cast&lt;</span>W<span class="keyword">&gt;</span>(0.0))</div>
586+
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keywordflow">if</span> (entry != <span class="keyword">static_cast&lt;</span>W<span class="keyword">&gt;</span>(0.0)){</div>
587587
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> ++num_nonzero;</div>
588-
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> }</div>
589-
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
590-
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="comment">// Using a temporary stream for implementation here does not comply with AllocatorAwareContainer requirements.</span></div>
591-
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="comment">// The stream does not support passing an allocator instance, and alternatives are complicated.</span></div>
592-
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> std::ostringstream os;</div>
593-
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> os &lt;&lt; <span class="stringliteral">&quot;### Count Min sketch summary:&quot;</span> &lt;&lt; std::endl;</div>
594-
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> os &lt;&lt; <span class="stringliteral">&quot; num hashes : &quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(_num_hashes) &lt;&lt; std::endl;</div>
595-
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> os &lt;&lt; <span class="stringliteral">&quot; num buckets : &quot;</span> &lt;&lt; _num_buckets &lt;&lt; std::endl;</div>
596-
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> os &lt;&lt; <span class="stringliteral">&quot; capacity bins : &quot;</span> &lt;&lt; _sketch_array.size() &lt;&lt; std::endl;</div>
597-
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> os &lt;&lt; <span class="stringliteral">&quot; filled bins : &quot;</span> &lt;&lt; num_nonzero &lt;&lt; std::endl;</div>
598-
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> os &lt;&lt; <span class="stringliteral">&quot; pct filled : &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (num_nonzero * 100.0) / _sketch_array.size() &lt;&lt; <span class="stringliteral">&quot;%&quot;</span> &lt;&lt; std::endl;</div>
599-
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> os &lt;&lt; <span class="stringliteral">&quot;### End sketch summary&quot;</span> &lt;&lt; std::endl;</div>
600-
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
601-
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="keywordflow">return</span> string&lt;A&gt;(os.str().c_str(), _allocator);</div>
602-
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span>}</div>
603-
</div>
604-
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> </div>
605-
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> W, <span class="keyword">typename</span> A&gt;</div>
606-
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="keywordtype">void</span> <a class="code hl_class" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch&lt;W,A&gt;::check_header_validity</a>(uint8_t preamble_longs, uint8_t serial_version, uint8_t family_id, uint8_t flags_byte) {</div>
607-
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> empty = (flags_byte &amp; (1 &lt;&lt; flags::IS_EMPTY)) &gt; 0;</div>
608-
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> </div>
609-
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keyword">const</span> uint8_t sw = (empty ? 1 : 0) + (2 * serial_version) + (4 * family_id) + (32 * (preamble_longs &amp; 0x3F));</div>
610-
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keywordtype">bool</span> valid = <span class="keyword">true</span>;</div>
611-
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> </div>
612-
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keywordflow">switch</span> (sw) { <span class="comment">// exhaustive list and description of all valid cases</span></div>
613-
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">case</span> 138 : <span class="keywordflow">break</span>; <span class="comment">// !empty, ser_ver==1, family==18, preLongs=2;</span></div>
614-
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <span class="keywordflow">case</span> 139 : <span class="keywordflow">break</span>; <span class="comment">// empty, ser_ver==1, family==18, preLongs=2;</span></div>
615-
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="comment">//case 170 : break; // !empty, ser_ver==1, family==18, preLongs=3;</span></div>
616-
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> default : <span class="comment">// all other case values are invalid</span></div>
617-
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> valid = <span class="keyword">false</span>;</div>
618-
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> }</div>
619-
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> </div>
620-
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keywordflow">if</span> (!valid) {</div>
621-
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> std::ostringstream os;</div>
622-
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> os &lt;&lt; <span class="stringliteral">&quot;Possible sketch corruption. Inconsistent state: &quot;</span></div>
623-
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> &lt;&lt; <span class="stringliteral">&quot;preamble_longs = &quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(preamble_longs)</div>
624-
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> &lt;&lt; <span class="stringliteral">&quot;, empty = &quot;</span> &lt;&lt; (empty ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>)</div>
625-
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> &lt;&lt; <span class="stringliteral">&quot;, serialization_version = &quot;</span> &lt;&lt; static_cast&lt;uint32_t&gt;(serial_version);</div>
626-
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="keywordflow">throw</span> std::invalid_argument(os.str());</div>
627-
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> }</div>
628-
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span>}</div>
629-
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> </div>
630-
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span>} <span class="comment">/* namespace datasketches */</span></div>
631-
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> </div>
632-
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span><span class="preprocessor">#endif</span></div>
588+
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> }</div>
589+
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> }</div>
590+
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> </div>
591+
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="comment">// Using a temporary stream for implementation here does not comply with AllocatorAwareContainer requirements.</span></div>
592+
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="comment">// The stream does not support passing an allocator instance, and alternatives are complicated.</span></div>
593+
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> std::ostringstream os;</div>
594+
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> os &lt;&lt; <span class="stringliteral">&quot;### Count Min sketch summary:&quot;</span> &lt;&lt; std::endl;</div>
595+
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> os &lt;&lt; <span class="stringliteral">&quot; num hashes : &quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(_num_hashes) &lt;&lt; std::endl;</div>
596+
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> os &lt;&lt; <span class="stringliteral">&quot; num buckets : &quot;</span> &lt;&lt; _num_buckets &lt;&lt; std::endl;</div>
597+
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> os &lt;&lt; <span class="stringliteral">&quot; capacity bins : &quot;</span> &lt;&lt; _sketch_array.size() &lt;&lt; std::endl;</div>
598+
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> os &lt;&lt; <span class="stringliteral">&quot; filled bins : &quot;</span> &lt;&lt; num_nonzero &lt;&lt; std::endl;</div>
599+
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> os &lt;&lt; <span class="stringliteral">&quot; pct filled : &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (num_nonzero * 100.0) / _sketch_array.size() &lt;&lt; <span class="stringliteral">&quot;%&quot;</span> &lt;&lt; std::endl;</div>
600+
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> os &lt;&lt; <span class="stringliteral">&quot;### End sketch summary&quot;</span> &lt;&lt; std::endl;</div>
601+
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
602+
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keywordflow">return</span> string&lt;A&gt;(os.str().c_str(), _allocator);</div>
603+
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span>}</div>
604+
</div>
605+
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> </div>
606+
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> W, <span class="keyword">typename</span> A&gt;</div>
607+
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span><span class="keywordtype">void</span> <a class="code hl_class" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch&lt;W,A&gt;::check_header_validity</a>(uint8_t preamble_longs, uint8_t serial_version, uint8_t family_id, uint8_t flags_byte) {</div>
608+
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> empty = (flags_byte &amp; (1 &lt;&lt; flags::IS_EMPTY)) &gt; 0;</div>
609+
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> </div>
610+
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keyword">const</span> uint8_t sw = (empty ? 1 : 0) + (2 * serial_version) + (4 * family_id) + (32 * (preamble_longs &amp; 0x3F));</div>
611+
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="keywordtype">bool</span> valid = <span class="keyword">true</span>;</div>
612+
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> </div>
613+
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">switch</span> (sw) { <span class="comment">// exhaustive list and description of all valid cases</span></div>
614+
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <span class="keywordflow">case</span> 138 : <span class="keywordflow">break</span>; <span class="comment">// !empty, ser_ver==1, family==18, preLongs=2;</span></div>
615+
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keywordflow">case</span> 139 : <span class="keywordflow">break</span>; <span class="comment">// empty, ser_ver==1, family==18, preLongs=2;</span></div>
616+
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="comment">//case 170 : break; // !empty, ser_ver==1, family==18, preLongs=3;</span></div>
617+
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> default : <span class="comment">// all other case values are invalid</span></div>
618+
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> valid = <span class="keyword">false</span>;</div>
619+
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> }</div>
620+
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> </div>
621+
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> <span class="keywordflow">if</span> (!valid) {</div>
622+
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> std::ostringstream os;</div>
623+
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> os &lt;&lt; <span class="stringliteral">&quot;Possible sketch corruption. Inconsistent state: &quot;</span></div>
624+
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> &lt;&lt; <span class="stringliteral">&quot;preamble_longs = &quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(preamble_longs)</div>
625+
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> &lt;&lt; <span class="stringliteral">&quot;, empty = &quot;</span> &lt;&lt; (empty ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>)</div>
626+
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> &lt;&lt; <span class="stringliteral">&quot;, serialization_version = &quot;</span> &lt;&lt; static_cast&lt;uint32_t&gt;(serial_version);</div>
627+
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> <span class="keywordflow">throw</span> std::invalid_argument(os.str());</div>
628+
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> }</div>
629+
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span>}</div>
630+
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> </div>
631+
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span>} <span class="comment">/* namespace datasketches */</span></div>
632+
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> </div>
633+
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="preprocessor">#endif</span></div>
633634
<div class="ttc" id="aclassdatasketches_1_1count__min__sketch_html"><div class="ttname"><a href="classdatasketches_1_1count__min__sketch.html">datasketches::count_min_sketch</a></div><div class="ttdoc">C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan.</div><div class="ttdef"><b>Definition</b> count_min.hpp:37</div></div>
634635
<div class="ttc" id="aclassdatasketches_1_1count__min__sketch_html_a0a9f344e0399b775f82358b8807727af"><div class="ttname"><a href="classdatasketches_1_1count__min__sketch.html#a0a9f344e0399b775f82358b8807727af">datasketches::count_min_sketch::deserialize</a></div><div class="ttdeci">static count_min_sketch deserialize(std::istream &amp;is, uint64_t seed=DEFAULT_SEED, const Allocator &amp;allocator=Allocator())</div><div class="ttdoc">This method deserializes a sketch from a given stream.</div></div>
635636
<div class="ttc" id="aclassdatasketches_1_1count__min__sketch_html_a1bcdd98ee6e6eb9b501b8dc5de5e8924"><div class="ttname"><a href="classdatasketches_1_1count__min__sketch.html#a1bcdd98ee6e6eb9b501b8dc5de5e8924">datasketches::count_min_sketch::serialize</a></div><div class="ttdeci">void serialize(std::ostream &amp;os) const</div><div class="ttdoc">This method serializes the sketch into a given stream in a binary form.</div><div class="ttdef"><b>Definition</b> count_min_impl.hpp:270</div></div>

0 commit comments

Comments
 (0)