mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-21 11:35:53 +00:00
deploy: 3574956e5e
This commit is contained in:
@@ -327,190 +327,178 @@ $(function() {
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  [&](<a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a> <span class="keyword">const</span>& hh) { s.<a class="code" href="classripple_1_1Serializer.html#a96daec54ca0c8ec7f6e7e683e9abbe0e">addBitString</a>(hh.<a class="code" href="classripple_1_1SHAMapHash.html#a8f95b5bc14b7085d368f56aeaa17ef4f">as_uint256</a>()); });</div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> }</div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  </div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a13fcdfee8199a8e54429edf6b9085ae0"> 260</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a13fcdfee8199a8e54429edf6b9085ae0">SHAMapInnerNode::isEmpty</a>()<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#aa91785cf9d4979e8dd4dd9c183ad9c5e"> 260</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#aa91785cf9d4979e8dd4dd9c183ad9c5e">SHAMapInnerNode::getString</a>(<span class="keyword">const</span> <a class="code" href="classripple_1_1SHAMapNodeID.html">SHAMapNodeID</a>& <span class="keywordtype">id</span>)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> == 0;</div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> }</div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">int</span></div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276"> 266</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">SHAMapInnerNode::getBranchCount</a>()<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> popcnt16(<a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a>);</div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> }</div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  </div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#aa91785cf9d4979e8dd4dd9c183ad9c5e"> 272</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#aa91785cf9d4979e8dd4dd9c183ad9c5e">SHAMapInnerNode::getString</a>(<span class="keyword">const</span> <a class="code" href="classripple_1_1SHAMapNodeID.html">SHAMapNodeID</a>& <span class="keywordtype">id</span>)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> ret = <a class="code" href="classripple_1_1SHAMapTreeNode.html#a2dbee3cfa72319c01b649f4c255a5a9d">SHAMapTreeNode::getString</a>(<span class="keywordtype">id</span>);</div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">auto</span> hashes = <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a5beba186305ba9a93219feecd43a71d8">getHashes</a>();</div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#a5c356c106a60a7f75bff902bd04cb505">iterNonEmptyChildIndexes</a>([&](<span class="keyword">auto</span> branchNum, <span class="keyword">auto</span> indexNum) {</div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  ret += <span class="stringliteral">"\nb"</span>;</div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  ret += <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a>(branchNum);</div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  ret += <span class="stringliteral">" = "</span>;</div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  ret += <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(hashes[indexNum]);</div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  });</div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> ret;</div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="comment">// We are modifying an inner node</span></div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32"> 287</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32">SHAMapInnerNode::setChild</a>(<span class="keywordtype">int</span> m, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a> child)</div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  assert((m >= 0) && (m < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>));</div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  assert(<a class="code" href="classripple_1_1SHAMapTreeNode.html#a7f27d867484104446867c0f50adc5ffb">cowid_</a> != 0);</div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  assert(child.get() != <span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  </div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keyword">auto</span> <span class="keyword">const</span> dstIsBranch = [&] {</div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (child)</div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> | (1 << m);</div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> & ~(1 << m);</div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }();</div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  </div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">auto</span> <span class="keyword">const</span> dstToAllocate = popcnt16(dstIsBranch);</div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// change hashesAndChildren to remove the element, or make room for the</span></div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">// added element, if necessary</span></div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a> = <a class="code" href="classripple_1_1TaggedPointer.html">TaggedPointer</a>(</div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  std::move(<a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>), <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a>, dstIsBranch, dstToAllocate);</div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> ret = <a class="code" href="classripple_1_1SHAMapTreeNode.html#a2dbee3cfa72319c01b649f4c255a5a9d">SHAMapTreeNode::getString</a>(<span class="keywordtype">id</span>);</div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">auto</span> hashes = <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a5beba186305ba9a93219feecd43a71d8">getHashes</a>();</div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#a5c356c106a60a7f75bff902bd04cb505">iterNonEmptyChildIndexes</a>([&](<span class="keyword">auto</span> branchNum, <span class="keyword">auto</span> indexNum) {</div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  ret += <span class="stringliteral">"\nb"</span>;</div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  ret += <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a>(branchNum);</div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  ret += <span class="stringliteral">" = "</span>;</div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  ret += <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(hashes[indexNum]);</div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  });</div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> ret;</div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> }</div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="comment">// We are modifying an inner node</span></div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32"> 275</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32">SHAMapInnerNode::setChild</a>(<span class="keywordtype">int</span> m, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a> child)</div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> {</div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  assert((m >= 0) && (m < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>));</div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  assert(<a class="code" href="classripple_1_1SHAMapTreeNode.html#a7f27d867484104446867c0f50adc5ffb">cowid_</a> != 0);</div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  assert(child.get() != <span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  </div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">auto</span> <span class="keyword">const</span> dstIsBranch = [&] {</div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span> (child)</div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> | (1u << m);</div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> & ~(1u << m);</div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }();</div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  </div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">auto</span> <span class="keyword">const</span> dstToAllocate = <a class="code" href="namespaceripple.html#af313083334c9a7fedf2bc3142b4b4ccd">popcnt16</a>(dstIsBranch);</div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// change hashesAndChildren to remove the element, or make room for the</span></div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// added element, if necessary</span></div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a> = <a class="code" href="classripple_1_1TaggedPointer.html">TaggedPointer</a>(</div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  std::move(<a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>), <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a>, dstIsBranch, dstToAllocate);</div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> = dstIsBranch;</div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (child)</div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">auto</span> <span class="keyword">const</span> childIndex = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(m);</div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">auto</span> [_, hashes, children] = <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">getHashesAndChildren</a>();</div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  hashes[childIndex].zero();</div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  children[childIndex] = std::move(child);</div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  </div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#af4ebd102e0623885986c4fc9874323f3">zero</a>();</div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> = dstIsBranch;</div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (child)</div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">auto</span> <span class="keyword">const</span> childIndex = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(m);</div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">auto</span> [_, hashes, children] = <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">getHashesAndChildren</a>();</div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  hashes[childIndex].zero();</div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  children[childIndex] = std::move(child);</div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#af4ebd102e0623885986c4fc9874323f3">zero</a>();</div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  assert(<a class="code" href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">getBranchCount</a>() <= <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#aa3fcb13ead97c21651ae2ea0f60e8909">capacity</a>());</div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> }</div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment">// finished modifying, now make shareable</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a1a5be285c023d39777772c86322df101"> 311</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a1a5be285c023d39777772c86322df101">SHAMapInnerNode::shareChild</a>(<span class="keywordtype">int</span> m, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a> <span class="keyword">const</span>& child)</div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> {</div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  assert((m >= 0) && (m < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>));</div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  assert(<a class="code" href="classripple_1_1SHAMapTreeNode.html#a7f27d867484104446867c0f50adc5ffb">cowid_</a> != 0);</div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  assert(child);</div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  assert(child.get() != <span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  </div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  assert(<a class="code" href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">getBranchCount</a>() <= <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#aa3fcb13ead97c21651ae2ea0f60e8909">capacity</a>());</div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> }</div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  </div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="comment">// finished modifying, now make shareable</span></div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a1a5be285c023d39777772c86322df101"> 323</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a1a5be285c023d39777772c86322df101">SHAMapInnerNode::shareChild</a>(<span class="keywordtype">int</span> m, <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a> <span class="keyword">const</span>& child)</div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(m));</div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a00ec86c8b6236c594e262847eeea68fd">getChildren</a>()[*<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(m)] = child;</div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> }</div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  </div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <a class="code" href="classripple_1_1SHAMapTreeNode.html">SHAMapTreeNode</a>*</div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#aee8c4572b5618083dd1513dbffba280d"> 323</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#aee8c4572b5618083dd1513dbffba280d">SHAMapInnerNode::getChildPointer</a>(<span class="keywordtype">int</span> branch)</div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> {</div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  assert((m >= 0) && (m < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>));</div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  assert(<a class="code" href="classripple_1_1SHAMapTreeNode.html#a7f27d867484104446867c0f50adc5ffb">cowid_</a> != 0);</div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  assert(child);</div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  assert(child.get() != <span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  assert(branch >= 0 && branch < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>);</div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(branch));</div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  </div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">auto</span> <span class="keyword">const</span> index = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(branch);</div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(m));</div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a00ec86c8b6236c594e262847eeea68fd">getChildren</a>()[*<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(m)] = child;</div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> }</div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  </div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <a class="code" href="classripple_1_1SHAMapTreeNode.html">SHAMapTreeNode</a>*</div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#aee8c4572b5618083dd1513dbffba280d"> 335</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#aee8c4572b5618083dd1513dbffba280d">SHAMapInnerNode::getChildPointer</a>(<span class="keywordtype">int</span> branch)</div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  assert(branch >= 0 && branch < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>);</div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(branch));</div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  </div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">auto</span> <span class="keyword">const</span> index = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(branch);</div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  </div>
|
||||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="classripple_1_1packed__spinlock.html">packed_spinlock</a> sl(<a class="code" href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">lock_</a>, index);</div>
|
||||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock(sl);</div>
|
||||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a00ec86c8b6236c594e262847eeea68fd">getChildren</a>()[index].get();</div>
|
||||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> }</div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  </div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a></div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a5693ae02e17473b1d7fec7cfea0d4443"> 348</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a5693ae02e17473b1d7fec7cfea0d4443">SHAMapInnerNode::getChild</a>(<span class="keywordtype">int</span> branch)</div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> {</div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  assert(branch >= 0 && branch < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>);</div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(branch));</div>
|
||||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  </div>
|
||||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">auto</span> <span class="keyword">const</span> index = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(branch);</div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classripple_1_1packed__spinlock.html">packed_spinlock</a> sl(<a class="code" href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">lock_</a>, index);</div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock(sl);</div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a00ec86c8b6236c594e262847eeea68fd">getChildren</a>()[index].get();</div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  </div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a></div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a5693ae02e17473b1d7fec7cfea0d4443"> 336</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a5693ae02e17473b1d7fec7cfea0d4443">SHAMapInnerNode::getChild</a>(<span class="keywordtype">int</span> branch)</div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  assert(branch >= 0 && branch < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>);</div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(branch));</div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  </div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> <span class="keyword">const</span> index = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(branch);</div>
|
||||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  </div>
|
||||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="classripple_1_1packed__spinlock.html">packed_spinlock</a> sl(<a class="code" href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">lock_</a>, index);</div>
|
||||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock(sl);</div>
|
||||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a00ec86c8b6236c594e262847eeea68fd">getChildren</a>()[index];</div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> }</div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  </div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a> <span class="keyword">const</span>&</div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a8932a6ff79c447556da4b17e908bd008"> 349</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a8932a6ff79c447556da4b17e908bd008">SHAMapInnerNode::getChildHash</a>(<span class="keywordtype">int</span> m)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  assert((m >= 0) && (m < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>));</div>
|
||||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> i = <a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(m))</div>
|
||||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a5beba186305ba9a93219feecd43a71d8">getHashes</a>()[*i];</div>
|
||||
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  </div>
|
||||
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="classripple_1_1packed__spinlock.html">packed_spinlock</a> sl(<a class="code" href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">lock_</a>, index);</div>
|
||||
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock(sl);</div>
|
||||
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a00ec86c8b6236c594e262847eeea68fd">getChildren</a>()[index];</div>
|
||||
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> }</div>
|
||||
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  </div>
|
||||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <a class="code" href="classripple_1_1SHAMapHash.html">SHAMapHash</a> <span class="keyword">const</span>&</div>
|
||||
<div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a8932a6ff79c447556da4b17e908bd008"> 361</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a8932a6ff79c447556da4b17e908bd008">SHAMapInnerNode::getChildHash</a>(<span class="keywordtype">int</span> m)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  assert((m >= 0) && (m < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>));</div>
|
||||
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> i = <a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(m))</div>
|
||||
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a5beba186305ba9a93219feecd43a71d8">getHashes</a>()[*i];</div>
|
||||
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  </div>
|
||||
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> zeroSHAMapHash;</div>
|
||||
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> }</div>
|
||||
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> zeroSHAMapHash;</div>
|
||||
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div>
|
||||
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  </div>
|
||||
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a></div>
|
||||
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#ad1d3440e82f822d85cc57734a16dc524"> 359</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ad1d3440e82f822d85cc57734a16dc524">SHAMapInnerNode::canonicalizeChild</a>(</div>
|
||||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordtype">int</span> branch,</div>
|
||||
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a> node)</div>
|
||||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div>
|
||||
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  assert(branch >= 0 && branch < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>);</div>
|
||||
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  assert(node);</div>
|
||||
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(branch));</div>
|
||||
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">auto</span> <span class="keyword">const</span> childIndex = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(branch);</div>
|
||||
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">auto</span> [_, hashes, children] = <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">getHashesAndChildren</a>();</div>
|
||||
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  assert(node->getHash() == hashes[childIndex]);</div>
|
||||
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  </div>
|
||||
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a></div>
|
||||
<div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#ad1d3440e82f822d85cc57734a16dc524"> 371</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#ad1d3440e82f822d85cc57734a16dc524">SHAMapInnerNode::canonicalizeChild</a>(</div>
|
||||
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordtype">int</span> branch,</div>
|
||||
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SHAMapTreeNode></a> node)</div>
|
||||
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div>
|
||||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  assert(branch >= 0 && branch < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>);</div>
|
||||
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  assert(node);</div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  assert(!<a class="code" href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">isEmptyBranch</a>(branch));</div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">auto</span> <span class="keyword">const</span> childIndex = *<a class="code" href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">getChildIndex</a>(branch);</div>
|
||||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">auto</span> [_, hashes, children] = <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">getHashesAndChildren</a>();</div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  assert(node->getHash() == hashes[childIndex]);</div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  </div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="classripple_1_1packed__spinlock.html">packed_spinlock</a> sl(<a class="code" href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">lock_</a>, childIndex);</div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock(sl);</div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  </div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (children[childIndex])</div>
|
||||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  {</div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// There is already a node hooked up, return it</span></div>
|
||||
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  node = children[childIndex];</div>
|
||||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div>
|
||||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  {</div>
|
||||
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="comment">// Hook this node up</span></div>
|
||||
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  children[childIndex] = node;</div>
|
||||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div>
|
||||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> node;</div>
|
||||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> }</div>
|
||||
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  </div>
|
||||
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a964421b7b7b071f1a5daa95afa8f0fe9"> 399</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a964421b7b7b071f1a5daa95afa8f0fe9">SHAMapInnerNode::invariants</a>(<span class="keywordtype">bool</span> is_root)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  [[maybe_unused]] <span class="keywordtype">unsigned</span> count = 0;</div>
|
||||
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">auto</span> [numAllocated, hashes, children] =</div>
|
||||
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">getHashesAndChildren</a>();</div>
|
||||
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  </div>
|
||||
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (numAllocated != <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>)</div>
|
||||
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div>
|
||||
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">auto</span> <span class="keyword">const</span> branchCount = <a class="code" href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">getBranchCount</a>();</div>
|
||||
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < branchCount; ++i)</div>
|
||||
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div>
|
||||
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  assert(hashes[i].isNonZero());</div>
|
||||
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span> (children[i] != <span class="keyword">nullptr</span>)</div>
|
||||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  children[i]->invariants();</div>
|
||||
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  ++count;</div>
|
||||
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div>
|
||||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div>
|
||||
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  {</div>
|
||||
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>; ++i)</div>
|
||||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  {</div>
|
||||
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span> (hashes[i].isNonZero())</div>
|
||||
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div>
|
||||
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  assert((<a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> & (1 << i)) != 0);</div>
|
||||
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span> (children[i] != <span class="keyword">nullptr</span>)</div>
|
||||
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  children[i]->invariants();</div>
|
||||
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  ++count;</div>
|
||||
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
|
||||
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div>
|
||||
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  assert((<a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> & (1 << i)) == 0);</div>
|
||||
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div>
|
||||
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</div>
|
||||
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div>
|
||||
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  </div>
|
||||
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span> (!is_root)</div>
|
||||
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div>
|
||||
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  assert(<a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#a6e42edf954f9565ebffd6a9036d6646f">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  assert(count >= 1);</div>
|
||||
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div>
|
||||
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  assert((count == 0) ? <a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#a9da182ac6ba19109c55bd2a6cd745a13">isZero</a>() : <a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#a6e42edf954f9565ebffd6a9036d6646f">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div>
|
||||
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  </div>
|
||||
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classripple_1_1packed__spinlock.html">packed_spinlock</a> sl(<a class="code" href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">lock_</a>, childIndex);</div>
|
||||
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a> lock(sl);</div>
|
||||
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  </div>
|
||||
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (children[childIndex])</div>
|
||||
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  {</div>
|
||||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// There is already a node hooked up, return it</span></div>
|
||||
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  node = children[childIndex];</div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Hook this node up</span></div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  children[childIndex] = node;</div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> node;</div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> }</div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  </div>
|
||||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classripple_1_1SHAMapInnerNode.html#a964421b7b7b071f1a5daa95afa8f0fe9"> 387</a></span> <a class="code" href="classripple_1_1SHAMapInnerNode.html#a964421b7b7b071f1a5daa95afa8f0fe9">SHAMapInnerNode::invariants</a>(<span class="keywordtype">bool</span> is_root)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  [[maybe_unused]] <span class="keywordtype">unsigned</span> count = 0;</div>
|
||||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">auto</span> [numAllocated, hashes, children] =</div>
|
||||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">hashesAndChildren_</a>.<a class="code" href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">getHashesAndChildren</a>();</div>
|
||||
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div>
|
||||
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">if</span> (numAllocated != <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>)</div>
|
||||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  {</div>
|
||||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">auto</span> <span class="keyword">const</span> branchCount = <a class="code" href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">getBranchCount</a>();</div>
|
||||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < branchCount; ++i)</div>
|
||||
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div>
|
||||
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  assert(hashes[i].isNonZero());</div>
|
||||
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span> (children[i] != <span class="keyword">nullptr</span>)</div>
|
||||
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  children[i]->invariants();</div>
|
||||
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  ++count;</div>
|
||||
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div>
|
||||
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div>
|
||||
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div>
|
||||
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">branchFactor</a>; ++i)</div>
|
||||
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div>
|
||||
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">if</span> (hashes[i].isNonZero())</div>
|
||||
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div>
|
||||
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  assert((<a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> & (1 << i)) != 0);</div>
|
||||
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span> (children[i] != <span class="keyword">nullptr</span>)</div>
|
||||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  children[i]->invariants();</div>
|
||||
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  ++count;</div>
|
||||
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div>
|
||||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div>
|
||||
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  assert((<a class="code" href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">isBranch_</a> & (1 << i)) == 0);</div>
|
||||
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div>
|
||||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div>
|
||||
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div>
|
||||
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  </div>
|
||||
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (!is_root)</div>
|
||||
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div>
|
||||
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  assert(<a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#a6e42edf954f9565ebffd6a9036d6646f">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  assert(count >= 1);</div>
|
||||
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
|
||||
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  assert((count == 0) ? <a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#a9da182ac6ba19109c55bd2a6cd745a13">isZero</a>() : <a class="code" href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">hash_</a>.<a class="code" href="classripple_1_1SHAMapHash.html#a6e42edf954f9565ebffd6a9036d6646f">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> }</div>
|
||||
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  </div>
|
||||
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> } <span class="comment">// namespace ripple</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<div class="ttc" id="agroup__SHAMap_html_gac9adec7146a8bea60fe6acf6c1ed98d1"><div class="ttname"><a href="group__SHAMap.html#gac9adec7146a8bea60fe6acf6c1ed98d1">ripple::SHAMapTreeNode::cowid</a></div><div class="ttdeci">std::uint32_t cowid() const</div><div class="ttdoc">Returns the SHAMap that owns this node.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00116">SHAMapTreeNode.h:116</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a5f4b0002303fdffed19ea5019f8070f8"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a5f4b0002303fdffed19ea5019f8070f8">ripple::SHAMapInnerNode::serializeWithPrefix</a></div><div class="ttdeci">void serializeWithPrefix(Serializer &) const override</div><div class="ttdoc">Serialize the node in a format appropriate for hashing.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00250">SHAMapInnerNode.cpp:250</a></div></div>
|
||||
@@ -519,42 +507,43 @@ $(function() {
|
||||
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div><div class="ttdoc">STL class.</div></div>
|
||||
<div class="ttc" id="ashared_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a></div><div class="ttdoc">STL class.</div></div>
|
||||
<div class="ttc" id="autility_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/utility.html">utility</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ac506e73531d73c05cf6505d3ece00d41"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">ripple::SHAMapInnerNode::hashesAndChildren_</a></div><div class="ttdeci">TaggedPointer hashesAndChildren_</div><div class="ttdoc">Opaque type that contains the hashes array (array of type SHAMapHash) and the children array (array o...</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00053">SHAMapInnerNode.h:53</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_af313083334c9a7fedf2bc3142b4b4ccd"><div class="ttname"><a href="namespaceripple.html#af313083334c9a7fedf2bc3142b4b4ccd">ripple::popcnt16</a></div><div class="ttdeci">int popcnt16(std::uint16_t a)</div><div class="ttdef"><b>Definition:</b> <a href="TaggedPointer_8h_source.html#l00223">TaggedPointer.h:223</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ac506e73531d73c05cf6505d3ece00d41"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ac506e73531d73c05cf6505d3ece00d41">ripple::SHAMapInnerNode::hashesAndChildren_</a></div><div class="ttdeci">TaggedPointer hashesAndChildren_</div><div class="ttdoc">Opaque type that contains the hashes array (array of type SHAMapHash) and the children array (array o...</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00054">SHAMapInnerNode.h:54</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1detail_1_1basic__sha512__half__hasher_html"><div class="ttname"><a href="structripple_1_1detail_1_1basic__sha512__half__hasher.html">ripple::detail::basic_sha512_half_hasher</a></div><div class="ttdoc">Returns the SHA512-Half digest of a message.</div><div class="ttdef"><b>Definition:</b> <a href="digest_8h_source.html#l00166">digest.h:166</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a5693ae02e17473b1d7fec7cfea0d4443"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a5693ae02e17473b1d7fec7cfea0d4443">ripple::SHAMapInnerNode::getChild</a></div><div class="ttdeci">std::shared_ptr< SHAMapTreeNode > getChild(int branch)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00348">SHAMapInnerNode.cpp:348</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a5693ae02e17473b1d7fec7cfea0d4443"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a5693ae02e17473b1d7fec7cfea0d4443">ripple::SHAMapInnerNode::getChild</a></div><div class="ttdeci">std::shared_ptr< SHAMapTreeNode > getChild(int branch)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00336">SHAMapInnerNode.cpp:336</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Slice_html"><div class="ttname"><a href="classripple_1_1Slice.html">ripple::Slice</a></div><div class="ttdoc">An immutable linear range of bytes.</div><div class="ttdef"><b>Definition:</b> <a href="Slice_8h_source.html#l00044">Slice.h:44</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ad1efe48ac7bf6f3b4a10ad9c26573bec"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ad1efe48ac7bf6f3b4a10ad9c26573bec">ripple::SHAMapInnerNode::makeFullInner</a></div><div class="ttdeci">static std::shared_ptr< SHAMapTreeNode > makeFullInner(Slice data, SHAMapHash const &hash, bool hashValid)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00126">SHAMapInnerNode.cpp:126</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ad1d3440e82f822d85cc57734a16dc524"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ad1d3440e82f822d85cc57734a16dc524">ripple::SHAMapInnerNode::canonicalizeChild</a></div><div class="ttdeci">std::shared_ptr< SHAMapTreeNode > canonicalizeChild(int branch, std::shared_ptr< SHAMapTreeNode > node)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00371">SHAMapInnerNode.cpp:371</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ad1d3440e82f822d85cc57734a16dc524"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ad1d3440e82f822d85cc57734a16dc524">ripple::SHAMapInnerNode::canonicalizeChild</a></div><div class="ttdeci">std::shared_ptr< SHAMapTreeNode > canonicalizeChild(int branch, std::shared_ptr< SHAMapTreeNode > node)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00359">SHAMapInnerNode.cpp:359</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapTreeNode_html_a7f27d867484104446867c0f50adc5ffb"><div class="ttname"><a href="classripple_1_1SHAMapTreeNode.html#a7f27d867484104446867c0f50adc5ffb">ripple::SHAMapTreeNode::cowid_</a></div><div class="ttdeci">std::uint32_t cowid_</div><div class="ttdoc">Determines the owning SHAMap, if any.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00064">SHAMapTreeNode.h:64</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html_ab6de064efbc9b2efaeff2b069a02b644"><div class="ttname"><a href="classripple_1_1Serializer.html#ab6de064efbc9b2efaeff2b069a02b644">ripple::Serializer::add8</a></div><div class="ttdeci">int add8(unsigned char i)</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8cpp_source.html#l00166">Serializer.cpp:166</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a73212411125e46812e0e19f2e307b155"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a73212411125e46812e0e19f2e307b155">ripple::SHAMapInnerNode::updateHash</a></div><div class="ttdeci">void updateHash() override</div><div class="ttdoc">Recalculate the hash of this node.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00196">SHAMapInnerNode.cpp:196</a></div></div>
|
||||
<div class="ttc" id="aiterator_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/iterator.html">iterator</a></div></div>
|
||||
<div class="ttc" id="alock_guard_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a></div><div class="ttdoc">STL class.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapHash_html_a9da182ac6ba19109c55bd2a6cd745a13"><div class="ttname"><a href="classripple_1_1SHAMapHash.html#a9da182ac6ba19109c55bd2a6cd745a13">ripple::SHAMapHash::isZero</a></div><div class="ttdeci">bool isZero() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapHash_8h_source.html#l00053">SHAMapHash.h:53</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a42a7132ff24a6edf8ca1e022f61826d9"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">ripple::SHAMapInnerNode::branchFactor</a></div><div class="ttdeci">static constexpr unsigned int branchFactor</div><div class="ttdoc">Each inner node has 16 children (the 'radix tree' part of the map)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00046">SHAMapInnerNode.h:46</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a1a5be285c023d39777772c86322df101"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a1a5be285c023d39777772c86322df101">ripple::SHAMapInnerNode::shareChild</a></div><div class="ttdeci">void shareChild(int m, std::shared_ptr< SHAMapTreeNode > const &child)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00323">SHAMapInnerNode.cpp:323</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a42a7132ff24a6edf8ca1e022f61826d9"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a42a7132ff24a6edf8ca1e022f61826d9">ripple::SHAMapInnerNode::branchFactor</a></div><div class="ttdeci">static constexpr unsigned int branchFactor</div><div class="ttdoc">Each inner node has 16 children (the 'radix tree' part of the map)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00047">SHAMapInnerNode.h:47</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a1a5be285c023d39777772c86322df101"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a1a5be285c023d39777772c86322df101">ripple::SHAMapInnerNode::shareChild</a></div><div class="ttdeci">void shareChild(int m, std::shared_ptr< SHAMapTreeNode > const &child)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00311">SHAMapInnerNode.cpp:311</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ae4966411bf110181aa1b1ef4a2d8c690"><div class="ttname"><a href="namespaceripple.html#ae4966411bf110181aa1b1ef4a2d8c690">ripple::wireTypeInner</a></div><div class="ttdeci">static constexpr unsigned const char wireTypeInner</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00042">SHAMapTreeNode.h:42</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapNodeID_html"><div class="ttname"><a href="classripple_1_1SHAMapNodeID.html">ripple::SHAMapNodeID</a></div><div class="ttdoc">Identifies a node inside a SHAMap.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapNodeID_8h_source.html#l00033">SHAMapNodeID.h:33</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapHash_html_a6e42edf954f9565ebffd6a9036d6646f"><div class="ttname"><a href="classripple_1_1SHAMapHash.html#a6e42edf954f9565ebffd6a9036d6646f">ripple::SHAMapHash::isNonZero</a></div><div class="ttdeci">bool isNonZero() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapHash_8h_source.html#l00058">SHAMapHash.h:58</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapTreeNode_html_a2dbee3cfa72319c01b649f4c255a5a9d"><div class="ttname"><a href="classripple_1_1SHAMapTreeNode.html#a2dbee3cfa72319c01b649f4c255a5a9d">ripple::SHAMapTreeNode::getString</a></div><div class="ttdeci">virtual std::string getString(SHAMapNodeID const &) const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8cpp_source.html#l00184">SHAMapTreeNode.cpp:184</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapTreeNode_html_a705bca4eb622097a917a3cac5c3a013d"><div class="ttname"><a href="classripple_1_1SHAMapTreeNode.html#a705bca4eb622097a917a3cac5c3a013d">ripple::SHAMapTreeNode::hash_</a></div><div class="ttdeci">SHAMapHash hash_</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00056">SHAMapTreeNode.h:56</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a636a12a32e96bbd6a7d32e580a55fd4f"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a636a12a32e96bbd6a7d32e580a55fd4f">ripple::SHAMapInnerNode::iterChildren</a></div><div class="ttdeci">void iterChildren(F &&f) const</div><div class="ttdoc">Call the f callback for all 16 (branchFactor) branches - even if the branch is empty.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00049">SHAMapInnerNode.cpp:49</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html"><div class="ttname"><a href="classripple_1_1TaggedPointer.html">ripple::TaggedPointer</a></div><div class="ttdoc">TaggedPointer is a combination of a pointer and a mask stored in the lowest two bits.</div><div class="ttdef"><b>Definition:</b> <a href="TaggedPointer_8h_source.html#l00057">TaggedPointer.h:57</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html"><div class="ttname"><a href="classripple_1_1TaggedPointer.html">ripple::TaggedPointer</a></div><div class="ttdoc">TaggedPointer is a combination of a pointer and a mask stored in the lowest two bits.</div><div class="ttdef"><b>Definition:</b> <a href="TaggedPointer_8h_source.html#l00059">TaggedPointer.h:59</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapHash_html"><div class="ttname"><a href="classripple_1_1SHAMapHash.html">ripple::SHAMapHash</a></div><div class="ttdef"><b>Definition:</b> <a href="SHAMapHash_8h_source.html#l00032">SHAMapHash.h:32</a></div></div>
|
||||
<div class="ttc" id="aalgorithm_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/algorithm.html">algorithm</a></div></div>
|
||||
<div class="ttc" id="atie_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/tuple/tie.html">std::tie</a></div><div class="ttdeci">T tie(T... args)</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a5b4f103d62324f6efb4e21a8a6404c27"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">ripple::SHAMapInnerNode::isEmptyBranch</a></div><div class="ttdeci">bool isEmptyBranch(int m) const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00198">SHAMapInnerNode.h:198</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a5b4f103d62324f6efb4e21a8a6404c27"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a5b4f103d62324f6efb4e21a8a6404c27">ripple::SHAMapInnerNode::isEmptyBranch</a></div><div class="ttdeci">bool isEmptyBranch(int m) const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00205">SHAMapInnerNode.h:205</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a5c356c106a60a7f75bff902bd04cb505"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a5c356c106a60a7f75bff902bd04cb505">ripple::SHAMapInnerNode::iterNonEmptyChildIndexes</a></div><div class="ttdeci">void iterNonEmptyChildIndexes(F &&f) const</div><div class="ttdoc">Call the f callback for all non-empty branches.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00056">SHAMapInnerNode.cpp:56</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint< 256 ></a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aa91785cf9d4979e8dd4dd9c183ad9c5e"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aa91785cf9d4979e8dd4dd9c183ad9c5e">ripple::SHAMapInnerNode::getString</a></div><div class="ttdeci">std::string getString(SHAMapNodeID const &) const override</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00272">SHAMapInnerNode.cpp:272</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aa91785cf9d4979e8dd4dd9c183ad9c5e"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aa91785cf9d4979e8dd4dd9c183ad9c5e">ripple::SHAMapInnerNode::getString</a></div><div class="ttdeci">std::string getString(SHAMapNodeID const &) const override</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00260">SHAMapInnerNode.cpp:260</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ad5143ceada01141772ae4aab984f94bdad9a09590da318a86ba2bd64b374c2d77"><div class="ttname"><a href="namespaceripple.html#ad5143ceada01141772ae4aab984f94bdad9a09590da318a86ba2bd64b374c2d77">ripple::HashPrefix::innerNode</a></div><div class="ttdeci">@ innerNode</div><div class="ttdoc">inner node in V1 tree</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a8932a6ff79c447556da4b17e908bd008"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a8932a6ff79c447556da4b17e908bd008">ripple::SHAMapInnerNode::getChildHash</a></div><div class="ttdeci">SHAMapHash const & getChildHash(int m) const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00361">SHAMapInnerNode.cpp:361</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a8932a6ff79c447556da4b17e908bd008"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a8932a6ff79c447556da4b17e908bd008">ripple::SHAMapInnerNode::getChildHash</a></div><div class="ttdeci">SHAMapHash const & getChildHash(int m) const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00349">SHAMapInnerNode.cpp:349</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1base__uint_html_a4b9e8d36a37963d48be8f081d99257bf"><div class="ttname"><a href="classripple_1_1base__uint.html#a4b9e8d36a37963d48be8f081d99257bf">ripple::base_uint< 256 >::bytes</a></div><div class="ttdeci">static constexpr std::size_t bytes</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00105">base_uint.h:105</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a7fb5fc0e5d65ed4c3c77537a8fda8d32"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32">ripple::SHAMapInnerNode::setChild</a></div><div class="ttdeci">void setChild(int m, std::shared_ptr< SHAMapTreeNode > child)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00287">SHAMapInnerNode.cpp:287</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a7fb5fc0e5d65ed4c3c77537a8fda8d32"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a7fb5fc0e5d65ed4c3c77537a8fda8d32">ripple::SHAMapInnerNode::setChild</a></div><div class="ttdeci">void setChild(int m, std::shared_ptr< SHAMapTreeNode > child)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00275">SHAMapInnerNode.cpp:275</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html_abd5f83aa8b3943ca9cbfa005aaa33734"><div class="ttname"><a href="classripple_1_1SerialIter.html#abd5f83aa8b3943ca9cbfa005aaa33734">ripple::SerialIter::get8</a></div><div class="ttdeci">unsigned char get8()</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8cpp_source.html#l00362">Serializer.cpp:362</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1packed__spinlock_html"><div class="ttname"><a href="classripple_1_1packed__spinlock.html">ripple::packed_spinlock</a></div><div class="ttdoc">Classes to handle arrays of spinlocks packed into a single atomic integer:</div><div class="ttdef"><b>Definition:</b> <a href="spinlock_8h_source.html#l00089">spinlock.h:89</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a64c8817ea46bb682a9d354590cd11449"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a64c8817ea46bb682a9d354590cd11449">ripple::SHAMapInnerNode::resizeChildArrays</a></div><div class="ttdeci">void resizeChildArrays(std::uint8_t toAllocate)</div><div class="ttdoc">Convert arrays stored in hashesAndChildren_ so they can store the requested number of children.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00062">SHAMapInnerNode.cpp:62</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html_ac4aae57f058f3641120c64aefff35ccc"><div class="ttname"><a href="classripple_1_1SerialIter.html#ac4aae57f058f3641120c64aefff35ccc">ripple::SerialIter::empty</a></div><div class="ttdeci">std::size_t empty() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00332">Serializer.h:332</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html_ac4aae57f058f3641120c64aefff35ccc"><div class="ttname"><a href="classripple_1_1SerialIter.html#ac4aae57f058f3641120c64aefff35ccc">ripple::SerialIter::empty</a></div><div class="ttdeci">std::size_t empty() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00333">Serializer.h:333</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html_a5beba186305ba9a93219feecd43a71d8"><div class="ttname"><a href="classripple_1_1TaggedPointer.html#a5beba186305ba9a93219feecd43a71d8">ripple::TaggedPointer::getHashes</a></div><div class="ttdeci">SHAMapHash * getHashes() const</div><div class="ttdoc">Get the hashes array.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html_ae529fdc057df9e07c40b488d45855b19"><div class="ttname"><a href="classripple_1_1TaggedPointer.html#ae529fdc057df9e07c40b488d45855b19">ripple::TaggedPointer::isDense</a></div><div class="ttdeci">bool isDense() const</div><div class="ttdoc">Check if the arrays have a dense format.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapTreeNode_html"><div class="ttname"><a href="classripple_1_1SHAMapTreeNode.html">ripple::SHAMapTreeNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00053">SHAMapTreeNode.h:53</a></div></div>
|
||||
@@ -562,19 +551,19 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a25aac316c799590fec7f818d5b5584b5"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a25aac316c799590fec7f818d5b5584b5">ripple::SHAMapInnerNode::getChildIndex</a></div><div class="ttdeci">std::optional< int > getChildIndex(int i) const</div><div class="ttdoc">Get the child's index inside the hashes or children array (stored in hashesAndChildren_.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00069">SHAMapInnerNode.cpp:69</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ad83701be0c7a908a61601d1bcbf7ecb1"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ad83701be0c7a908a61601d1bcbf7ecb1">ripple::SHAMapInnerNode::updateHashDeep</a></div><div class="ttdeci">void updateHashDeep()</div><div class="ttdoc">Recalculate the hash of all children and this node.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00211">SHAMapInnerNode.cpp:211</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a2cf4d1f797c61c9e2bb458b7b14056b6"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a2cf4d1f797c61c9e2bb458b7b14056b6">ripple::SHAMapInnerNode::SHAMapInnerNode</a></div><div class="ttdeci">SHAMapInnerNode(std::uint32_t cowid, std::uint8_t numAllocatedChildren=2)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00038">SHAMapInnerNode.cpp:38</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a52169174ccb10b0ea379da3463dba155"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">ripple::SHAMapInnerNode::isBranch_</a></div><div class="ttdeci">std::uint16_t isBranch_</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00056">SHAMapInnerNode.h:56</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html"><div class="ttname"><a href="classripple_1_1SerialIter.html">ripple::SerialIter</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00310">Serializer.h:310</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aec522cbc8cfb50ed87ebf8c634a40276"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">ripple::SHAMapInnerNode::getBranchCount</a></div><div class="ttdeci">int getBranchCount() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00266">SHAMapInnerNode.cpp:266</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a52169174ccb10b0ea379da3463dba155"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a52169174ccb10b0ea379da3463dba155">ripple::SHAMapInnerNode::isBranch_</a></div><div class="ttdeci">std::uint16_t isBranch_</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00057">SHAMapInnerNode.h:57</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html"><div class="ttname"><a href="classripple_1_1SerialIter.html">ripple::SerialIter</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00311">Serializer.h:311</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aec522cbc8cfb50ed87ebf8c634a40276"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aec522cbc8cfb50ed87ebf8c634a40276">ripple::SHAMapInnerNode::getBranchCount</a></div><div class="ttdeci">int getBranchCount() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00211">SHAMapInnerNode.h:211</a></div></div>
|
||||
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aa36ffe7811690d0c57b52c792a634dee"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aa36ffe7811690d0c57b52c792a634dee">ripple::SHAMapInnerNode::~SHAMapInnerNode</a></div><div class="ttdeci">~SHAMapInnerNode()</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html_a00d143272df241cef3ff904d3291652b"><div class="ttname"><a href="classripple_1_1TaggedPointer.html#a00d143272df241cef3ff904d3291652b">ripple::TaggedPointer::iterNonEmptyChildIndexes</a></div><div class="ttdeci">void iterNonEmptyChildIndexes(std::uint16_t isBranch, F &&f) const</div><div class="ttdoc">Call the f callback for all non-empty branches.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapTreeNode_html_a454e86c9ed693f8921d53a915d8b1415"><div class="ttname"><a href="classripple_1_1SHAMapTreeNode.html#a454e86c9ed693f8921d53a915d8b1415">ripple::SHAMapTreeNode::getHash</a></div><div class="ttdeci">SHAMapHash const & getHash() const</div><div class="ttdoc">Return the hash of this node.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00143">SHAMapTreeNode.h:143</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html"><div class="ttname"><a href="classripple_1_1Serializer.html">ripple::Serializer</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00039">Serializer.h:39</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html"><div class="ttname"><a href="classripple_1_1Serializer.html">ripple::Serializer</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00040">Serializer.h:40</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ac329442511917ee4fb295996041263e9"><div class="ttname"><a href="namespaceripple.html#ac329442511917ee4fb295996041263e9">ripple::wireTypeCompressedInner</a></div><div class="ttdeci">static constexpr unsigned const char wireTypeCompressedInner</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapTreeNode_8h_source.html#l00043">SHAMapTreeNode.h:43</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html_abc70fb8fb5632ef4d3e68f8cc22f486c"><div class="ttname"><a href="classripple_1_1SerialIter.html#abc70fb8fb5632ef4d3e68f8cc22f486c">ripple::SerialIter::getBitString</a></div><div class="ttdeci">base_uint< Bits, Tag > getBitString()</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00414">Serializer.h:414</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html_abc70fb8fb5632ef4d3e68f8cc22f486c"><div class="ttname"><a href="classripple_1_1SerialIter.html#abc70fb8fb5632ef4d3e68f8cc22f486c">ripple::SerialIter::getBitString</a></div><div class="ttdeci">base_uint< Bits, Tag > getBitString()</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00415">Serializer.h:415</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="RCLCensorshipDetector_8h_source.html#l00029">RCLCensorshipDetector.h:29</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_ad0ebb4c9ea3cc41acaf6806a3e43ec91"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#ad0ebb4c9ea3cc41acaf6806a3e43ec91">ripple::SHAMapInnerNode::serializeForWire</a></div><div class="ttdeci">void serializeForWire(Serializer &) const override</div><div class="ttdoc">Serialize the node in a format appropriate for sending over the wire.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00226">SHAMapInnerNode.cpp:226</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html_a96daec54ca0c8ec7f6e7e683e9abbe0e"><div class="ttname"><a href="classripple_1_1Serializer.html#a96daec54ca0c8ec7f6e7e683e9abbe0e">ripple::Serializer::addBitString</a></div><div class="ttdeci">int addBitString(base_uint< Bits, Tag > const &v)</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00097">Serializer.h:97</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html_a96daec54ca0c8ec7f6e7e683e9abbe0e"><div class="ttname"><a href="classripple_1_1Serializer.html#a96daec54ca0c8ec7f6e7e683e9abbe0e">ripple::Serializer::addBitString</a></div><div class="ttdeci">int addBitString(base_uint< Bits, Tag > const &v)</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00098">Serializer.h:98</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapHash_html_af4ebd102e0623885986c4fc9874323f3"><div class="ttname"><a href="classripple_1_1SHAMapHash.html#af4ebd102e0623885986c4fc9874323f3">ripple::SHAMapHash::zero</a></div><div class="ttdeci">void zero()</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapHash_8h_source.html#l00068">SHAMapHash.h:68</a></div></div>
|
||||
<div class="ttc" id="anamespacebeast_html_a4a9eebb8b68941c49b07763d7a95d456"><div class="ttname"><a href="namespacebeast.html#a4a9eebb8b68941c49b07763d7a95d456">beast::hash_append</a></div><div class="ttdeci">std::enable_if_t< is_contiguously_hashable< T, Hasher >::value > hash_append(Hasher &h, T const &t) noexcept</div><div class="ttdoc">Logically concatenate input data to a Hasher.</div><div class="ttdef"><b>Definition:</b> <a href="hash__append_8h_source.html#l00236">hash_append.h:236</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1spinlock_html"><div class="ttname"><a href="classripple_1_1spinlock.html">ripple::spinlock</a></div><div class="ttdoc">A spinlock implemented on top of an atomic integer.</div><div class="ttdef"><b>Definition:</b> <a href="spinlock_8h_source.html#l00163">spinlock.h:163</a></div></div>
|
||||
@@ -584,16 +573,16 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_af9776f187d3686a7fba4c2d2fbeebdf4"><div class="ttname"><a href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">ripple::to_string</a></div><div class="ttdeci">std::string to_string(Manifest const &m)</div><div class="ttdoc">Format the specified manifest to a string for debugging purposes.</div><div class="ttdef"><b>Definition:</b> <a href="app_2misc_2impl_2Manifest_8cpp_source.html#l00041">app/misc/impl/Manifest.cpp:41</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Serializer_html_a55ebab5e9bf8d8231da8f3c796150719"><div class="ttname"><a href="classripple_1_1Serializer.html#a55ebab5e9bf8d8231da8f3c796150719">ripple::Serializer::add32</a></div><div class="ttdeci">int add32(std::uint32_t i)</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8cpp_source.html#l00038">Serializer.cpp:38</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html_ac549f5187a2f29c8fb65a5a399cce913"><div class="ttname"><a href="classripple_1_1TaggedPointer.html#ac549f5187a2f29c8fb65a5a399cce913">ripple::TaggedPointer::iterChildren</a></div><div class="ttdeci">void iterChildren(std::uint16_t isBranch, F &&f) const</div><div class="ttdoc">Call the f callback for all 16 (branchFactor) branches - even if the branch is empty.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a13fcdfee8199a8e54429edf6b9085ae0"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a13fcdfee8199a8e54429edf6b9085ae0">ripple::SHAMapInnerNode::isEmpty</a></div><div class="ttdeci">bool isEmpty() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00260">SHAMapInnerNode.cpp:260</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a13fcdfee8199a8e54429edf6b9085ae0"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a13fcdfee8199a8e54429edf6b9085ae0">ripple::SHAMapInnerNode::isEmpty</a></div><div class="ttdeci">bool isEmpty() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00199">SHAMapInnerNode.h:199</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a7c00b72186bf55aad286505bb5cedc00"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a7c00b72186bf55aad286505bb5cedc00">ripple::SHAMapInnerNode::makeCompressedInner</a></div><div class="ttdeci">static std::shared_ptr< SHAMapTreeNode > makeCompressedInner(Slice data)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00160">SHAMapInnerNode.cpp:160</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html_a41f33a7472b07de90ec241770e60e114"><div class="ttname"><a href="classripple_1_1TaggedPointer.html#a41f33a7472b07de90ec241770e60e114">ripple::TaggedPointer::getHashesAndChildren</a></div><div class="ttdeci">std::tuple< std::uint8_t, SHAMapHash *, std::shared_ptr< SHAMapTreeNode > * > getHashesAndChildren() const</div><div class="ttdoc">Get the number of elements in each array and a pointer to the start of each array.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapHash_html_a8f95b5bc14b7085d368f56aeaa17ef4f"><div class="ttname"><a href="classripple_1_1SHAMapHash.html#a8f95b5bc14b7085d368f56aeaa17ef4f">ripple::SHAMapHash::as_uint256</a></div><div class="ttdeci">uint256 const & as_uint256() const</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapHash_8h_source.html#l00043">SHAMapHash.h:43</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aee8c4572b5618083dd1513dbffba280d"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aee8c4572b5618083dd1513dbffba280d">ripple::SHAMapInnerNode::getChildPointer</a></div><div class="ttdeci">SHAMapTreeNode * getChildPointer(int branch)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00335">SHAMapInnerNode.cpp:335</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_aee8c4572b5618083dd1513dbffba280d"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#aee8c4572b5618083dd1513dbffba280d">ripple::SHAMapInnerNode::getChildPointer</a></div><div class="ttdeci">SHAMapTreeNode * getChildPointer(int branch)</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00323">SHAMapInnerNode.cpp:323</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1TaggedPointer_html_aa3fcb13ead97c21651ae2ea0f60e8909"><div class="ttname"><a href="classripple_1_1TaggedPointer.html#aa3fcb13ead97c21651ae2ea0f60e8909">ripple::TaggedPointer::capacity</a></div><div class="ttdeci">std::uint8_t capacity() const</div><div class="ttdoc">Get the number of elements allocated for each array.</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a9c3a01178261b6e8a98c0ea99f01d154"><div class="ttname"><a href="namespaceripple.html#a9c3a01178261b6e8a98c0ea99f01d154">ripple::hash_append</a></div><div class="ttdeci">void hash_append(Hasher &h, ValidatorBlobInfo const &blobInfo)</div><div class="ttdef"><b>Definition:</b> <a href="ValidatorList_8h_source.html#l00897">ValidatorList.h:897</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_af954310317885e9dbbc845270ddd5076"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">ripple::SHAMapInnerNode::lock_</a></div><div class="ttdeci">std::atomic< std::uint16_t > lock_</div><div class="ttdoc">A bitlock for the children of this node, with one bit per child.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00059">SHAMapInnerNode.h:59</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a964421b7b7b071f1a5daa95afa8f0fe9"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a964421b7b7b071f1a5daa95afa8f0fe9">ripple::SHAMapInnerNode::invariants</a></div><div class="ttdeci">void invariants(bool is_root=false) const override</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00399">SHAMapInnerNode.cpp:399</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a07f4125beab496a2b812ce3f3c43f31e"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a07f4125beab496a2b812ce3f3c43f31e">ripple::SHAMapInnerNode::fullBelowGen_</a></div><div class="ttdeci">std::uint32_t fullBelowGen_</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00055">SHAMapInnerNode.h:55</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_af954310317885e9dbbc845270ddd5076"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#af954310317885e9dbbc845270ddd5076">ripple::SHAMapInnerNode::lock_</a></div><div class="ttdeci">std::atomic< std::uint16_t > lock_</div><div class="ttdoc">A bitlock for the children of this node, with one bit per child.</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00060">SHAMapInnerNode.h:60</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a964421b7b7b071f1a5daa95afa8f0fe9"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a964421b7b7b071f1a5daa95afa8f0fe9">ripple::SHAMapInnerNode::invariants</a></div><div class="ttdeci">void invariants(bool is_root=false) const override</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8cpp_source.html#l00387">SHAMapInnerNode.cpp:387</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SHAMapInnerNode_html_a07f4125beab496a2b812ce3f3c43f31e"><div class="ttname"><a href="classripple_1_1SHAMapInnerNode.html#a07f4125beab496a2b812ce3f3c43f31e">ripple::SHAMapInnerNode::fullBelowGen_</a></div><div class="ttdeci">std::uint32_t fullBelowGen_</div><div class="ttdef"><b>Definition:</b> <a href="SHAMapInnerNode_8h_source.html#l00056">SHAMapInnerNode.h:56</a></div></div>
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
|
||||
Reference in New Issue
Block a user