Files
rippled/classripple_1_1LedgerTrie.html
2025-11-04 00:36:48 -08:00

927 lines
68 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::LedgerTrie&lt; Ledger &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="classripple_1_1LedgerTrie.html">LedgerTrie</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classripple_1_1LedgerTrie-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">ripple::LedgerTrie&lt; Ledger &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Ancestry trie of ledgers.
<a href="classripple_1_1LedgerTrie.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ripple::LedgerTrie&lt; Ledger &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1LedgerTrie__coll__graph.png" border="0" usemap="#aripple_1_1LedgerTrie_3_01Ledger_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="aripple_1_1LedgerTrie_3_01Ledger_01_4_coll__map" id="aripple_1_1LedgerTrie_3_01Ledger_01_4_coll__map">
<area shape="rect" title="Ancestry trie of ledgers." alt="" coords="2694,249,2829,289"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html" title=" " alt="" coords="2373,53,2543,107"/>
<area shape="poly" title=" " alt="" coords="2556,112,2561,117,2572,139,2573,161,2574,181,2585,201,2608,221,2636,237,2694,257,2693,262,2634,242,2605,226,2581,204,2569,182,2568,161,2567,141,2557,120,2552,116"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/container/vector.html" title=" " alt="" coords="2672,65,2851,119"/>
<area shape="poly" title=" " alt="" coords="2557,81,2672,86,2672,91,2557,87"/>
<area shape="rect" href="structripple_1_1ledger__trie__detail_1_1Node.html" title=" " alt="" coords="2956,180,3139,220"/>
<area shape="poly" title=" " alt="" coords="2942,192,2812,174,2671,148,2538,110,2539,105,2673,143,2813,169,2943,187"/>
<area shape="poly" title=" " alt="" coords="3020,164,3030,156,3047,153,3062,155,3072,161,3077,170,3075,180,3070,179,3072,171,3069,165,3061,160,3047,159,3032,161,3024,168"/>
<area shape="rect" href="classripple_1_1ledger__trie__detail_1_1Span.html" title=" " alt="" coords="2682,466,2841,521"/>
<area shape="poly" title=" " alt="" coords="2797,454,3025,218,3029,222,2801,458"/>
<area shape="rect" href="classripple_1_1Ledger.html" title="Holds a ledger." alt="" coords="2403,627,2513,653"/>
<area shape="poly" title=" " alt="" coords="2497,619,2703,518,2705,523,2499,624"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/memory/enable_shared_from_this.html" title=" " alt="" coords="2046,459,2211,499"/>
<area shape="poly" title=" " alt="" coords="2226,493,2281,509,2335,532,2369,554,2401,580,2447,625,2444,629,2398,584,2366,559,2332,537,2279,514,2224,498"/>
<area shape="rect" href="classripple_1_1DigestAwareReadView.html" title="ReadView that associates keys with digests." alt="" coords="2021,238,2236,263"/>
<area shape="poly" title=" " alt="" coords="2152,272,2448,625,2444,629,2148,276"/>
<area shape="rect" href="classripple_1_1ReadView.html" title="A view into a ledger." alt="" coords="1743,113,1875,138"/>
<area shape="poly" title=" " alt="" coords="1847,142,1926,182,2022,223,2065,235,2064,240,2020,228,1924,187,1844,147"/>
<area shape="rect" href="classripple_1_1detail_1_1ReadViewFwdRange.html" title=" " alt="" coords="2035,173,2222,213"/>
<area shape="poly" title=" " alt="" coords="1871,139,1941,156,2036,175,2035,180,1939,161,1870,144"/>
<area shape="rect" href="classripple_1_1detail_1_1ReadViewFwdRange.html" title=" " alt="" coords="2040,47,2217,87"/>
<area shape="poly" title=" " alt="" coords="1888,108,2039,80,2040,86,1889,114"/>
<area shape="rect" href="structripple_1_1ReadView_1_1sles__type.html" title=" " alt="" coords="2357,181,2559,206"/>
<area shape="poly" title=" " alt="" coords="2360,181,2333,177,2236,164,2039,145,1875,132,1876,127,2040,140,2236,159,2334,172,2361,176"/>
<area shape="poly" title=" " alt="" coords="2236,191,2357,191,2357,196,2236,196"/>
<area shape="rect" href="structripple_1_1ReadView_1_1txs__type.html" title=" " alt="" coords="2361,131,2555,157"/>
<area shape="poly" title=" " alt="" coords="2367,128,2356,121,2346,111,2342,100,2339,90,2331,81,2308,62,2288,51,2235,37,2176,26,2129,23,2082,26,2022,37,1967,53,1915,74,1834,115,1831,110,1912,69,1965,48,2021,32,2081,21,2129,17,2177,21,2237,32,2290,46,2311,58,2335,77,2344,88,2347,98,2351,108,2359,117,2370,123"/>
<area shape="poly" title=" " alt="" coords="2231,78,2283,89,2334,104,2358,116,2399,129,2397,134,2356,121,2332,109,2282,95,2230,84"/>
<area shape="rect" href="classripple_1_1TxsRawView.html" title="Interface for changing ledger entries with transactions." alt="" coords="2053,946,2204,971"/>
<area shape="poly" title=" " alt="" coords="2217,948,2277,930,2306,915,2332,897,2359,868,2382,835,2418,764,2440,698,2452,652,2457,653,2445,700,2423,766,2387,837,2363,871,2335,901,2309,920,2279,935,2218,953"/>
<area shape="rect" href="classripple_1_1RawView.html" title="Interface for ledger entry changes." alt="" coords="1746,946,1873,971"/>
<area shape="poly" title=" " alt="" coords="1887,956,2053,956,2053,961,1887,961"/>
<area shape="rect" href="classripple_1_1CountedObject.html" title=" " alt="" coords="2047,881,2210,921"/>
<area shape="poly" title=" " alt="" coords="2223,898,2280,886,2307,875,2332,861,2358,838,2380,811,2416,751,2439,694,2451,652,2456,654,2444,696,2420,753,2385,814,2362,841,2335,865,2309,880,2281,891,2224,903"/>
<area shape="rect" href="classripple_1_1SHAMap.html" title="A SHAMap is both a radix tree with a fan&#45;out of 16 and a Merkle tree." alt="" coords="2067,573,2190,598"/>
<area shape="poly" title=" " alt="" coords="2204,595,2403,628,2402,634,2203,600"/>
<area shape="rect" href="classripple_1_1Family.html" title=" " alt="" coords="1754,538,1865,563"/>
<area shape="poly" title=" " alt="" coords="1878,555,2067,576,2067,581,1878,561"/>
<area shape="rect" href="classbeast_1_1Journal.html" title="A generic endpoint for log messages." alt="" coords="1754,590,1865,615"/>
<area shape="poly" title=" " alt="" coords="1878,608,2022,621,2233,632,2403,636,2403,642,2232,637,2021,627,1878,613"/>
<area shape="poly" title=" " alt="" coords="1878,598,1997,592,2067,587,2067,593,1997,597,1879,603"/>
<area shape="rect" href="classbeast_1_1Journal_1_1Sink.html" title="Abstraction for the underlying message destination." alt="" coords="1391,590,1538,615"/>
<area shape="poly" title=" " alt="" coords="1552,600,1754,600,1754,605,1552,605"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/types/integer.html" title=" " alt="" coords="5,557,108,582"/>
<area shape="poly" title=" " alt="" coords="64,595,83,716,118,887,140,974,165,1053,193,1118,208,1142,223,1161,248,1179,272,1186,333,1185,2763,1185,2781,1183,2799,1176,2833,1150,2863,1109,2891,1055,2916,991,2939,918,2976,756,3004,588,3023,430,3042,220,3047,220,3029,431,3009,589,2981,757,2944,920,2921,993,2896,1058,2868,1112,2836,1154,2801,1181,2782,1188,2763,1191,333,1191,271,1191,246,1184,220,1165,203,1146,188,1120,160,1055,135,976,112,888,78,717,59,596"/>
<area shape="poly" title=" " alt="" coords="67,543,92,497,110,473,130,451,179,411,222,384,270,370,333,365,1811,365,1846,368,1875,376,1899,388,1920,405,1958,448,2000,504,2008,519,2011,533,2014,546,2023,558,2044,571,2068,578,2066,583,2042,575,2020,562,2009,548,2005,535,2003,521,1995,507,1953,452,1917,408,1897,392,1873,381,1845,373,1811,371,333,371,271,375,224,389,182,415,134,455,114,477,97,500,71,546"/>
<area shape="rect" href="classripple_1_1SHAMapTreeNode.html" title=" " alt="" coords="1373,481,1556,506"/>
<area shape="poly" title=" " alt="" coords="75,544,100,517,130,490,172,460,221,441,320,418,386,411,477,408,608,412,788,423,1350,472,1395,478,1394,483,1349,477,788,428,607,417,477,414,386,416,321,424,222,447,175,464,134,494,104,521,79,548"/>
<area shape="rect" href="structripple_1_1IntrusiveRefCounts.html" title="Implement the strong count, weak count, and bit flags for an intrusive pointer." alt="" coords="641,481,832,506"/>
<area shape="poly" title=" " alt="" coords="88,588,148,623,184,640,222,652,286,669,337,678,362,679,387,675,415,667,445,652,453,646,457,638,461,628,469,618,525,578,585,546,643,521,692,504,693,509,645,526,587,551,527,583,473,622,466,631,462,640,458,649,448,657,416,671,388,680,362,684,337,684,285,674,221,657,182,645,146,628,85,592"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/atomic/atomic.html" title=" " alt="" coords="231,457,437,482"/>
<area shape="poly" title=" " alt="" coords="97,549,220,499,283,479,285,485,222,504,99,554"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/container/array.html" title=" " alt="" coords="250,767,418,807"/>
<area shape="poly" title=" " alt="" coords="70,593,95,646,113,674,134,699,160,721,189,739,251,765,249,770,187,744,157,726,130,703,108,677,90,648,65,596"/>
<area shape="rect" href="structripple_1_1LedgerHeader.html" title="Information about the notional ledger backing the view." alt="" coords="1045,855,1204,881"/>
<area shape="poly" title=" " alt="" coords="67,595,90,668,109,710,134,749,154,774,172,791,193,804,222,816,328,825,560,838,1045,862,1045,867,559,843,328,830,221,821,191,809,169,795,150,777,130,752,105,713,85,670,61,596"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/container/map.html" title=" " alt="" coords="471,285,617,325"/>
<area shape="poly" title=" " alt="" coords="56,543,60,499,71,446,93,392,110,368,130,347,169,322,212,303,257,291,304,284,393,282,471,289,470,294,393,287,304,289,258,296,214,308,172,326,134,351,114,371,98,394,76,447,65,500,61,543"/>
<area shape="rect" href="classripple_1_1SharedIntrusive.html" title=" " alt="" coords="1703,473,1916,513"/>
<area shape="poly" title=" " alt="" coords="1916,514,1998,543,2022,558,2068,572,2066,577,2020,562,1996,548,1914,520"/>
<area shape="poly" title=" " alt="" coords="1570,491,1703,491,1703,496,1570,496"/>
<area shape="poly" title=" " alt="" coords="846,491,1373,491,1373,496,846,496"/>
<area shape="poly" title=" " alt="" coords="451,474,641,485,641,490,451,479"/>
<area shape="rect" href="classripple_1_1SHAMapHash.html" title=" " alt="" coords="1047,698,1202,723"/>
<area shape="poly" title=" " alt="" coords="1216,714,1251,711,1286,703,1319,690,1348,670,1356,660,1361,649,1362,628,1362,603,1371,576,1387,554,1406,534,1442,504,1446,508,1410,538,1391,557,1376,579,1367,604,1368,628,1366,651,1361,662,1351,674,1321,695,1287,709,1252,716,1216,719"/>
<area shape="rect" href="classripple_1_1base__uint.html" title=" " alt="" coords="666,751,807,791"/>
<area shape="poly" title=" " alt="" coords="820,745,856,737,955,723,1047,713,1047,719,956,728,856,743,821,750"/>
<area shape="poly" title=" " alt="" coords="818,792,857,801,927,814,998,827,1087,853,1085,858,997,832,926,819,855,807,817,797"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/types/size_t.html" title=" " alt="" coords="290,717,378,742"/>
<area shape="poly" title=" " alt="" coords="392,737,471,749,666,765,665,770,470,755,391,743"/>
<area shape="rect" href="classripple_1_1base__uint.html" title="Integers of any length that is a multiple of 32&#45;bits." alt="" coords="666,628,807,668"/>
<area shape="poly" title=" " alt="" coords="390,716,445,695,457,685,469,675,506,665,556,658,666,649,666,654,556,663,507,670,472,680,460,689,448,700,392,721"/>
<area shape="poly" title=" " alt="" coords="432,795,522,799,617,795,665,786,666,792,618,800,522,804,432,800"/>
<area shape="poly" title=" " alt="" coords="429,760,445,751,452,744,456,736,461,728,469,720,508,704,541,700,575,699,617,692,689,666,691,671,618,697,576,705,542,705,509,709,472,725,465,732,461,739,457,747,448,755,432,765"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/thread/mutex.html" title=" " alt="" coords="2083,523,2175,549"/>
<area shape="poly" title=" " alt="" coords="2189,539,2259,551,2334,571,2392,597,2439,625,2436,629,2390,602,2332,576,2258,556,2188,544"/>
<area shape="rect" href="structripple_1_1Fees.html" title="Reflects the fee settings for a particular ledger." alt="" coords="1252,945,1349,970"/>
<area shape="poly" title=" " alt="" coords="1333,935,1388,907,1460,876,1542,851,1585,844,1628,841,2130,841,2190,841,2237,838,2281,825,2332,798,2373,763,2407,722,2432,682,2448,652,2453,654,2437,685,2411,725,2377,767,2335,802,2283,830,2238,843,2190,847,2130,847,1628,847,1586,849,1543,857,1461,881,1390,912,1336,940"/>
<area shape="rect" href="classripple_1_1XRPAmount.html" title=" " alt="" coords="665,1010,808,1035"/>
<area shape="poly" title=" " alt="" coords="783,1038,819,1049,856,1057,927,1065,997,1057,1076,1039,1153,1015,1271,968,1273,973,1155,1020,1078,1045,998,1063,927,1070,856,1063,817,1054,781,1043"/>
<area shape="poly" title=" " alt="" coords="821,1014,908,999,953,987,996,970,1031,949,1063,924,1110,879,1114,883,1067,928,1034,953,999,974,955,992,909,1005,822,1020"/>
<area shape="rect" title=" " alt="" coords="251,1111,417,1151"/>
<area shape="poly" title=" " alt="" coords="429,1108,617,1060,700,1033,701,1038,618,1065,431,1113"/>
<area shape="rect" title=" " alt="" coords="221,882,447,907"/>
<area shape="poly" title=" " alt="" coords="408,908,447,917,497,927,536,932,575,943,619,966,631,981,643,995,669,1007,666,1012,640,999,627,984,616,970,573,948,535,938,496,932,446,923,406,913"/>
<area shape="rect" title=" " alt="" coords="229,932,439,972"/>
<area shape="poly" title=" " alt="" coords="453,969,618,997,671,1007,670,1013,617,1003,452,974"/>
<area shape="rect" title=" " alt="" coords="227,996,441,1036"/>
<area shape="poly" title=" " alt="" coords="455,1015,665,1019,665,1024,455,1021"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/types/integer.html" title=" " alt="" coords="287,1061,381,1086"/>
<area shape="poly" title=" " alt="" coords="395,1064,617,1037,665,1031,665,1036,618,1043,396,1069"/>
<area shape="rect" href="classripple_1_1Rules.html" title="Rules controlling protocol behavior." alt="" coords="2077,689,2180,714"/>
<area shape="poly" title=" " alt="" coords="2193,692,2333,671,2414,650,2415,655,2334,676,2194,697"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html" title=" " alt="" coords="1724,673,1895,713"/>
<area shape="poly" title=" " alt="" coords="1908,693,2077,697,2077,703,1908,698"/>
<area shape="rect" href="classripple_1_1Rules_1_1Impl.html" title=" " alt="" coords="1395,642,1535,667"/>
<area shape="poly" title=" " alt="" coords="1549,661,1724,681,1723,686,1548,667"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/container/unordered_set.html" title=" " alt="" coords="1021,619,1228,674"/>
<area shape="poly" title=" " alt="" coords="1242,647,1395,650,1395,656,1242,652"/>
<area shape="poly" title=" " alt="" coords="821,645,1021,644,1021,650,821,650"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/container/unordered_set.html" title=" " alt="" coords="1050,541,1199,595"/>
<area shape="poly" title=" " alt="" coords="820,628,1049,581,1051,586,821,633"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/utility/optional.html" title=" " alt="" coords="1047,748,1202,788"/>
<area shape="poly" title=" " alt="" coords="1215,762,1282,753,1348,734,1378,719,1406,701,1448,666,1452,670,1409,705,1381,723,1350,738,1283,758,1216,768"/>
<area shape="poly" title=" " alt="" coords="1214,588,1415,639,1413,645,1212,593"/>
<area shape="poly" title=" " alt="" coords="1167,848,1224,826,1297,804,1379,786,1463,779,2130,779,2178,775,2225,764,2271,747,2315,728,2389,686,2439,651,2442,655,2392,690,2317,733,2273,752,2227,769,2179,780,2130,784,1463,784,1380,791,1299,809,1226,831,1169,853"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/chrono/time_point.html" title=" " alt="" coords="651,945,823,985"/>
<area shape="poly" title=" " alt="" coords="836,953,915,941,997,921,1052,901,1098,878,1101,883,1054,906,998,927,916,946,837,958"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/chrono/duration.html" title=" " alt="" coords="659,881,815,921"/>
<area shape="poly" title=" " alt="" coords="828,891,1045,872,1045,877,829,896"/>
<area shape="poly" title=" " alt="" coords="2860,121,2933,148,3002,177,3000,182,2931,153,2858,126"/>
<area shape="poly" title=" " alt="" coords="631,301,925,299,2459,299,2584,292,2694,278,2694,283,2584,297,2459,304,925,304,631,307"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a1954c535064295e4e386a9c4542f6b73" id="r_a1954c535064295e4e386a9c4542f6b73"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a1954c535064295e4e386a9c4542f6b73">LedgerTrie</a> ()</td></tr>
<tr class="separator:a1954c535064295e4e386a9c4542f6b73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83e81099b1cded82b5d679a80f646ae2" id="r_a83e81099b1cded82b5d679a80f646ae2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a83e81099b1cded82b5d679a80f646ae2">insert</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;ledger, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> count=1)</td></tr>
<tr class="memdesc:a83e81099b1cded82b5d679a80f646ae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert and/or increment the support for the given ledger. <br /></td></tr>
<tr class="separator:a83e81099b1cded82b5d679a80f646ae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae39438d885031f58c1045ad727823121" id="r_ae39438d885031f58c1045ad727823121"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#ae39438d885031f58c1045ad727823121">remove</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;ledger, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> count=1)</td></tr>
<tr class="memdesc:ae39438d885031f58c1045ad727823121"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrease support for a ledger, removing and compressing if possible. <br /></td></tr>
<tr class="separator:ae39438d885031f58c1045ad727823121"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d723672c2cc27ee8815f4d3ce1d82eb" id="r_a6d723672c2cc27ee8815f4d3ce1d82eb"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a6d723672c2cc27ee8815f4d3ce1d82eb">tipSupport</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;ledger) const</td></tr>
<tr class="memdesc:a6d723672c2cc27ee8815f4d3ce1d82eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return count of tip support for the specific ledger. <br /></td></tr>
<tr class="separator:a6d723672c2cc27ee8815f4d3ce1d82eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab309fde8ae0efdd1945604cf12c7781e" id="r_ab309fde8ae0efdd1945604cf12c7781e"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#ab309fde8ae0efdd1945604cf12c7781e">branchSupport</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;ledger) const</td></tr>
<tr class="memdesc:ab309fde8ae0efdd1945604cf12c7781e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the count of branch support for the specific ledger. <br /></td></tr>
<tr class="separator:ab309fde8ae0efdd1945604cf12c7781e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaad699afb36cc8ad5b31f00c3cc38e4c" id="r_aaad699afb36cc8ad5b31f00c3cc38e4c"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="classripple_1_1SpanTip.html">SpanTip</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#aaad699afb36cc8ad5b31f00c3cc38e4c">getPreferred</a> (<a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a> const largestIssued) const</td></tr>
<tr class="memdesc:aaad699afb36cc8ad5b31f00c3cc38e4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the preferred ledger ID. <br /></td></tr>
<tr class="separator:aaad699afb36cc8ad5b31f00c3cc38e4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dabb9996f229ce5dfdb82fbf904d521" id="r_a2dabb9996f229ce5dfdb82fbf904d521"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a2dabb9996f229ce5dfdb82fbf904d521">empty</a> () const</td></tr>
<tr class="memdesc:a2dabb9996f229ce5dfdb82fbf904d521"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the trie is tracking any ledgers. <br /></td></tr>
<tr class="separator:a2dabb9996f229ce5dfdb82fbf904d521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd0c7972c24677cb940b1cab04c70abc" id="r_afd0c7972c24677cb940b1cab04c70abc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#afd0c7972c24677cb940b1cab04c70abc">dump</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;o) const</td></tr>
<tr class="memdesc:afd0c7972c24677cb940b1cab04c70abc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump an ascii representation of the trie to the stream. <br /></td></tr>
<tr class="separator:afd0c7972c24677cb940b1cab04c70abc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68e57b86e3de6d1cf969b6a883742bf2" id="r_a68e57b86e3de6d1cf969b6a883742bf2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classJson_1_1Value.html">Json::Value</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a68e57b86e3de6d1cf969b6a883742bf2">getJson</a> () const</td></tr>
<tr class="memdesc:a68e57b86e3de6d1cf969b6a883742bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump JSON representation of trie state. <br /></td></tr>
<tr class="separator:a68e57b86e3de6d1cf969b6a883742bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc1528ebb53bf5d632a17092eb7cefb8" id="r_afc1528ebb53bf5d632a17092eb7cefb8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#afc1528ebb53bf5d632a17092eb7cefb8">checkInvariants</a> () const</td></tr>
<tr class="memdesc:afc1528ebb53bf5d632a17092eb7cefb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check the compressed trie and support invariants. <br /></td></tr>
<tr class="separator:afc1528ebb53bf5d632a17092eb7cefb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-types" name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:ad462534d71954a7ef419b5610314557b" id="r_ad462534d71954a7ef419b5610314557b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a> = typename Ledger::Seq</td></tr>
<tr class="separator:ad462534d71954a7ef419b5610314557b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab41d93aab5b84df2e1f24ed5d0baea7f" id="r_ab41d93aab5b84df2e1f24ed5d0baea7f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#ab41d93aab5b84df2e1f24ed5d0baea7f">ID</a> = typename Ledger::ID</td></tr>
<tr class="separator:ab41d93aab5b84df2e1f24ed5d0baea7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3ce7d2d31f4ae1040733965cce01dee" id="r_ae3ce7d2d31f4ae1040733965cce01dee"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> = <a class="el" href="structripple_1_1ledger__trie__detail_1_1Node.html">ledger_trie_detail::Node</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;</td></tr>
<tr class="separator:ae3ce7d2d31f4ae1040733965cce01dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11ba5db581320a655d9fd8e0cd19a729" id="r_a11ba5db581320a655d9fd8e0cd19a729"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a11ba5db581320a655d9fd8e0cd19a729">Span</a> = <a class="el" href="classripple_1_1ledger__trie__detail_1_1Span.html">ledger_trie_detail::Span</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;</td></tr>
<tr class="separator:a11ba5db581320a655d9fd8e0cd19a729"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ad26194741fcff9862d8f4138a11aaf4e" id="r_ad26194741fcff9862d8f4138a11aaf4e"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> *, <a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#ad26194741fcff9862d8f4138a11aaf4e">find</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;ledger) const</td></tr>
<tr class="memdesc:ad26194741fcff9862d8f4138a11aaf4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the node in the trie that represents the longest common ancestry with the given ledger. <br /></td></tr>
<tr class="separator:ad26194741fcff9862d8f4138a11aaf4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e7dd3d44be538309834c6451a2d4192" id="r_a4e7dd3d44be538309834c6451a2d4192"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a4e7dd3d44be538309834c6451a2d4192">findByLedgerID</a> (<a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;ledger, <a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> *parent=nullptr) const</td></tr>
<tr class="memdesc:a4e7dd3d44be538309834c6451a2d4192"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the node in the trie with an exact match to the given ledger ID. <br /></td></tr>
<tr class="separator:a4e7dd3d44be538309834c6451a2d4192"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a173ea4de993a18f05375b2d9f76f26b6" id="r_a173ea4de993a18f05375b2d9f76f26b6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a173ea4de993a18f05375b2d9f76f26b6">dumpImpl</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;o, <a class="elRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr</a>&lt; <a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> &gt; const &amp;curr, int offset) const</td></tr>
<tr class="separator:a173ea4de993a18f05375b2d9f76f26b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a561f07091d0e839d9802f974a798d354" id="r_a561f07091d0e839d9802f974a798d354"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr</a>&lt; <a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#a561f07091d0e839d9802f974a798d354">root</a></td></tr>
<tr class="separator:a561f07091d0e839d9802f974a798d354"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6ee9a7592d27f4a6100efe8549d410b" id="r_aa6ee9a7592d27f4a6100efe8549d410b"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt; <a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a>, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1LedgerTrie.html#aa6ee9a7592d27f4a6100efe8549d410b">seqSupport</a></td></tr>
<tr class="separator:aa6ee9a7592d27f4a6100efe8549d410b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a>&gt;<br />
class ripple::LedgerTrie&lt; Ledger &gt;</div><p>Ancestry trie of ledgers. </p>
<p>A compressed trie tree that maintains validation support of recent ledgers based on their ancestry.</p>
<p>The compressed trie structure comes from recognizing that ledger history can be viewed as a string over the alphabet of ledger ids. That is, a given ledger with sequence number <code>seq</code> defines a length <code>seq</code> string, with i-th entry equal to the id of the ancestor ledger with sequence number i. "Sequence" strings with a common prefix share those ancestor ledgers in common. Tracking this ancestry information and relations across all validated ledgers is done conveniently in a compressed trie. A node in the trie is an ancestor of all its children. If a parent node has sequence number <code>seq</code>, each child node has a different ledger starting at <code>seq+1</code>. The compression comes from the invariant that any non-root node with 0 tip support has either no children or multiple children. In other words, a non-root 0-tip-support node can be combined with its single child.</p>
<p>Each node has a tipSupport, which is the number of current validations for that particular ledger. The node's branch support is the sum of the tip support and the branch support of that node's children: </p><pre class="fragment">@code
node-&gt;branchSupport = node-&gt;tipSupport;
for (child : node-&gt;children)
node-&gt;branchSupport += child-&gt;branchSupport;
@endcode
</pre><p> The templated <a class="el" href="classripple_1_1Ledger.html" title="Holds a ledger.">Ledger</a> type represents a ledger which has a unique history. It should be lightweight and cheap to copy.</p>
<div class="fragment"><div class="line"><span class="comment">// Identifier types that should be equality-comparable and copyable</span></div>
<div class="line"><span class="keyword">struct </span><a class="code hl_typedef" href="classripple_1_1LedgerTrie.html#ab41d93aab5b84df2e1f24ed5d0baea7f">ID</a>;</div>
<div class="line"><span class="keyword">struct </span><a class="code hl_typedef" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keyword">struct </span><a class="code hl_class" href="classripple_1_1Ledger.html">Ledger</a></div>
<div class="line">{</div>
<div class="line"> <span class="keyword">struct </span>MakeGenesis{};</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// The genesis ledger represents a ledger that prefixes all other</span></div>
<div class="line"> <span class="comment">// ledgers</span></div>
<div class="line"> <a class="code hl_class" href="classripple_1_1Ledger.html">Ledger</a>(MakeGenesis{});</div>
<div class="line"> </div>
<div class="line"> Ledger(Ledger <span class="keyword">const</span>&amp;);</div>
<div class="line"> Ledger&amp; operator=(Ledger <span class="keyword">const</span>&amp;);</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Return the sequence number of this ledger</span></div>
<div class="line"> Seq seq() <span class="keyword">const</span>;</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Return the ID of this ledger&#39;s ancestor with given sequence number</span></div>
<div class="line"> <span class="comment">// or ID{0} if unknown</span></div>
<div class="line"> ID</div>
<div class="line"> operator[](Seq s);</div>
<div class="line"> </div>
<div class="line">};</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Return the sequence number of the first possible mismatching ancestor</span></div>
<div class="line"><span class="comment">// between two ledgers</span></div>
<div class="line"><a class="code hl_typedef" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a></div>
<div class="line"><a class="code hl_function" href="namespaceripple.html#a509e1a7f41988fd7a09eb0bf94795967">mismatch</a>(ledgerA, ledgerB);</div>
<div class="ttc" id="aclassripple_1_1LedgerTrie_html_ab41d93aab5b84df2e1f24ed5d0baea7f"><div class="ttname"><a href="classripple_1_1LedgerTrie.html#ab41d93aab5b84df2e1f24ed5d0baea7f">ripple::LedgerTrie::ID</a></div><div class="ttdeci">typename Ledger::ID ID</div><div class="ttdef"><b>Definition</b> <a href="LedgerTrie_8h_source.html#l00334">LedgerTrie.h:334</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerTrie_html_ad462534d71954a7ef419b5610314557b"><div class="ttname"><a href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">ripple::LedgerTrie::Seq</a></div><div class="ttdeci">typename Ledger::Seq Seq</div><div class="ttdef"><b>Definition</b> <a href="LedgerTrie_8h_source.html#l00333">LedgerTrie.h:333</a></div></div>
<div class="ttc" id="aclassripple_1_1Ledger_html"><div class="ttname"><a href="classripple_1_1Ledger.html">ripple::Ledger</a></div><div class="ttdoc">Holds a ledger.</div><div class="ttdef"><b>Definition</b> <a href="Ledger_8h_source.html#l00057">Ledger.h:61</a></div></div>
<div class="ttc" id="anamespaceripple_html_a509e1a7f41988fd7a09eb0bf94795967"><div class="ttname"><a href="namespaceripple.html#a509e1a7f41988fd7a09eb0bf94795967">ripple::mismatch</a></div><div class="ttdeci">RCLValidatedLedger::Seq mismatch(RCLValidatedLedger const &amp;a, RCLValidatedLedger const &amp;b)</div><div class="ttdef"><b>Definition</b> <a href="RCLValidations_8cpp_source.html#l00080">RCLValidations.cpp:80</a></div></div>
</div><!-- fragment --><p>The unique history invariant of ledgers requires any ledgers that agree on the id of a given sequence number agree on ALL ancestors before that ledger: </p><pre class="fragment">@code
Ledger a,b;
// For all Seq s:
if(a[s] == b[s]);
for(Seq p = 0; p &lt; s; ++p)
assert(a[p] == b[p]);
@endcode
</pre> <dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname"><a class="el" href="classripple_1_1Ledger.html" title="Holds a ledger.">Ledger</a></td><td>A type representing a ledger and its history </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00331">331</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="ad462534d71954a7ef419b5610314557b" name="ad462534d71954a7ef419b5610314557b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad462534d71954a7ef419b5610314557b">&#9670;&#160;</a></span>Seq</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::Seq = typename Ledger::Seq</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00333">333</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="ab41d93aab5b84df2e1f24ed5d0baea7f" name="ab41d93aab5b84df2e1f24ed5d0baea7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab41d93aab5b84df2e1f24ed5d0baea7f">&#9670;&#160;</a></span>ID</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::ID = typename Ledger::ID</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00334">334</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="ae3ce7d2d31f4ae1040733965cce01dee" name="ae3ce7d2d31f4ae1040733965cce01dee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3ce7d2d31f4ae1040733965cce01dee">&#9670;&#160;</a></span>Node</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::Node = <a class="el" href="structripple_1_1ledger__trie__detail_1_1Node.html">ledger_trie_detail::Node</a>&lt;<a class="el" href="classripple_1_1Ledger.html">Ledger</a>&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00336">336</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a11ba5db581320a655d9fd8e0cd19a729" name="a11ba5db581320a655d9fd8e0cd19a729"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11ba5db581320a655d9fd8e0cd19a729">&#9670;&#160;</a></span>Span</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::Span = <a class="el" href="classripple_1_1ledger__trie__detail_1_1Span.html">ledger_trie_detail::Span</a>&lt;<a class="el" href="classripple_1_1Ledger.html">Ledger</a>&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00337">337</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a1954c535064295e4e386a9c4542f6b73" name="a1954c535064295e4e386a9c4542f6b73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1954c535064295e4e386a9c4542f6b73">&#9670;&#160;</a></span>LedgerTrie()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::LedgerTrie </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00424">424</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ad26194741fcff9862d8f4138a11aaf4e" name="ad26194741fcff9862d8f4138a11aaf4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad26194741fcff9862d8f4138a11aaf4e">&#9670;&#160;</a></span>find()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> *, <a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a> &gt; <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::find </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>ledger</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the node in the trie that represents the longest common ancestry with the given ledger. </p>
<dl class="section return"><dt>Returns</dt><dd>Pair of the found node and the sequence number of the first ledger difference. </dd></dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00353">353</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a4e7dd3d44be538309834c6451a2d4192" name="a4e7dd3d44be538309834c6451a2d4192"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e7dd3d44be538309834c6451a2d4192">&#9670;&#160;</a></span>findByLedgerID()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> * <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::findByLedgerID </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>ledger</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> *&#160;</td>
<td class="paramname"><em>parent</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the node in the trie with an exact match to the given ledger ID. </p>
<dl class="section return"><dt>Returns</dt><dd>the found node or nullptr if an exact match was not found.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>O(n) since this searches all nodes until a match is found </dd></dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00391">391</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a173ea4de993a18f05375b2d9f76f26b6" name="a173ea4de993a18f05375b2d9f76f26b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a173ea4de993a18f05375b2d9f76f26b6">&#9670;&#160;</a></span>dumpImpl()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::dumpImpl </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td>
<td class="paramname"><em>o</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr</a>&lt; <a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>curr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00407">407</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a83e81099b1cded82b5d679a80f646ae2" name="a83e81099b1cded82b5d679a80f646ae2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83e81099b1cded82b5d679a80f646ae2">&#9670;&#160;</a></span>insert()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>ledger</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>count</em> = <code>1</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert and/or increment the support for the given ledger. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ledger</td><td>A ledger and its ancestry </td></tr>
<tr><td class="paramname">count</td><td>The count of support for this ledger </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00434">434</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="ae39438d885031f58c1045ad727823121" name="ae39438d885031f58c1045ad727823121"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae39438d885031f58c1045ad727823121">&#9670;&#160;</a></span>remove()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>ledger</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td>
<td class="paramname"><em>count</em> = <code>1</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decrease support for a ledger, removing and compressing if possible. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ledger</td><td>The ledger history to remove </td></tr>
<tr><td class="paramname">count</td><td>The amount of tip support to remove</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether a matching node was decremented and possibly removed. </dd></dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00522">522</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a6d723672c2cc27ee8815f4d3ce1d82eb" name="a6d723672c2cc27ee8815f4d3ce1d82eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d723672c2cc27ee8815f4d3ce1d82eb">&#9670;&#160;</a></span>tipSupport()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::tipSupport </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>ledger</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return count of tip support for the specific ledger. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ledger</td><td>The ledger to lookup </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of entries in the trie for this <em>exact</em> ledger </dd></dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00578">578</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="ab309fde8ae0efdd1945604cf12c7781e" name="ab309fde8ae0efdd1945604cf12c7781e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab309fde8ae0efdd1945604cf12c7781e">&#9670;&#160;</a></span>branchSupport()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::branchSupport </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Ledger.html">Ledger</a> const &amp;&#160;</td>
<td class="paramname"><em>ledger</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the count of branch support for the specific ledger. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ledger</td><td>The ledger to lookup </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of entries in the trie for this ledger or a descendant </dd></dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00592">592</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="aaad699afb36cc8ad5b31f00c3cc38e4c" name="aaad699afb36cc8ad5b31f00c3cc38e4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaad699afb36cc8ad5b31f00c3cc38e4c">&#9670;&#160;</a></span>getPreferred()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="classripple_1_1SpanTip.html">SpanTip</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; &gt; <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::getPreferred </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a> const&#160;</td>
<td class="paramname"><em>largestIssued</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the preferred ledger ID. </p>
<p>The preferred ledger is used to determine the working ledger for consensus amongst competing alternatives.</p>
<p>Recall that each validator is normally validating a chain of ledgers, e.g. A-&gt;B-&gt;C-&gt;D. However, if due to network connectivity or other issues, validators generate different chains</p>
<div class="fragment"><div class="line"> /-&gt;C</div>
<div class="line">A-&gt;B</div>
<div class="line"> \-&gt;D-&gt;E</div>
</div><!-- fragment --><p>we need a way for validators to converge on the chain with the most support. We call this the preferred ledger. Intuitively, the idea is to be conservative and only switch to a different branch when you see enough peer validations to <em>know</em> another branch won't have preferred support.</p>
<p>The preferred ledger is found by walking this tree of validated ledgers starting from the common ancestor ledger.</p>
<p>At each sequence number, we have</p>
<ul>
<li>The prior sequence preferred ledger, e.g. B.</li>
<li>The (tip) support of ledgers with this sequence number,e.g. the number of validators whose last validation was for C or D.</li>
<li>The (branch) total support of all descendants of the current sequence number ledgers, e.g. the branch support of D is the tip support of D plus the tip support of E; the branch support of C is just the tip support of C.</li>
<li>The number of validators that have yet to validate a ledger with this sequence number (uncommitted support). Uncommitted includes all validators whose last sequence number is smaller than our last issued sequence number, since due to asynchrony, we may not have heard from those nodes yet.</li>
</ul>
<p>The preferred ledger for this sequence number is then the ledger with relative majority of support, where uncommitted support can be given to ANY ledger at that sequence number (including one not yet known). If no such preferred ledger exists, then the prior sequence preferred ledger is the overall preferred ledger.</p>
<p>In this example, for D to be preferred, the number of validators supporting it or a descendant must exceed the number of validators supporting C <em>plus</em> the current uncommitted support. This is because if all uncommitted validators end up validating C, that new support must be less than that for D to be preferred.</p>
<p>If a preferred ledger does exist, then we continue with the next sequence using that ledger as the root.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">largestIssued</td><td>The sequence number of the largest validation issued by this node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pair with the sequence number and ID of the preferred ledger or <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a> if no preferred ledger exists </dd></dl>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00666">666</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a2dabb9996f229ce5dfdb82fbf904d521" name="a2dabb9996f229ce5dfdb82fbf904d521"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2dabb9996f229ce5dfdb82fbf904d521">&#9670;&#160;</a></span>empty()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::empty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return whether the trie is tracking any ledgers. </p>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00764">764</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="afd0c7972c24677cb940b1cab04c70abc" name="afd0c7972c24677cb940b1cab04c70abc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd0c7972c24677cb940b1cab04c70abc">&#9670;&#160;</a></span>dump()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::dump </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td>
<td class="paramname"><em>o</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump an ascii representation of the trie to the stream. </p>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00772">772</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="a68e57b86e3de6d1cf969b6a883742bf2" name="a68e57b86e3de6d1cf969b6a883742bf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68e57b86e3de6d1cf969b6a883742bf2">&#9670;&#160;</a></span>getJson()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classJson_1_1Value.html">Json::Value</a> <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::getJson </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump JSON representation of trie state. </p>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00780">780</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="afc1528ebb53bf5d632a17092eb7cefb8" name="afc1528ebb53bf5d632a17092eb7cefb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc1528ebb53bf5d632a17092eb7cefb8">&#9670;&#160;</a></span>checkInvariants()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::checkInvariants </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check the compressed trie and support invariants. </p>
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00793">793</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a561f07091d0e839d9802f974a798d354" name="a561f07091d0e839d9802f974a798d354"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a561f07091d0e839d9802f974a798d354">&#9670;&#160;</a></span>root</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr</a>&lt;<a class="el" href="classripple_1_1LedgerTrie.html#ae3ce7d2d31f4ae1040733965cce01dee">Node</a>&gt; <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::root</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00341">341</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
<a id="aa6ee9a7592d27f4a6100efe8549d410b" name="aa6ee9a7592d27f4a6100efe8549d410b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6ee9a7592d27f4a6100efe8549d410b">&#9670;&#160;</a></span>seqSupport</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/container/map.html">std::map</a>&lt;<a class="el" href="classripple_1_1LedgerTrie.html#ad462534d71954a7ef419b5610314557b">Seq</a>, <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&gt; <a class="el" href="classripple_1_1LedgerTrie.html">ripple::LedgerTrie</a>&lt; <a class="el" href="classripple_1_1Ledger.html">Ledger</a> &gt;::seqSupport</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="LedgerTrie_8h_source.html#l00344">344</a> of file <a class="el" href="LedgerTrie_8h_source.html">LedgerTrie.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>