From f426cf649067bd9a4278e2c642e0ffcdaa6e1dfe Mon Sep 17 00:00:00 2001 From: intelliot Date: Wed, 7 Feb 2024 22:01:12 +0000 Subject: [PATCH] deploy: be12136b8aa21926b45b3162249410f8779d2467 --- AMMBid_8cpp_source.html | 382 +- AMMBid_8h_source.html | 2 +- AMMCore_8cpp_source.html | 2 +- AMMCore_8h_source.html | 2 +- AMMCreate_8cpp_source.html | 4 +- AMMDelete_8cpp_source.html | 4 +- AMMDeposit_8cpp_source.html | 4 +- AMMExtended__test_8cpp_source.html | 14 +- AMMInfo_8cpp_source.html | 108 +- AMMInfo__test_8cpp_source.html | 18 +- AMMLiquidity_8cpp_source.html | 2 +- AMMTest_8cpp_source.html | 2 +- AMMTest_8h_source.html | 2 +- AMMUtils_8cpp_source.html | 401 +- AMMUtils_8h_source.html | 6 +- AMMVote_8cpp_source.html | 300 +- AMMVote_8h_source.html | 2 +- AMMWithdraw_8cpp_source.html | 4 +- AMM_8cpp_source.html | 1585 +++---- AMM_8h_source.html | 818 ++-- AMM__test_8cpp_source.html | 246 +- AccountLinesRPC__test_8cpp_source.html | 4 +- AccountLines_8cpp_source.html | 4 +- AccountObjects__test_8cpp_source.html | 2 +- AmendmentTable_8h_source.html | 2 +- ApplyStateTable_8cpp_source.html | 8 +- CancelCheck_8cpp_source.html | 2 +- CancelOffer_8cpp_source.html | 2 +- CashCheck_8cpp_source.html | 4 +- Change_8cpp_source.html | 20 +- Clawback_8cpp_source.html | 2 +- CreateCheck_8cpp_source.html | 10 +- CreateOffer_8cpp_source.html | 4 +- CreateTicket_8cpp_source.html | 2 +- DID_8cpp_source.html | 6 +- DeleteAccount_8cpp_source.html | 2 +- DepositPreauth_8cpp_source.html | 2 +- Escrow_8cpp_source.html | 2 +- Feature_8cpp_source.html | 146 +- Feature_8h_source.html | 12 +- Hooks__test_8cpp_source.html | 2 +- InnerObjectFormats_8cpp_source.html | 263 +- InnerObjectFormats_8h_source.html | 6 +- InvariantCheck_8cpp_source.html | 4 +- Invariants__test_8cpp_source.html | 2 +- JSONRPC__test_8cpp_source.html | 4 +- KnownFormats_8h_source.html | 2 +- LedgerReplayMsgHandler_8cpp_source.html | 2 +- LedgerToJson_8cpp_source.html | 6 +- Ledger_8cpp_source.html | 6 +- Manifest__test_8cpp_source.html | 6 +- MultiSign__test_8cpp_source.html | 10 +- NFTokenAcceptOffer_8cpp_source.html | 2 +- NFTokenBurn_8cpp_source.html | 6 +- NFTokenCancelOffer_8cpp_source.html | 6 +- NFTokenCreateOffer_8cpp_source.html | 4 +- NFTokenID_8cpp_source.html | 8 +- NFTokenMint_8cpp_source.html | 14 +- NFTokenOfferID_8cpp_source.html | 2 +- NFTokenUtils_8cpp_source.html | 4 +- NFTokenUtils_8h_source.html | 2 +- NetworkOPs_8cpp_source.html | 2 +- NoRippleCheck_8cpp_source.html | 2 +- OrderBookDB_8cpp_source.html | 2 +- Path__test_8cpp_source.html | 2 +- PayChan_8cpp_source.html | 2 +- Payment_8cpp_source.html | 10 +- RCLValidations_8cpp_source.html | 4 +- RPCHelpers_8cpp_source.html | 4 +- SOTemplate_8cpp_source.html | 4 +- SOTemplate_8h_source.html | 226 +- STArray_8cpp_source.html | 2 +- STArray_8h_source.html | 2 +- STExchange_8h_source.html | 8 +- STLedgerEntry_8cpp_source.html | 26 +- STLedgerEntry_8h_source.html | 2 +- STObject_8cpp_source.html | 1756 ++++---- STObject_8h_source.html | 2310 +++++------ STObject__test_8cpp_source.html | 30 +- STParsedJSON_8cpp_source.html | 4 +- STTx_8cpp_source.html | 44 +- STTx_8h_source.html | 4 +- STTx__test_8cpp_source.html | 28 +- STValidation_8cpp_source.html | 14 +- STValidation_8h_source.html | 16 +- STXChainBridge_8cpp_source.html | 2 +- STXChainBridge_8h_source.html | 2 +- SetAccount_8cpp_source.html | 4 +- SetRegularKey_8cpp_source.html | 6 +- SetSignerList_8cpp_source.html | 14 +- SetTrust_8cpp_source.html | 8 +- Sign_8cpp_source.html | 4 +- SignerEntries_8cpp_source.html | 6 +- SignerEntries_8h_source.html | 2 +- TransactionSign_8cpp_source.html | 6 +- Transactor_8cpp_source.html | 16 +- TrustedPublisherServer_8h_source.html | 4 +- TxMeta_8cpp_source.html | 30 +- TxMeta_8h_source.html | 4 +- TxQ_8cpp_source.html | 4 +- ValidatorList__test_8cpp_source.html | 4 +- View_8cpp_source.html | 16 +- XChainAttestations_8cpp_source.html | 2 +- XChainAttestations_8h_source.html | 2 +- XChainBridge_8cpp_source.html | 2 +- annotated.html | 125 +- app_2misc_2impl_2Manifest_8cpp_source.html | 10 +- classes.html | 2250 +++++----- classripple_1_1AMMBid.html | 2 +- classripple_1_1AMMVote.html | 2 +- classripple_1_1InnerObjectFormats.html | 4 +- classripple_1_1SOElement.html | 12 +- classripple_1_1SOTemplate.html | 18 +- classripple_1_1STLedgerEntry-members.html | 155 +- classripple_1_1STLedgerEntry.html | 238 +- classripple_1_1STObject-members.html | 131 +- classripple_1_1STObject.html | 270 +- classripple_1_1STObject_1_1FieldErr.html | 2 +- classripple_1_1STObject_1_1OptionalProxy.html | 52 +- classripple_1_1STObject_1_1Proxy.html | 18 +- classripple_1_1STObject_1_1ValueProxy.html | 12 +- classripple_1_1STTx-members.html | 161 +- classripple_1_1STTx.html | 236 +- classripple_1_1STValidation-members.html | 157 +- classripple_1_1STValidation.html | 246 +- ...sripple_1_1test_1_1jtx_1_1AMM-members.html | 91 +- classripple_1_1test_1_1jtx_1_1AMM.html | 312 +- compression__test_8cpp_source.html | 4 +- functions_a.html | 75 +- functions_b.html | 24 +- functions_c.html | 41 +- functions_d.html | 6 +- functions_e.html | 21 +- functions_f.html | 18 +- functions_func.html | 40 +- functions_func_b.html | 24 +- functions_func_d.html | 10 +- functions_func_g.html | 2 +- functions_func_m.html | 19 +- functions_func_o.html | 14 +- functions_func_p.html | 10 +- functions_func_s.html | 10 +- functions_func_t.html | 49 +- functions_func_w.html | 12 +- functions_g.html | 2 +- functions_l.html | 21 +- functions_m.html | 24 +- functions_n.html | 2 +- functions_o.html | 4 +- functions_p.html | 8 +- functions_s.html | 73 +- functions_t.html | 58 +- functions_v.html | 18 +- functions_vars.html | 25 + functions_vars_b.html | 6 + functions_vars_c.html | 3 + functions_vars_e.html | 7 + functions_vars_f.html | 6 + functions_vars_l.html | 3 + functions_vars_m.html | 7 + functions_vars_s.html | 5 + functions_vars_t.html | 9 + functions_w.html | 8 +- hierarchy.html | 3427 +++++++-------- inherit_graph_14.md5 | 2 +- inherit_graph_15.md5 | 2 +- inherit_graph_160.md5 | 2 +- inherit_graph_251.md5 | 2 +- inherit_graph_261.md5 | 2 +- inherit_graph_263.md5 | 2 +- inherit_graph_272.md5 | 2 +- inherit_graph_276.md5 | 2 +- inherit_graph_283.md5 | 2 +- inherit_graph_311.md5 | 2 +- inherit_graph_34.md5 | 2 +- inherit_graph_36.md5 | 2 +- inherit_graph_42.md5 | 2 +- inherit_graph_434.md5 | 2 +- inherit_graph_495.md5 | 2 +- inherit_graph_514.md5 | 2 +- inherit_graph_525.md5 | 2 +- inherit_graph_535.md5 | 2 +- inherit_graph_546.md5 | 2 +- inherit_graph_602.md5 | 2 +- inherit_graph_618.md5 | 2 +- inherit_graph_64.md5 | 2 +- inherit_graph_711.md5 | 2 +- inherit_graph_760.map | 2 +- inherit_graph_760.md5 | 2 +- inherit_graph_760.png | Bin 2077 -> 1916 bytes inherit_graph_761.map | 2 +- inherit_graph_761.md5 | 2 +- inherit_graph_761.png | Bin 1820 -> 2077 bytes inherit_graph_762.map | 2 +- inherit_graph_762.md5 | 2 +- inherit_graph_762.png | Bin 2160 -> 1820 bytes inherit_graph_763.map | 2 +- inherit_graph_763.md5 | 2 +- inherit_graph_763.png | Bin 1795 -> 2160 bytes inherit_graph_764.map | 2 +- inherit_graph_764.md5 | 2 +- inherit_graph_764.png | Bin 1820 -> 1795 bytes inherit_graph_765.map | 2 +- inherit_graph_765.md5 | 2 +- inherit_graph_765.png | Bin 1882 -> 2007 bytes inherit_graph_766.map | 2 +- inherit_graph_766.md5 | 2 +- inherit_graph_766.png | Bin 2204 -> 1820 bytes inherit_graph_767.map | 4 +- inherit_graph_767.md5 | 2 +- inherit_graph_767.png | Bin 7061 -> 2108 bytes inherit_graph_768.map | 2 +- inherit_graph_768.md5 | 2 +- inherit_graph_768.png | Bin 1621 -> 1882 bytes inherit_graph_769.map | 2 +- inherit_graph_769.md5 | 2 +- inherit_graph_769.png | Bin 2000 -> 2204 bytes inherit_graph_770.map | 4 +- inherit_graph_770.md5 | 2 +- inherit_graph_770.png | Bin 1554 -> 7061 bytes inherit_graph_771.map | 2 +- inherit_graph_771.md5 | 2 +- inherit_graph_771.png | Bin 1768 -> 1621 bytes inherit_graph_772.map | 2 +- inherit_graph_772.md5 | 2 +- inherit_graph_772.png | Bin 1612 -> 2000 bytes inherit_graph_773.map | 2 +- inherit_graph_773.md5 | 2 +- inherit_graph_773.png | Bin 1452 -> 1554 bytes inherit_graph_774.map | 2 +- inherit_graph_774.md5 | 2 +- inherit_graph_774.png | Bin 2110 -> 1768 bytes inherit_graph_775.map | 2 +- inherit_graph_775.md5 | 2 +- inherit_graph_775.png | Bin 1665 -> 1612 bytes inherit_graph_776.map | 2 +- inherit_graph_776.md5 | 2 +- inherit_graph_776.png | Bin 2586 -> 1452 bytes inherit_graph_777.map | 2 +- inherit_graph_777.md5 | 2 +- inherit_graph_777.png | Bin 1675 -> 2110 bytes inherit_graph_778.map | 2 +- inherit_graph_778.md5 | 2 +- inherit_graph_778.png | Bin 1874 -> 1665 bytes inherit_graph_779.map | 2 +- inherit_graph_779.md5 | 2 +- inherit_graph_779.png | Bin 1307 -> 2586 bytes inherit_graph_780.map | 2 +- inherit_graph_780.md5 | 2 +- inherit_graph_780.png | Bin 1846 -> 1675 bytes inherit_graph_781.map | 2 +- inherit_graph_781.md5 | 2 +- inherit_graph_781.png | Bin 1773 -> 1874 bytes inherit_graph_782.map | 2 +- inherit_graph_782.md5 | 2 +- inherit_graph_782.png | Bin 1929 -> 1307 bytes inherit_graph_783.map | 2 +- inherit_graph_783.md5 | 2 +- inherit_graph_783.png | Bin 1531 -> 1846 bytes inherit_graph_784.map | 2 +- inherit_graph_784.md5 | 2 +- inherit_graph_784.png | Bin 1577 -> 1773 bytes inherit_graph_785.map | 2 +- inherit_graph_785.md5 | 2 +- inherit_graph_785.png | Bin 1290 -> 1929 bytes inherit_graph_786.map | 2 +- inherit_graph_786.md5 | 2 +- inherit_graph_786.png | Bin 1797 -> 1531 bytes inherit_graph_787.map | 2 +- inherit_graph_787.md5 | 2 +- inherit_graph_787.png | Bin 2038 -> 1577 bytes inherit_graph_788.map | 2 +- inherit_graph_788.md5 | 2 +- inherit_graph_788.png | Bin 1788 -> 1290 bytes inherit_graph_789.map | 2 +- inherit_graph_789.md5 | 2 +- inherit_graph_789.png | Bin 1489 -> 1797 bytes inherit_graph_790.map | 2 +- inherit_graph_790.md5 | 2 +- inherit_graph_790.png | Bin 1874 -> 2038 bytes inherit_graph_791.map | 2 +- inherit_graph_791.md5 | 2 +- inherit_graph_791.png | Bin 1805 -> 1788 bytes inherit_graph_792.map | 2 +- inherit_graph_792.md5 | 2 +- inherit_graph_792.png | Bin 1936 -> 1489 bytes inherit_graph_793.map | 2 +- inherit_graph_793.md5 | 2 +- inherit_graph_793.png | Bin 1865 -> 1874 bytes inherit_graph_794.map | 2 +- inherit_graph_794.md5 | 2 +- inherit_graph_794.png | Bin 1934 -> 1805 bytes inherit_graph_795.map | 2 +- inherit_graph_795.md5 | 2 +- inherit_graph_795.png | Bin 1874 -> 1936 bytes inherit_graph_796.map | 2 +- inherit_graph_796.md5 | 2 +- inherit_graph_796.png | Bin 1507 -> 1865 bytes inherit_graph_797.map | 2 +- inherit_graph_797.md5 | 2 +- inherit_graph_797.png | Bin 1815 -> 1934 bytes inherit_graph_798.map | 2 +- inherit_graph_798.md5 | 2 +- inherit_graph_798.png | Bin 1557 -> 1874 bytes inherit_graph_799.map | 2 +- inherit_graph_799.md5 | 2 +- inherit_graph_799.png | Bin 1606 -> 1507 bytes inherit_graph_800.map | 2 +- inherit_graph_800.md5 | 2 +- inherit_graph_800.png | Bin 2715 -> 1815 bytes inherit_graph_801.map | 2 +- inherit_graph_801.md5 | 2 +- inherit_graph_801.png | Bin 1845 -> 1557 bytes inherit_graph_802.map | 2 +- inherit_graph_802.md5 | 2 +- inherit_graph_802.png | Bin 1396 -> 1606 bytes inherit_graph_803.map | 2 +- inherit_graph_803.md5 | 2 +- inherit_graph_803.png | Bin 1657 -> 2715 bytes inherit_graph_804.map | 2 +- inherit_graph_804.md5 | 2 +- inherit_graph_804.png | Bin 2192 -> 1845 bytes inherit_graph_805.map | 2 +- inherit_graph_805.md5 | 2 +- inherit_graph_805.png | Bin 1960 -> 1396 bytes inherit_graph_806.map | 2 +- inherit_graph_806.md5 | 2 +- inherit_graph_806.png | Bin 1895 -> 1657 bytes inherit_graph_807.map | 2 +- inherit_graph_807.md5 | 2 +- inherit_graph_807.png | Bin 2457 -> 2192 bytes inherit_graph_808.map | 2 +- inherit_graph_808.md5 | 2 +- inherit_graph_808.png | Bin 2029 -> 1960 bytes inherit_graph_809.map | 2 +- inherit_graph_809.md5 | 2 +- inherit_graph_809.png | Bin 2495 -> 1895 bytes inherit_graph_810.map | 2 +- inherit_graph_810.md5 | 2 +- inherit_graph_810.png | Bin 1632 -> 2457 bytes inherit_graph_811.map | 2 +- inherit_graph_811.md5 | 2 +- inherit_graph_811.png | Bin 1868 -> 2029 bytes inherit_graph_812.map | 2 +- inherit_graph_812.md5 | 2 +- inherit_graph_812.png | Bin 1490 -> 2495 bytes inherit_graph_813.map | 2 +- inherit_graph_813.md5 | 2 +- inherit_graph_813.png | Bin 1540 -> 1632 bytes inherit_graph_814.map | 2 +- inherit_graph_814.md5 | 2 +- inherit_graph_814.png | Bin 1728 -> 1868 bytes inherit_graph_815.map | 2 +- inherit_graph_815.md5 | 2 +- inherit_graph_815.png | Bin 2157 -> 1490 bytes inherit_graph_816.map | 2 +- inherit_graph_816.md5 | 2 +- inherit_graph_816.png | Bin 1470 -> 1540 bytes inherit_graph_817.map | 2 +- inherit_graph_817.md5 | 2 +- inherit_graph_817.png | Bin 1211 -> 1728 bytes inherit_graph_818.map | 2 +- inherit_graph_818.md5 | 2 +- inherit_graph_818.png | Bin 1718 -> 2157 bytes inherit_graph_819.map | 2 +- inherit_graph_819.md5 | 2 +- inherit_graph_819.png | Bin 1805 -> 1470 bytes inherit_graph_820.map | 2 +- inherit_graph_820.md5 | 2 +- inherit_graph_820.png | Bin 2242 -> 1211 bytes inherit_graph_821.map | 2 +- inherit_graph_821.md5 | 2 +- inherit_graph_821.png | Bin 2024 -> 1718 bytes inherit_graph_822.map | 2 +- inherit_graph_822.md5 | 2 +- inherit_graph_822.png | Bin 1836 -> 1805 bytes inherit_graph_823.map | 2 +- inherit_graph_823.md5 | 2 +- inherit_graph_823.png | Bin 1911 -> 2242 bytes inherit_graph_824.map | 2 +- inherit_graph_824.md5 | 2 +- inherit_graph_824.png | Bin 1988 -> 2024 bytes inherit_graph_825.map | 2 +- inherit_graph_825.md5 | 2 +- inherit_graph_825.png | Bin 1764 -> 1836 bytes inherit_graph_826.map | 2 +- inherit_graph_826.md5 | 2 +- inherit_graph_826.png | Bin 1890 -> 1911 bytes inherit_graph_827.map | 2 +- inherit_graph_827.md5 | 2 +- inherit_graph_827.png | Bin 1793 -> 1988 bytes inherit_graph_828.map | 266 +- inherit_graph_828.md5 | 2 +- inherit_graph_828.png | Bin 2058062 -> 1764 bytes inherit_graph_829.map | 2 +- inherit_graph_829.md5 | 2 +- inherit_graph_829.png | Bin 1733 -> 1890 bytes inherit_graph_830.map | 2 +- inherit_graph_830.md5 | 2 +- inherit_graph_830.png | Bin 2470 -> 1793 bytes inherit_graph_831.map | 2 +- inherit_graph_831.md5 | 2 +- inherit_graph_831.png | Bin 1744 -> 1976 bytes inherit_graph_832.map | 2 +- inherit_graph_832.md5 | 2 +- inherit_graph_832.png | Bin 2316 -> 2446 bytes inherit_graph_833.map | 266 +- inherit_graph_833.md5 | 2 +- inherit_graph_833.png | Bin 1183 -> 2058062 bytes inherit_graph_834.map | 2 +- inherit_graph_834.md5 | 2 +- inherit_graph_834.png | Bin 1963 -> 1733 bytes inherit_graph_835.map | 4 +- inherit_graph_835.md5 | 2 +- inherit_graph_835.png | Bin 5981 -> 2470 bytes inherit_graph_836.map | 2 +- inherit_graph_836.md5 | 2 +- inherit_graph_836.png | Bin 1587 -> 1744 bytes inherit_graph_837.map | 2 +- inherit_graph_837.md5 | 2 +- inherit_graph_837.png | Bin 1864 -> 2316 bytes inherit_graph_838.map | 2 +- inherit_graph_838.md5 | 2 +- inherit_graph_838.png | Bin 2390 -> 1183 bytes inherit_graph_839.map | 2 +- inherit_graph_839.md5 | 2 +- inherit_graph_839.png | Bin 1933 -> 1963 bytes inherit_graph_840.map | 4 +- inherit_graph_840.md5 | 2 +- inherit_graph_840.png | Bin 2025 -> 5981 bytes inherit_graph_841.map | 2 +- inherit_graph_841.md5 | 2 +- inherit_graph_841.png | Bin 1405 -> 1587 bytes inherit_graph_842.map | 2 +- inherit_graph_842.md5 | 2 +- inherit_graph_842.png | Bin 2077 -> 1864 bytes inherit_graph_843.map | 2 +- inherit_graph_843.md5 | 2 +- inherit_graph_843.png | Bin 1477 -> 2390 bytes inherit_graph_844.map | 2 +- inherit_graph_844.md5 | 2 +- inherit_graph_844.png | Bin 2512 -> 1933 bytes inherit_graph_845.map | 2 +- inherit_graph_845.md5 | 2 +- inherit_graph_845.png | Bin 2441 -> 2025 bytes inherit_graph_846.map | 2 +- inherit_graph_846.md5 | 2 +- inherit_graph_846.png | Bin 2158 -> 1405 bytes inherit_graph_847.map | 2 +- inherit_graph_847.md5 | 2 +- inherit_graph_847.png | Bin 1936 -> 2077 bytes inherit_graph_848.map | 2 +- inherit_graph_848.md5 | 2 +- inherit_graph_848.png | Bin 2050 -> 1477 bytes inherit_graph_849.map | 2 +- inherit_graph_849.md5 | 2 +- inherit_graph_849.png | Bin 1971 -> 2512 bytes inherit_graph_850.map | 3 +- inherit_graph_850.md5 | 2 +- inherit_graph_850.png | Bin 3643 -> 2441 bytes inherit_graph_851.map | 2 +- inherit_graph_851.md5 | 2 +- inherit_graph_851.png | Bin 1724 -> 2158 bytes inherit_graph_852.map | 2 +- inherit_graph_852.md5 | 2 +- inherit_graph_852.png | Bin 2003 -> 1936 bytes inherit_graph_853.map | 2 +- inherit_graph_853.md5 | 2 +- inherit_graph_853.png | Bin 1998 -> 2050 bytes inherit_graph_854.map | 2 +- inherit_graph_854.md5 | 2 +- inherit_graph_854.png | Bin 2515 -> 1971 bytes inherit_graph_855.map | 3 +- inherit_graph_855.md5 | 2 +- inherit_graph_855.png | Bin 2454 -> 3643 bytes inherit_graph_856.map | 2 +- inherit_graph_856.md5 | 2 +- inherit_graph_856.png | Bin 2658 -> 1724 bytes inherit_graph_857.map | 2 +- inherit_graph_857.md5 | 2 +- inherit_graph_857.png | Bin 1624 -> 2003 bytes inherit_graph_858.map | 2 +- inherit_graph_858.md5 | 2 +- inherit_graph_858.png | Bin 2010 -> 1998 bytes inherit_graph_859.map | 2 +- inherit_graph_859.md5 | 2 +- inherit_graph_859.png | Bin 2747 -> 2515 bytes inherit_graph_860.map | 2 +- inherit_graph_860.md5 | 2 +- inherit_graph_860.png | Bin 2310 -> 2454 bytes inherit_graph_861.map | 2 +- inherit_graph_861.md5 | 2 +- inherit_graph_861.png | Bin 2712 -> 2658 bytes inherit_graph_862.map | 2 +- inherit_graph_862.md5 | 2 +- inherit_graph_862.png | Bin 2886 -> 1624 bytes inherit_graph_863.map | 2 +- inherit_graph_863.md5 | 2 +- inherit_graph_863.png | Bin 2358 -> 2010 bytes inherit_graph_864.map | 2 +- inherit_graph_864.md5 | 2 +- inherit_graph_864.png | Bin 3805 -> 2747 bytes inherit_graph_865.map | 2 +- inherit_graph_865.md5 | 2 +- inherit_graph_865.png | Bin 3080 -> 2310 bytes inherit_graph_866.map | 2 +- inherit_graph_866.md5 | 2 +- inherit_graph_866.png | Bin 2606 -> 2712 bytes inherit_graph_867.map | 3 +- inherit_graph_867.md5 | 2 +- inherit_graph_867.png | Bin 4466 -> 2886 bytes inherit_graph_868.map | 3 +- inherit_graph_868.md5 | 2 +- inherit_graph_868.png | Bin 3449 -> 2358 bytes inherit_graph_869.map | 2 +- inherit_graph_869.md5 | 2 +- inherit_graph_869.png | Bin 2780 -> 3805 bytes inherit_graph_870.map | 2 +- inherit_graph_870.md5 | 2 +- inherit_graph_870.png | Bin 2341 -> 3080 bytes inherit_graph_871.map | 2 +- inherit_graph_871.md5 | 2 +- inherit_graph_871.png | Bin 2536 -> 2606 bytes inherit_graph_872.map | 3 +- inherit_graph_872.md5 | 2 +- inherit_graph_872.png | Bin 2043 -> 4466 bytes inherit_graph_873.map | 3 +- inherit_graph_873.md5 | 2 +- inherit_graph_873.png | Bin 2059 -> 3449 bytes inherit_graph_874.map | 17 +- inherit_graph_874.md5 | 2 +- inherit_graph_874.png | Bin 62359 -> 2780 bytes inherit_graph_875.map | 2 +- inherit_graph_875.md5 | 2 +- inherit_graph_875.png | Bin 2658 -> 2341 bytes inherit_graph_876.map | 4 +- inherit_graph_876.md5 | 2 +- inherit_graph_876.png | Bin 8577 -> 2536 bytes inherit_graph_877.map | 2 +- inherit_graph_877.md5 | 2 +- inherit_graph_877.png | Bin 2306 -> 2043 bytes inherit_graph_878.map | 3 +- inherit_graph_878.md5 | 2 +- inherit_graph_878.png | Bin 4359 -> 2059 bytes inherit_graph_879.map | 18 +- inherit_graph_879.md5 | 2 +- inherit_graph_879.png | Bin 3693 -> 62359 bytes inherit_graph_880.map | 2 +- inherit_graph_880.md5 | 2 +- inherit_graph_880.png | Bin 3123 -> 2658 bytes inherit_graph_881.map | 4 +- inherit_graph_881.md5 | 2 +- inherit_graph_881.png | Bin 1858 -> 8577 bytes inherit_graph_882.map | 2 +- inherit_graph_882.md5 | 2 +- inherit_graph_882.png | Bin 2537 -> 2306 bytes inherit_graph_883.map | 3 +- inherit_graph_883.md5 | 2 +- inherit_graph_883.png | Bin 2894 -> 4359 bytes inherit_graph_884.map | 3 +- inherit_graph_884.md5 | 2 +- inherit_graph_884.png | Bin 1789 -> 3693 bytes inherit_graph_885.map | 2 +- inherit_graph_885.md5 | 2 +- inherit_graph_885.png | Bin 2281 -> 3123 bytes inherit_graph_886.map | 2 +- inherit_graph_886.md5 | 2 +- inherit_graph_886.png | Bin 1898 -> 1858 bytes inherit_graph_887.map | 2 +- inherit_graph_887.md5 | 2 +- inherit_graph_887.png | Bin 1700 -> 2537 bytes inherit_graph_888.map | 44 +- inherit_graph_888.md5 | 2 +- inherit_graph_888.png | Bin 259868 -> 2894 bytes inherit_graph_889.map | 2 +- inherit_graph_889.md5 | 2 +- inherit_graph_889.png | Bin 1679 -> 1789 bytes inherit_graph_890.map | 2 +- inherit_graph_890.md5 | 2 +- inherit_graph_890.png | Bin 1565 -> 2281 bytes inherit_graph_891.map | 2 +- inherit_graph_891.md5 | 2 +- inherit_graph_891.png | Bin 2509 -> 1898 bytes inherit_graph_892.map | 6 +- inherit_graph_892.md5 | 2 +- inherit_graph_892.png | Bin 10568 -> 1700 bytes inherit_graph_893.map | 44 +- inherit_graph_893.md5 | 2 +- inherit_graph_893.png | Bin 1539 -> 259868 bytes inherit_graph_894.map | 2 +- inherit_graph_894.md5 | 2 +- inherit_graph_894.png | Bin 1836 -> 1679 bytes inherit_graph_895.map | 2 +- inherit_graph_895.md5 | 2 +- inherit_graph_895.png | Bin 1265 -> 1565 bytes inherit_graph_896.map | 2 +- inherit_graph_896.md5 | 2 +- inherit_graph_896.png | Bin 1754 -> 2509 bytes inherit_graph_897.map | 6 +- inherit_graph_897.md5 | 2 +- inherit_graph_897.png | Bin 1148 -> 10568 bytes inherit_graph_898.map | 2 +- inherit_graph_898.md5 | 2 +- inherit_graph_898.png | Bin 2031 -> 1539 bytes inherit_graph_899.map | 2 +- inherit_graph_899.md5 | 2 +- inherit_graph_899.png | Bin 1753 -> 1836 bytes inherit_graph_900.map | 2 +- inherit_graph_900.md5 | 2 +- inherit_graph_900.png | Bin 2511 -> 1265 bytes inherit_graph_901.map | 2 +- inherit_graph_901.md5 | 2 +- inherit_graph_901.png | Bin 1859 -> 1754 bytes inherit_graph_902.map | 2 +- inherit_graph_902.md5 | 2 +- inherit_graph_902.png | Bin 1850 -> 1148 bytes inherit_graph_903.map | 2 +- inherit_graph_903.md5 | 2 +- inherit_graph_903.png | Bin 2067 -> 2031 bytes inherit_graph_904.map | 2 +- inherit_graph_904.md5 | 2 +- inherit_graph_904.png | Bin 1516 -> 1753 bytes inherit_graph_905.map | 2 +- inherit_graph_905.md5 | 2 +- inherit_graph_905.png | Bin 1723 -> 2511 bytes inherit_graph_906.map | 2 +- inherit_graph_906.md5 | 2 +- inherit_graph_906.png | Bin 1802 -> 1859 bytes inherit_graph_907.map | 2 +- inherit_graph_907.md5 | 2 +- inherit_graph_907.png | Bin 1345 -> 1850 bytes inherit_graph_908.map | 2 +- inherit_graph_908.md5 | 2 +- inherit_graph_908.png | Bin 1788 -> 2067 bytes inherit_graph_909.map | 2 +- inherit_graph_909.md5 | 2 +- inherit_graph_909.png | Bin 2457 -> 1516 bytes inherit_graph_910.map | 2 +- inherit_graph_910.md5 | 2 +- inherit_graph_910.png | Bin 1630 -> 1723 bytes inherit_graph_911.map | 2 +- inherit_graph_911.md5 | 2 +- inherit_graph_911.png | Bin 2077 -> 1802 bytes inherit_graph_912.map | 2 +- inherit_graph_912.md5 | 2 +- inherit_graph_912.png | Bin 2484 -> 1345 bytes inherit_graph_913.map | 2 +- inherit_graph_913.md5 | 2 +- inherit_graph_913.png | Bin 3476 -> 1788 bytes inherit_graph_914.map | 2 +- inherit_graph_914.md5 | 2 +- inherit_graph_914.png | Bin 3067 -> 2457 bytes inherit_graph_915.map | 2 +- inherit_graph_915.md5 | 2 +- inherit_graph_915.png | Bin 3425 -> 1630 bytes inherit_graph_916.map | 2 +- inherit_graph_916.md5 | 2 +- inherit_graph_916.png | Bin 1813 -> 2077 bytes inherit_graph_917.map | 2 +- inherit_graph_917.md5 | 2 +- inherit_graph_917.png | Bin 2069 -> 2484 bytes inherit_graph_918.map | 2 +- inherit_graph_918.md5 | 2 +- inherit_graph_918.png | Bin 1761 -> 3476 bytes inherit_graph_919.map | 2 +- inherit_graph_919.md5 | 2 +- inherit_graph_919.png | Bin 2559 -> 3067 bytes inherit_graph_920.map | 2 +- inherit_graph_920.md5 | 2 +- inherit_graph_920.png | Bin 2373 -> 3425 bytes inherit_graph_921.map | 2 +- inherit_graph_921.md5 | 2 +- inherit_graph_921.png | Bin 2481 -> 1813 bytes inherit_graph_922.map | 2 +- inherit_graph_922.md5 | 2 +- inherit_graph_922.png | Bin 2613 -> 2069 bytes inherit_graph_923.map | 2 +- inherit_graph_923.md5 | 2 +- inherit_graph_923.png | Bin 1622 -> 1761 bytes inherit_graph_924.map | 2 +- inherit_graph_924.md5 | 2 +- inherit_graph_924.png | Bin 1870 -> 2559 bytes inherit_graph_925.map | 2 +- inherit_graph_925.md5 | 2 +- inherit_graph_925.png | Bin 2434 -> 2373 bytes inherit_graph_926.map | 2 +- inherit_graph_926.md5 | 2 +- inherit_graph_926.png | Bin 2187 -> 2481 bytes inherit_graph_927.map | 2 +- inherit_graph_927.md5 | 2 +- inherit_graph_927.png | Bin 1691 -> 2613 bytes inherit_graph_928.map | 2 +- inherit_graph_928.md5 | 2 +- inherit_graph_928.png | Bin 1833 -> 1622 bytes inherit_graph_929.map | 2 +- inherit_graph_929.md5 | 2 +- inherit_graph_929.png | Bin 2311 -> 1870 bytes inherit_graph_930.map | 2 +- inherit_graph_930.md5 | 2 +- inherit_graph_930.png | Bin 1994 -> 2434 bytes inherit_graph_931.map | 2 +- inherit_graph_931.md5 | 2 +- inherit_graph_931.png | Bin 1549 -> 2187 bytes inherit_graph_932.map | 5 +- inherit_graph_932.md5 | 2 +- inherit_graph_932.png | Bin 10861 -> 1691 bytes inherit_graph_933.map | 2 +- inherit_graph_933.md5 | 2 +- inherit_graph_933.png | Bin 2338 -> 1833 bytes inherit_graph_934.map | 3 +- inherit_graph_934.md5 | 2 +- inherit_graph_934.png | Bin 2050 -> 2311 bytes inherit_graph_935.map | 3 +- inherit_graph_935.md5 | 2 +- inherit_graph_935.png | Bin 4055 -> 1994 bytes inherit_graph_936.map | 25 +- inherit_graph_936.md5 | 2 +- inherit_graph_936.png | Bin 118084 -> 1549 bytes inherit_graph_937.map | 5 +- inherit_graph_937.md5 | 2 +- inherit_graph_937.png | Bin 2837 -> 10861 bytes inherit_graph_938.map | 3 +- inherit_graph_938.md5 | 2 +- inherit_graph_938.png | Bin 4768 -> 2338 bytes inherit_graph_939.map | 4 +- inherit_graph_939.md5 | 2 +- inherit_graph_939.png | Bin 3835 -> 2050 bytes inherit_graph_940.map | 3 +- inherit_graph_940.md5 | 2 +- inherit_graph_940.png | Bin 2041 -> 4055 bytes inherit_graph_941.map | 25 +- inherit_graph_941.md5 | 2 +- inherit_graph_941.png | Bin 2848 -> 118084 bytes inherit_graph_942.map | 2 +- inherit_graph_942.md5 | 2 +- inherit_graph_942.png | Bin 2364 -> 2837 bytes inherit_graph_943.map | 3 +- inherit_graph_943.md5 | 2 +- inherit_graph_943.png | Bin 2921 -> 4768 bytes inherit_graph_944.map | 3 +- inherit_graph_944.md5 | 2 +- inherit_graph_944.png | Bin 2292 -> 3835 bytes inherit_graph_945.map | 2 +- inherit_graph_945.md5 | 2 +- inherit_graph_945.png | Bin 1950 -> 2041 bytes inherit_graph_946.map | 3 +- inherit_graph_946.md5 | 2 +- inherit_graph_946.png | Bin 5321 -> 2848 bytes inherit_graph_947.map | 3 +- inherit_graph_947.md5 | 2 +- inherit_graph_947.png | Bin 4523 -> 2364 bytes inherit_graph_948.map | 3 +- inherit_graph_948.md5 | 2 +- inherit_graph_948.png | Bin 2489 -> 2921 bytes inherit_graph_949.map | 3 +- inherit_graph_949.md5 | 2 +- inherit_graph_949.png | Bin 5043 -> 2292 bytes inherit_graph_950.map | 4 +- inherit_graph_950.md5 | 2 +- inherit_graph_950.png | Bin 11380 -> 1950 bytes inherit_graph_951.map | 4 +- inherit_graph_951.md5 | 2 +- inherit_graph_951.png | Bin 3760 -> 5321 bytes inherit_graph_952.map | 4 +- inherit_graph_952.md5 | 2 +- inherit_graph_952.png | Bin 4428 -> 4523 bytes inherit_graph_953.map | 9 +- inherit_graph_953.md5 | 2 +- inherit_graph_953.png | Bin 20653 -> 2489 bytes inherit_graph_954.map | 4 +- inherit_graph_954.md5 | 2 +- inherit_graph_954.png | Bin 3769 -> 5043 bytes inherit_graph_955.map | 7 +- inherit_graph_955.md5 | 2 +- inherit_graph_955.png | Bin 10024 -> 11380 bytes inherit_graph_956.map | 5 +- inherit_graph_956.md5 | 2 +- inherit_graph_956.png | Bin 4928 -> 3760 bytes inherit_graph_957.map | 4 +- inherit_graph_957.md5 | 2 +- inherit_graph_957.png | Bin 3752 -> 4428 bytes inherit_graph_958.map | 12 +- inherit_graph_958.md5 | 2 +- inherit_graph_958.png | Bin 13315 -> 20653 bytes inherit_graph_959.map | 11 +- inherit_graph_959.md5 | 2 +- inherit_graph_959.png | Bin 25947 -> 3769 bytes inherit_graph_960.map | 7 +- inherit_graph_960.md5 | 2 +- inherit_graph_960.png | Bin 8781 -> 10024 bytes inherit_graph_961.map | 5 +- inherit_graph_961.md5 | 2 +- inherit_graph_961.png | Bin 5370 -> 4928 bytes inherit_graph_962.map | 4 +- inherit_graph_962.md5 | 2 +- inherit_graph_962.png | Bin 4529 -> 3752 bytes inherit_graph_963.map | 9 +- inherit_graph_963.md5 | 2 +- inherit_graph_963.png | Bin 9430 -> 13315 bytes inherit_graph_964.map | 15 +- inherit_graph_964.md5 | 2 +- inherit_graph_964.png | Bin 20819 -> 25947 bytes inherit_graph_965.map | 5 +- inherit_graph_965.md5 | 2 +- inherit_graph_965.png | Bin 3803 -> 8781 bytes inherit_graph_966.map | 4 +- inherit_graph_966.md5 | 2 +- inherit_graph_966.png | Bin 2832 -> 5370 bytes inherit_graph_967.map | 4 +- inherit_graph_967.md5 | 2 +- inherit_graph_967.png | Bin 3618 -> 4529 bytes inherit_graph_968.map | 5 +- inherit_graph_968.md5 | 2 +- inherit_graph_968.png | Bin 2378 -> 9430 bytes inherit_graph_969.map | 9 +- inherit_graph_969.md5 | 2 +- inherit_graph_969.png | Bin 11550 -> 20819 bytes inherit_graph_970.map | 4 +- inherit_graph_970.md5 | 2 +- inherit_graph_970.png | Bin 9812 -> 3803 bytes inherit_graph_971.map | 4 +- inherit_graph_971.md5 | 2 +- inherit_graph_971.png | Bin 8344 -> 2832 bytes inherit_graph_972.map | 4 +- inherit_graph_972.md5 | 2 +- inherit_graph_972.png | Bin 8787 -> 3618 bytes inherit_graph_973.map | 3 +- inherit_graph_973.md5 | 2 +- inherit_graph_973.png | Bin 9173 -> 2378 bytes inherit_graph_974.map | 5 +- inherit_graph_974.md5 | 2 +- inherit_graph_974.png | Bin 7185 -> 11550 bytes inherit_graph_975.map | 4 +- inherit_graph_975.md5 | 2 +- inherit_graph_975.png | Bin 6573 -> 9812 bytes inherit_graph_976.map | 8 +- inherit_graph_976.md5 | 2 +- inherit_graph_976.png | Bin 28909 -> 8344 bytes inherit_graph_977.map | 3 +- inherit_graph_977.md5 | 2 +- inherit_graph_977.png | Bin 3191 -> 8787 bytes inherit_graph_978.map | 4 +- inherit_graph_978.md5 | 2 +- inherit_graph_978.png | Bin 3501 -> 9173 bytes inherit_graph_979.map | 8 +- inherit_graph_979.md5 | 2 +- inherit_graph_979.png | Bin 16172 -> 7185 bytes inherit_graph_980.map | 4 +- inherit_graph_980.md5 | 2 +- inherit_graph_980.png | Bin 3434 -> 6573 bytes inherit_graph_981.map | 25 +- inherit_graph_981.md5 | 2 +- inherit_graph_981.png | Bin 135772 -> 28909 bytes inherit_graph_982.map | 3 + inherit_graph_982.md5 | 1 + inherit_graph_982.png | Bin 0 -> 3191 bytes inherit_graph_983.map | 4 + inherit_graph_983.md5 | 1 + inherit_graph_983.png | Bin 0 -> 3501 bytes inherit_graph_984.map | 8 + inherit_graph_984.md5 | 1 + inherit_graph_984.png | Bin 0 -> 16172 bytes inherit_graph_985.map | 4 + inherit_graph_985.md5 | 1 + inherit_graph_985.png | Bin 0 -> 3434 bytes inherit_graph_986.map | 21 + inherit_graph_986.md5 | 1 + inherit_graph_986.png | Bin 0 -> 135772 bytes inherits.html | 469 ++- namespacemembers_f.html | 14 +- namespacemembers_func_i.html | 2 +- namespacemembers_i.html | 4 +- namespacemembers_r.html | 4 +- namespacemembers_s.html | 6 +- namespacemembers_vars_f.html | 3 + namespaceripple.html | 146 +- namespaceripple_1_1detail.html | 4 +- namespaceripple_1_1test_1_1jtx.html | 10 + namespaceripple_1_1test_1_1jtx_1_1amm.html | 4 +- search/all_1.js | 368 +- search/all_10.js | 1248 +++--- search/all_11.js | 92 +- search/all_12.js | 1372 +++--- search/all_13.js | 3076 +++++++------- search/all_14.js | 3666 +++++++++-------- search/all_15.js | 718 ++-- search/all_16.js | 519 +-- search/all_17.js | 485 +-- search/all_18.js | 206 +- search/all_19.js | 16 +- search/all_1a.js | 18 +- search/all_1b.js | 722 ++-- search/all_2.js | 681 +-- search/all_3.js | 1723 ++++---- search/all_4.js | 1193 +++--- search/all_5.js | 611 +-- search/all_6.js | 1011 ++--- search/all_7.js | 1352 +++--- search/all_8.js | 402 +- search/all_9.js | 1642 ++++---- search/all_a.js | 240 +- search/all_b.js | 114 +- search/all_c.js | 984 ++--- search/all_d.js | 2037 ++++----- search/all_e.js | 672 +-- search/all_f.js | 711 ++-- search/classes_0.js | 4 +- search/classes_1.js | 450 +- search/classes_10.js | 268 +- search/classes_11.js | 22 +- search/classes_12.js | 258 +- search/classes_13.js | 688 ++-- search/classes_14.js | 302 +- search/classes_15.js | 410 +- search/classes_16.js | 261 +- search/classes_17.js | 145 +- search/classes_18.js | 72 +- search/classes_19.js | 4 +- search/classes_1a.js | 10 +- search/classes_2.js | 237 +- search/classes_3.js | 455 +- search/classes_4.js | 209 +- search/classes_5.js | 176 +- search/classes_6.js | 156 +- search/classes_7.js | 56 +- search/classes_8.js | 82 +- search/classes_9.js | 410 +- search/classes_a.js | 52 +- search/classes_b.js | 32 +- search/classes_c.js | 224 +- search/classes_d.js | 284 +- search/classes_e.js | 188 +- search/classes_f.js | 201 +- search/enums_0.js | 16 +- search/enums_1.js | 22 +- search/enums_10.js | 34 +- search/enums_11.js | 34 +- search/enums_12.js | 12 +- search/enums_13.js | 10 +- search/enums_14.js | 6 +- search/enums_2.js | 8 +- search/enums_3.js | 10 +- search/enums_4.js | 8 +- search/enums_5.js | 4 +- search/enums_6.js | 4 +- search/enums_7.js | 2 +- search/enums_8.js | 4 +- search/enums_9.js | 14 +- search/enums_a.js | 4 +- search/enums_b.js | 6 +- search/enums_c.js | 10 +- search/enums_d.js | 18 +- search/enums_e.js | 2 +- search/enums_f.js | 10 +- search/enumvalues_0.js | 2 +- search/enumvalues_1.js | 50 +- search/enumvalues_10.js | 42 +- search/enumvalues_11.js | 4 +- search/enumvalues_12.js | 178 +- search/enumvalues_13.js | 142 +- search/enumvalues_14.js | 560 +-- search/enumvalues_15.js | 28 +- search/enumvalues_16.js | 12 +- search/enumvalues_17.js | 18 +- search/enumvalues_18.js | 24 +- search/enumvalues_19.js | 2 +- search/enumvalues_2.js | 48 +- search/enumvalues_3.js | 52 +- search/enumvalues_4.js | 60 +- search/enumvalues_5.js | 26 +- search/enumvalues_6.js | 36 +- search/enumvalues_7.js | 44 +- search/enumvalues_8.js | 24 +- search/enumvalues_9.js | 36 +- search/enumvalues_a.js | 96 +- search/enumvalues_b.js | 28 +- search/enumvalues_c.js | 180 +- search/enumvalues_d.js | 50 +- search/enumvalues_e.js | 68 +- search/enumvalues_f.js | 38 +- search/files_0.js | 8 +- search/files_1.js | 4 +- search/files_10.js | 8 +- search/files_2.js | 68 +- search/files_3.js | 2 +- search/files_4.js | 4 +- search/files_5.js | 10 +- search/files_6.js | 14 +- search/files_7.js | 6 +- search/files_8.js | 8 +- search/files_9.js | 4 +- search/files_a.js | 4 +- search/files_b.js | 2 +- search/files_c.js | 8 +- search/files_d.js | 26 +- search/files_e.js | 10 +- search/files_f.js | 6 +- search/functions_0.js | 2 +- search/functions_1.js | 824 ++-- search/functions_10.js | 744 ++-- search/functions_11.js | 46 +- search/functions_12.js | 616 +-- search/functions_13.js | 1440 +++---- search/functions_14.js | 2463 +++++------ search/functions_15.js | 242 +- search/functions_16.js | 178 +- search/functions_17.js | 302 +- search/functions_18.js | 118 +- search/functions_19.js | 2 +- search/functions_1a.js | 10 +- search/functions_1b.js | 722 ++-- search/functions_2.js | 318 +- search/functions_3.js | 980 ++--- search/functions_4.js | 774 ++-- search/functions_5.js | 332 +- search/functions_6.js | 544 +-- search/functions_7.js | 1236 +++--- search/functions_8.js | 194 +- search/functions_9.js | 880 ++-- search/functions_a.js | 56 +- search/functions_b.js | 34 +- search/functions_c.js | 372 +- search/functions_d.js | 637 +-- search/functions_e.js | 322 +- search/functions_f.js | 436 +- search/groups_0.js | 2 +- search/namespaces_0.js | 24 +- search/namespaces_1.js | 4 +- search/namespaces_2.js | 2 +- search/namespaces_3.js | 86 +- search/namespaces_4.js | 24 +- search/pages_0.js | 2 +- search/pages_1.js | 4 +- search/pages_10.js | 2 +- search/pages_2.js | 10 +- search/pages_3.js | 6 +- search/pages_4.js | 2 +- search/pages_5.js | 4 +- search/pages_6.js | 6 +- search/pages_7.js | 2 +- search/pages_8.js | 4 +- search/pages_9.js | 4 +- search/pages_a.js | 2 +- search/pages_b.js | 4 +- search/pages_c.js | 6 +- search/pages_d.js | 16 +- search/pages_e.js | 8 +- search/pages_f.js | 2 +- search/related_0.js | 8 +- search/related_1.js | 16 +- search/related_2.js | 4 +- search/related_3.js | 6 +- search/related_4.js | 2 +- search/related_5.js | 6 +- search/related_6.js | 18 +- search/related_7.js | 18 +- search/related_8.js | 34 +- search/related_9.js | 6 +- search/related_a.js | 12 +- search/related_b.js | 12 +- search/related_c.js | 4 +- search/related_d.js | 6 +- search/typedefs_0.js | 52 +- search/typedefs_1.js | 32 +- search/typedefs_10.js | 2 +- search/typedefs_11.js | 54 +- search/typedefs_12.js | 164 +- search/typedefs_13.js | 88 +- search/typedefs_14.js | 18 +- search/typedefs_15.js | 14 +- search/typedefs_16.js | 10 +- search/typedefs_17.js | 2 +- search/typedefs_18.js | 2 +- search/typedefs_2.js | 70 +- search/typedefs_3.js | 28 +- search/typedefs_4.js | 40 +- search/typedefs_5.js | 20 +- search/typedefs_6.js | 2 +- search/typedefs_7.js | 38 +- search/typedefs_8.js | 52 +- search/typedefs_9.js | 8 +- search/typedefs_a.js | 14 +- search/typedefs_b.js | 54 +- search/typedefs_c.js | 60 +- search/typedefs_d.js | 22 +- search/typedefs_e.js | 20 +- search/typedefs_f.js | 56 +- search/variables_0.js | 400 +- search/variables_1.js | 166 +- search/variables_10.js | 40 +- search/variables_11.js | 338 +- search/variables_12.js | 1052 ++--- search/variables_13.js | 440 +- search/variables_14.js | 78 +- search/variables_15.js | 130 +- search/variables_16.js | 100 +- search/variables_17.js | 28 +- search/variables_18.js | 6 +- search/variables_19.js | 4 +- search/variables_2.js | 363 +- search/variables_3.js | 246 +- search/variables_4.js | 129 +- search/variables_5.js | 389 +- search/variables_6.js | 58 +- search/variables_7.js | 106 +- search/variables_8.js | 408 +- search/variables_9.js | 56 +- search/variables_a.js | 28 +- search/variables_b.js | 299 +- search/variables_c.js | 1178 +++--- search/variables_d.js | 196 +- search/variables_e.js | 98 +- search/variables_f.js | 320 +- serialize_8h_source.html | 2 +- structripple_1_1STObject_1_1Transform.html | 8 +- ...ctripple_1_1test_1_1AMM__test-members.html | 27 +- structripple_1_1test_1_1AMM__test.html | 33 +- ...pple_1_1test_1_1jtx_1_1BidArg-members.html | 91 + structripple_1_1test_1_1jtx_1_1BidArg.html | 261 ++ ..._1_1test_1_1jtx_1_1BidArg__coll__graph.map | 21 + ..._1_1test_1_1jtx_1_1BidArg__coll__graph.md5 | 1 + ..._1_1test_1_1jtx_1_1BidArg__coll__graph.png | Bin 0 -> 100926 bytes ...e_1_1test_1_1jtx_1_1CreateArg-members.html | 91 + structripple_1_1test_1_1jtx_1_1CreateArg.html | 249 ++ ...1test_1_1jtx_1_1CreateArg__coll__graph.map | 9 + ...1test_1_1jtx_1_1CreateArg__coll__graph.md5 | 1 + ...1test_1_1jtx_1_1CreateArg__coll__graph.png | Bin 0 -> 25361 bytes ..._1_1test_1_1jtx_1_1DepositArg-members.html | 93 + ...ctripple_1_1test_1_1jtx_1_1DepositArg.html | 287 ++ ...test_1_1jtx_1_1DepositArg__coll__graph.map | 11 + ...test_1_1jtx_1_1DepositArg__coll__graph.md5 | 1 + ...test_1_1jtx_1_1DepositArg__coll__graph.png | Bin 0 -> 36882 bytes ...ple_1_1test_1_1jtx_1_1VoteArg-members.html | 89 + structripple_1_1test_1_1jtx_1_1VoteArg.html | 213 + ...1_1test_1_1jtx_1_1VoteArg__coll__graph.map | 9 + ...1_1test_1_1jtx_1_1VoteArg__coll__graph.md5 | 1 + ...1_1test_1_1jtx_1_1VoteArg__coll__graph.png | Bin 0 -> 28064 bytes ...1_1test_1_1jtx_1_1WithdrawArg-members.html | 92 + ...tripple_1_1test_1_1jtx_1_1WithdrawArg.html | 269 ++ ...est_1_1jtx_1_1WithdrawArg__coll__graph.map | 11 + ...est_1_1jtx_1_1WithdrawArg__coll__graph.md5 | 1 + ...est_1_1jtx_1_1WithdrawArg__coll__graph.png | Bin 0 -> 44734 bytes utility_8cpp_source.html | 2 +- utility_8h_source.html | 2 +- 1144 files changed, 40847 insertions(+), 37891 deletions(-) create mode 100644 inherit_graph_982.map create mode 100644 inherit_graph_982.md5 create mode 100644 inherit_graph_982.png create mode 100644 inherit_graph_983.map create mode 100644 inherit_graph_983.md5 create mode 100644 inherit_graph_983.png create mode 100644 inherit_graph_984.map create mode 100644 inherit_graph_984.md5 create mode 100644 inherit_graph_984.png create mode 100644 inherit_graph_985.map create mode 100644 inherit_graph_985.md5 create mode 100644 inherit_graph_985.png create mode 100644 inherit_graph_986.map create mode 100644 inherit_graph_986.md5 create mode 100644 inherit_graph_986.png create mode 100644 structripple_1_1test_1_1jtx_1_1BidArg-members.html create mode 100644 structripple_1_1test_1_1jtx_1_1BidArg.html create mode 100644 structripple_1_1test_1_1jtx_1_1BidArg__coll__graph.map create mode 100644 structripple_1_1test_1_1jtx_1_1BidArg__coll__graph.md5 create mode 100644 structripple_1_1test_1_1jtx_1_1BidArg__coll__graph.png create mode 100644 structripple_1_1test_1_1jtx_1_1CreateArg-members.html create mode 100644 structripple_1_1test_1_1jtx_1_1CreateArg.html create mode 100644 structripple_1_1test_1_1jtx_1_1CreateArg__coll__graph.map create mode 100644 structripple_1_1test_1_1jtx_1_1CreateArg__coll__graph.md5 create mode 100644 structripple_1_1test_1_1jtx_1_1CreateArg__coll__graph.png create mode 100644 structripple_1_1test_1_1jtx_1_1DepositArg-members.html create mode 100644 structripple_1_1test_1_1jtx_1_1DepositArg.html create mode 100644 structripple_1_1test_1_1jtx_1_1DepositArg__coll__graph.map create mode 100644 structripple_1_1test_1_1jtx_1_1DepositArg__coll__graph.md5 create mode 100644 structripple_1_1test_1_1jtx_1_1DepositArg__coll__graph.png create mode 100644 structripple_1_1test_1_1jtx_1_1VoteArg-members.html create mode 100644 structripple_1_1test_1_1jtx_1_1VoteArg.html create mode 100644 structripple_1_1test_1_1jtx_1_1VoteArg__coll__graph.map create mode 100644 structripple_1_1test_1_1jtx_1_1VoteArg__coll__graph.md5 create mode 100644 structripple_1_1test_1_1jtx_1_1VoteArg__coll__graph.png create mode 100644 structripple_1_1test_1_1jtx_1_1WithdrawArg-members.html create mode 100644 structripple_1_1test_1_1jtx_1_1WithdrawArg.html create mode 100644 structripple_1_1test_1_1jtx_1_1WithdrawArg__coll__graph.map create mode 100644 structripple_1_1test_1_1jtx_1_1WithdrawArg__coll__graph.md5 create mode 100644 structripple_1_1test_1_1jtx_1_1WithdrawArg__coll__graph.png diff --git a/AMMBid_8cpp_source.html b/AMMBid_8cpp_source.html index 89984d7fc3..ea15b8937f 100644 --- a/AMMBid_8cpp_source.html +++ b/AMMBid_8cpp_source.html @@ -244,195 +244,205 @@ $(function() {
173  return {tecINTERNAL, false};
174  STAmount const lptAMMBalance = (*ammSle)[sfLPTokenBalance];
175  auto const lpTokens = ammLPHolds(sb, *ammSle, account_, ctx_.journal);
-
176  if (!ammSle->isFieldPresent(sfAuctionSlot))
-
177  ammSle->makeFieldPresent(sfAuctionSlot);
-
178  auto& auctionSlot = ammSle->peekFieldObject(sfAuctionSlot);
-
179  auto const current =
-
180  duration_cast<seconds>(
-
181  ctx_.view().info().parentCloseTime.time_since_epoch())
-
182  .count();
-
183  // Auction slot discounted fee
-
184  auto const discountedFee =
-
185  (*ammSle)[sfTradingFee] / AUCTION_SLOT_DISCOUNTED_FEE_FRACTION;
-
186  auto const tradingFee = getFee((*ammSle)[sfTradingFee]);
-
187  // Min price
-
188  auto const minSlotPrice =
-
189  lptAMMBalance * tradingFee / AUCTION_SLOT_MIN_FEE_FRACTION;
-
190 
-
191  std::uint32_t constexpr tailingSlot = AUCTION_SLOT_TIME_INTERVALS - 1;
-
192 
-
193  // If seated then it is the current slot-holder time slot, otherwise
-
194  // the auction slot is not owned. Slot range is in {0-19}
-
195  auto const timeSlot = ammAuctionTimeSlot(current, auctionSlot);
-
196 
-
197  // Account must exist and the slot not expired.
-
198  auto validOwner = [&](AccountID const& account) {
-
199  // Valid range is 0-19 but the tailing slot pays MinSlotPrice
-
200  // and doesn't refund so the check is < instead of <= to optimize.
-
201  return timeSlot && *timeSlot < tailingSlot &&
-
202  sb.read(keylet::account(account));
-
203  };
-
204 
-
205  auto updateSlot = [&](std::uint32_t fee,
-
206  Number const& minPrice,
-
207  Number const& burn) -> TER {
-
208  auctionSlot.setAccountID(sfAccount, account_);
-
209  auctionSlot.setFieldU32(sfExpiration, current + TOTAL_TIME_SLOT_SECS);
-
210  if (fee != 0)
-
211  auctionSlot.setFieldU16(sfDiscountedFee, fee);
-
212  else if (auctionSlot.isFieldPresent(sfDiscountedFee))
-
213  auctionSlot.makeFieldAbsent(sfDiscountedFee);
-
214  auctionSlot.setFieldAmount(
-
215  sfPrice, toSTAmount(lpTokens.issue(), minPrice));
-
216  if (ctx_.tx.isFieldPresent(sfAuthAccounts))
-
217  auctionSlot.setFieldArray(
-
218  sfAuthAccounts, ctx_.tx.getFieldArray(sfAuthAccounts));
-
219  else
-
220  auctionSlot.makeFieldAbsent(sfAuthAccounts);
-
221  // Burn the remaining bid amount
-
222  auto const saBurn = adjustLPTokens(
-
223  lptAMMBalance, toSTAmount(lptAMMBalance.issue(), burn), false);
-
224  if (saBurn >= lptAMMBalance)
-
225  {
-
226  // This error case should never occur.
-
227  JLOG(ctx_.journal.fatal())
-
228  << "AMM Bid: LP Token burn exceeds AMM balance " << burn << " "
-
229  << lptAMMBalance;
-
230  return tecINTERNAL;
-
231  }
-
232  auto res =
-
233  redeemIOU(sb, account_, saBurn, lpTokens.issue(), ctx_.journal);
-
234  if (res != tesSUCCESS)
+
176  auto const& rules = ctx_.view().rules();
+
177  if (!rules.enabled(fixInnerObjTemplate))
+
178  {
+
179  if (!ammSle->isFieldPresent(sfAuctionSlot))
+
180  ammSle->makeFieldPresent(sfAuctionSlot);
+
181  }
+
182  else
+
183  {
+
184  assert(ammSle->isFieldPresent(sfAuctionSlot));
+
185  if (!ammSle->isFieldPresent(sfAuctionSlot))
+
186  return {tecINTERNAL, false};
+
187  }
+
188  auto& auctionSlot = ammSle->peekFieldObject(sfAuctionSlot);
+
189  auto const current =
+
190  duration_cast<seconds>(
+
191  ctx_.view().info().parentCloseTime.time_since_epoch())
+
192  .count();
+
193  // Auction slot discounted fee
+
194  auto const discountedFee =
+
195  (*ammSle)[sfTradingFee] / AUCTION_SLOT_DISCOUNTED_FEE_FRACTION;
+
196  auto const tradingFee = getFee((*ammSle)[sfTradingFee]);
+
197  // Min price
+
198  auto const minSlotPrice =
+
199  lptAMMBalance * tradingFee / AUCTION_SLOT_MIN_FEE_FRACTION;
+
200 
+
201  std::uint32_t constexpr tailingSlot = AUCTION_SLOT_TIME_INTERVALS - 1;
+
202 
+
203  // If seated then it is the current slot-holder time slot, otherwise
+
204  // the auction slot is not owned. Slot range is in {0-19}
+
205  auto const timeSlot = ammAuctionTimeSlot(current, auctionSlot);
+
206 
+
207  // Account must exist and the slot not expired.
+
208  auto validOwner = [&](AccountID const& account) {
+
209  // Valid range is 0-19 but the tailing slot pays MinSlotPrice
+
210  // and doesn't refund so the check is < instead of <= to optimize.
+
211  return timeSlot && *timeSlot < tailingSlot &&
+
212  sb.read(keylet::account(account));
+
213  };
+
214 
+
215  auto updateSlot = [&](std::uint32_t fee,
+
216  Number const& minPrice,
+
217  Number const& burn) -> TER {
+
218  auctionSlot.setAccountID(sfAccount, account_);
+
219  auctionSlot.setFieldU32(sfExpiration, current + TOTAL_TIME_SLOT_SECS);
+
220  if (fee != 0)
+
221  auctionSlot.setFieldU16(sfDiscountedFee, fee);
+
222  else if (auctionSlot.isFieldPresent(sfDiscountedFee))
+
223  auctionSlot.makeFieldAbsent(sfDiscountedFee);
+
224  auctionSlot.setFieldAmount(
+
225  sfPrice, toSTAmount(lpTokens.issue(), minPrice));
+
226  if (ctx_.tx.isFieldPresent(sfAuthAccounts))
+
227  auctionSlot.setFieldArray(
+
228  sfAuthAccounts, ctx_.tx.getFieldArray(sfAuthAccounts));
+
229  else
+
230  auctionSlot.makeFieldAbsent(sfAuthAccounts);
+
231  // Burn the remaining bid amount
+
232  auto const saBurn = adjustLPTokens(
+
233  lptAMMBalance, toSTAmount(lptAMMBalance.issue(), burn), false);
+
234  if (saBurn >= lptAMMBalance)
235  {
-
236  JLOG(ctx_.journal.debug()) << "AMM Bid: failed to redeem.";
-
237  return res;
-
238  }
-
239  ammSle->setFieldAmount(sfLPTokenBalance, lptAMMBalance - saBurn);
-
240  sb.update(ammSle);
-
241  return tesSUCCESS;
-
242  };
-
243 
-
244  TER res = tesSUCCESS;
-
245 
-
246  auto const bidMin = ctx_.tx[~sfBidMin];
-
247  auto const bidMax = ctx_.tx[~sfBidMax];
-
248 
-
249  auto getPayPrice =
-
250  [&](Number const& computedPrice) -> Expected<Number, TER> {
-
251  auto const payPrice = [&]() -> std::optional<Number> {
-
252  // Both min/max bid price are defined
-
253  if (bidMin && bidMax)
-
254  {
-
255  if (computedPrice <= *bidMax)
-
256  return std::max(computedPrice, Number(*bidMin));
-
257  JLOG(ctx_.journal.debug())
-
258  << "AMM Bid: not in range " << computedPrice << " "
-
259  << *bidMin << " " << *bidMax;
-
260  return std::nullopt;
-
261  }
-
262  // Bidder pays max(bidPrice, computedPrice)
-
263  if (bidMin)
+
236  // This error case should never occur.
+
237  JLOG(ctx_.journal.fatal())
+
238  << "AMM Bid: LP Token burn exceeds AMM balance " << burn << " "
+
239  << lptAMMBalance;
+
240  return tecINTERNAL;
+
241  }
+
242  auto res =
+
243  redeemIOU(sb, account_, saBurn, lpTokens.issue(), ctx_.journal);
+
244  if (res != tesSUCCESS)
+
245  {
+
246  JLOG(ctx_.journal.debug()) << "AMM Bid: failed to redeem.";
+
247  return res;
+
248  }
+
249  ammSle->setFieldAmount(sfLPTokenBalance, lptAMMBalance - saBurn);
+
250  sb.update(ammSle);
+
251  return tesSUCCESS;
+
252  };
+
253 
+
254  TER res = tesSUCCESS;
+
255 
+
256  auto const bidMin = ctx_.tx[~sfBidMin];
+
257  auto const bidMax = ctx_.tx[~sfBidMax];
+
258 
+
259  auto getPayPrice =
+
260  [&](Number const& computedPrice) -> Expected<Number, TER> {
+
261  auto const payPrice = [&]() -> std::optional<Number> {
+
262  // Both min/max bid price are defined
+
263  if (bidMin && bidMax)
264  {
-
265  return std::max(computedPrice, Number(*bidMin));
-
266  }
-
267  else if (bidMax)
-
268  {
-
269  if (computedPrice <= *bidMax)
-
270  return computedPrice;
-
271  JLOG(ctx_.journal.debug()) << "AMM Bid: not in range "
-
272  << computedPrice << " " << *bidMax;
-
273  return std::nullopt;
-
274  }
-
275  else
-
276  return computedPrice;
-
277  }();
-
278  if (!payPrice)
-
279  return Unexpected(tecAMM_FAILED);
-
280  else if (payPrice > lpTokens)
-
281  return Unexpected(tecAMM_INVALID_TOKENS);
-
282  return *payPrice;
-
283  };
-
284 
-
285  // No one owns the slot or expired slot.
-
286  if (auto const acct = auctionSlot[~sfAccount]; !acct || !validOwner(*acct))
-
287  {
-
288  if (auto const payPrice = getPayPrice(minSlotPrice); !payPrice)
-
289  return {payPrice.error(), false};
-
290  else
-
291  res = updateSlot(discountedFee, *payPrice, *payPrice);
-
292  }
-
293  else
-
294  {
-
295  // Price the slot was purchased at.
-
296  STAmount const pricePurchased = auctionSlot[sfPrice];
-
297  assert(timeSlot);
-
298  auto const fractionUsed =
-
299  (Number(*timeSlot) + 1) / AUCTION_SLOT_TIME_INTERVALS;
-
300  auto const fractionRemaining = Number(1) - fractionUsed;
-
301  auto const computedPrice = [&]() -> Number {
-
302  auto const p1_05 = Number(105, -2);
-
303  // First interval slot price
-
304  if (*timeSlot == 0)
-
305  return pricePurchased * p1_05 + minSlotPrice;
-
306  // Other intervals slot price
-
307  return pricePurchased * p1_05 * (1 - power(fractionUsed, 60)) +
-
308  minSlotPrice;
-
309  }();
-
310 
-
311  auto const payPrice = getPayPrice(computedPrice);
-
312 
-
313  if (!payPrice)
-
314  return {payPrice.error(), false};
-
315 
-
316  // Refund the previous owner. If the time slot is 0 then
-
317  // the owner is refunded 95% of the amount.
-
318  auto const refund = fractionRemaining * pricePurchased;
-
319  if (refund > *payPrice)
-
320  {
-
321  // This error case should never occur.
-
322  JLOG(ctx_.journal.fatal()) << "AMM Bid: refund exceeds payPrice "
-
323  << refund << " " << *payPrice;
-
324  return {tecINTERNAL, false};
-
325  }
-
326  res = accountSend(
-
327  sb,
-
328  account_,
-
329  auctionSlot[sfAccount],
-
330  toSTAmount(lpTokens.issue(), refund),
-
331  ctx_.journal);
-
332  if (res != tesSUCCESS)
-
333  {
-
334  JLOG(ctx_.journal.debug()) << "AMM Bid: failed to refund.";
-
335  return {res, false};
-
336  }
-
337 
-
338  auto const burn = *payPrice - refund;
-
339  res = updateSlot(discountedFee, *payPrice, burn);
-
340  }
-
341 
-
342  return {res, res == tesSUCCESS};
-
343 }
-
344 
-
345 TER
-
346 AMMBid::doApply()
-
347 {
-
348  // This is the ledger view that we work against. Transactions are applied
-
349  // as we go on processing transactions.
-
350  Sandbox sb(&ctx_.view());
+
265  if (computedPrice <= *bidMax)
+
266  return std::max(computedPrice, Number(*bidMin));
+
267  JLOG(ctx_.journal.debug())
+
268  << "AMM Bid: not in range " << computedPrice << " "
+
269  << *bidMin << " " << *bidMax;
+
270  return std::nullopt;
+
271  }
+
272  // Bidder pays max(bidPrice, computedPrice)
+
273  if (bidMin)
+
274  {
+
275  return std::max(computedPrice, Number(*bidMin));
+
276  }
+
277  else if (bidMax)
+
278  {
+
279  if (computedPrice <= *bidMax)
+
280  return computedPrice;
+
281  JLOG(ctx_.journal.debug()) << "AMM Bid: not in range "
+
282  << computedPrice << " " << *bidMax;
+
283  return std::nullopt;
+
284  }
+
285  else
+
286  return computedPrice;
+
287  }();
+
288  if (!payPrice)
+
289  return Unexpected(tecAMM_FAILED);
+
290  else if (payPrice > lpTokens)
+
291  return Unexpected(tecAMM_INVALID_TOKENS);
+
292  return *payPrice;
+
293  };
+
294 
+
295  // No one owns the slot or expired slot.
+
296  if (auto const acct = auctionSlot[~sfAccount]; !acct || !validOwner(*acct))
+
297  {
+
298  if (auto const payPrice = getPayPrice(minSlotPrice); !payPrice)
+
299  return {payPrice.error(), false};
+
300  else
+
301  res = updateSlot(discountedFee, *payPrice, *payPrice);
+
302  }
+
303  else
+
304  {
+
305  // Price the slot was purchased at.
+
306  STAmount const pricePurchased = auctionSlot[sfPrice];
+
307  assert(timeSlot);
+
308  auto const fractionUsed =
+
309  (Number(*timeSlot) + 1) / AUCTION_SLOT_TIME_INTERVALS;
+
310  auto const fractionRemaining = Number(1) - fractionUsed;
+
311  auto const computedPrice = [&]() -> Number {
+
312  auto const p1_05 = Number(105, -2);
+
313  // First interval slot price
+
314  if (*timeSlot == 0)
+
315  return pricePurchased * p1_05 + minSlotPrice;
+
316  // Other intervals slot price
+
317  return pricePurchased * p1_05 * (1 - power(fractionUsed, 60)) +
+
318  minSlotPrice;
+
319  }();
+
320 
+
321  auto const payPrice = getPayPrice(computedPrice);
+
322 
+
323  if (!payPrice)
+
324  return {payPrice.error(), false};
+
325 
+
326  // Refund the previous owner. If the time slot is 0 then
+
327  // the owner is refunded 95% of the amount.
+
328  auto const refund = fractionRemaining * pricePurchased;
+
329  if (refund > *payPrice)
+
330  {
+
331  // This error case should never occur.
+
332  JLOG(ctx_.journal.fatal()) << "AMM Bid: refund exceeds payPrice "
+
333  << refund << " " << *payPrice;
+
334  return {tecINTERNAL, false};
+
335  }
+
336  res = accountSend(
+
337  sb,
+
338  account_,
+
339  auctionSlot[sfAccount],
+
340  toSTAmount(lpTokens.issue(), refund),
+
341  ctx_.journal);
+
342  if (res != tesSUCCESS)
+
343  {
+
344  JLOG(ctx_.journal.debug()) << "AMM Bid: failed to refund.";
+
345  return {res, false};
+
346  }
+
347 
+
348  auto const burn = *payPrice - refund;
+
349  res = updateSlot(discountedFee, *payPrice, burn);
+
350  }
351 
-
352  auto const result = applyBid(ctx_, sb, account_, j_);
-
353  if (result.second)
-
354  sb.apply(ctx_.rawView());
-
355 
-
356  return result.first;
-
357 }
-
358 
-
359 } // namespace ripple
+
352  return {res, res == tesSUCCESS};
+
353 }
+
354 
+
355 TER
+
356 AMMBid::doApply()
+
357 {
+
358  // This is the ledger view that we work against. Transactions are applied
+
359  // as we go on processing transactions.
+
360  Sandbox sb(&ctx_.view());
+
361 
+
362  auto const result = applyBid(ctx_, sb, account_, j_);
+
363  if (result.second)
+
364  sb.apply(ctx_.rawView());
+
365 
+
366  return result.first;
+
367 }
+
368 
+
369 } // namespace ripple
Stream fatal() const
Definition: Journal.h:338
virtual LedgerInfo const & info() const =0
Returns information about the ledger.
size_type size() const
Definition: STArray.h:248
-
const STArray & getFieldArray(SField const &field) const
Definition: STObject.cpp:624
+
const STArray & getFieldArray(SField const &field) const
Definition: STObject.cpp:639
NotTEC preflight2(PreflightContext const &ctx)
Checks whether the signature appears valid.
Definition: Transactor.cpp:133
const SF_UINT16 sfDiscountedFee
const SF_ISSUE sfAsset
@@ -456,7 +466,7 @@ $(function() {
Number getFee(std::uint16_t tfee)
Convert to the fee from the basis points.
Definition: AMMCore.h:109
@ tecAMM_EMPTY
Definition: TER.h:312
const beast::Journal journal
Definition: ApplyContext.h:51
-
TER doApply() override
Definition: AMMBid.cpp:346
+
TER doApply() override
Definition: AMMBid.cpp:356
RawView & rawView()
Definition: ApplyContext.h:67
const SF_AMOUNT sfPrice
const beast::Journal j
Definition: Transactor.h:38
@@ -484,7 +494,7 @@ $(function() {
TERSubset< CanCvtToTER > TER
Definition: TER.h:607
Definition: STAmount.h:46
@ tecINTERNAL
Definition: TER.h:290
-
std::uint32_t getFlags() const
Definition: STObject.cpp:481
+
std::uint32_t getFlags() const
Definition: STObject.cpp:496
@ current
This was a new validation and was added.
State information when applying a tx.
Definition: ApplyContext.h:35
A generic endpoint for log messages.
Definition: Journal.h:58
@@ -501,8 +511,9 @@ $(function() {
constexpr std::uint32_t TOTAL_TIME_SLOT_SECS
Definition: AMMCore.h:34
@ temDISABLED
Definition: TER.h:113
TER redeemIOU(ApplyView &view, AccountID const &account, STAmount const &amount, Issue const &issue, beast::Journal j)
Definition: View.cpp:1399
+
virtual Rules const & rules() const =0
Returns the tx processing rules.
@ terNO_AMM
Definition: TER.h:220
-
bool isFieldPresent(SField const &field) const
Definition: STObject.cpp:428
+
bool isFieldPresent(SField const &field) const
Definition: STObject.cpp:443
STAmount ammLPHolds(ReadView const &view, Currency const &cur1, Currency const &cur2, AccountID const &ammAccount, AccountID const &lpAccount, beast::Journal const j)
Get the balance of LP tokens.
Definition: AMMUtils.cpp:104
ApplyContext & ctx_
Definition: Transactor.h:88
@@ -520,6 +531,7 @@ $(function() {
STAmount adjustLPTokens(STAmount const &lptAMMBalance, STAmount const &lpTokens, bool isDeposit)
Definition: AMMHelpers.cpp:133
constexpr std::uint32_t tfUniversalMask
Definition: TxFlags.h:60
const SField sfAuctionSlot
+
const uint256 fixInnerObjTemplate
@ tesSUCCESS
Definition: TER.h:235
const AccountID account_
Definition: Transactor.h:91
STTx const & tx
Definition: ApplyContext.h:48
diff --git a/AMMBid_8h_source.html b/AMMBid_8h_source.html index bd063cddbc..3549485ce5 100644 --- a/AMMBid_8h_source.html +++ b/AMMBid_8h_source.html @@ -121,7 +121,7 @@ $(function() {
AMMBid(ApplyContext &ctx)
Definition: AMMBid.h:70
Definition: Transactor.h:85
static NotTEC preflight(PreflightContext const &ctx)
Definition: AMMBid.cpp:35
-
TER doApply() override
Definition: AMMBid.cpp:346
+
TER doApply() override
Definition: AMMBid.cpp:356
ConsequencesFactoryType
Definition: Transactor.h:101
Definition: TER.h:379
State information when applying a tx.
Definition: ApplyContext.h:35
diff --git a/AMMCore_8cpp_source.html b/AMMCore_8cpp_source.html index 9f11527c53..cc49f376a2 100644 --- a/AMMCore_8cpp_source.html +++ b/AMMCore_8cpp_source.html @@ -228,7 +228,7 @@ $(function() {
@ temBAD_AMOUNT
Definition: TER.h:88
NotTEC invalidAMMAssetPair(Issue const &issue1, Issue const &issue2, std::optional< std::pair< Issue, Issue >> const &pair=std::nullopt)
Definition: AMMCore.cpp:79
-
Definition: STObject.h:53
+
Definition: STObject.h:54
base_uint< 160, detail::CurrencyTag > Currency
Currency is a hash representing a specific currency.
Definition: UintTypes.h:56
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr std::uint32_t TOTAL_TIME_SLOT_SECS
Definition: AMMCore.h:34
diff --git a/AMMCore_8h_source.html b/AMMCore_8h_source.html index 90518e467a..6d24a05cfd 100644 --- a/AMMCore_8h_source.html +++ b/AMMCore_8h_source.html @@ -199,7 +199,7 @@ $(function() {
Definition: STAmount.h:46
NotTEC invalidAMMAssetPair(Issue const &issue1, Issue const &issue2, std::optional< std::pair< Issue, Issue >> const &pair=std::nullopt)
Definition: AMMCore.cpp:79
-
Definition: STObject.h:53
+
Definition: STObject.h:54
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr std::uint16_t TRADING_FEE_THRESHOLD
Definition: AMMCore.h:31
constexpr std::uint32_t TOTAL_TIME_SLOT_SECS
Definition: AMMCore.h:34
diff --git a/AMMCreate_8cpp_source.html b/AMMCreate_8cpp_source.html index cdcc49b425..2d2859d2a4 100644 --- a/AMMCreate_8cpp_source.html +++ b/AMMCreate_8cpp_source.html @@ -450,7 +450,7 @@ $(function() {
379 } // namespace ripple
Keylet ownerDir(AccountID const &id) noexcept
The root page of an account's directory.
Definition: Indexes.cpp:312
-
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:283
+
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:286
@ tecFROZEN
Definition: TER.h:283
virtual OrderBookDB & getOrderBookDB()=0
NotTEC preflight2(PreflightContext const &ctx)
Checks whether the signature appears valid.
Definition: Transactor.cpp:133
@@ -524,7 +524,7 @@ $(function() {
Stream error() const
Definition: Journal.h:332
@ tecINTERNAL
Definition: TER.h:290
XRPAmount xrpLiquid(ReadView const &view, AccountID const &id, std::int32_t ownerCountAdj, beast::Journal j)
Definition: View.cpp:346
-
std::uint32_t getFlags() const
Definition: STObject.cpp:481
+
std::uint32_t getFlags() const
Definition: STObject.cpp:496
Definition: STTx.h:46
bool isXRP(AccountID const &c)
Definition: AccountID.h:91
State information when applying a tx.
Definition: ApplyContext.h:35
diff --git a/AMMDelete_8cpp_source.html b/AMMDelete_8cpp_source.html index f025dc7b1a..b86107f1d0 100644 --- a/AMMDelete_8cpp_source.html +++ b/AMMDelete_8cpp_source.html @@ -173,7 +173,7 @@ $(function() {
const SF_ISSUE sfAsset2
Discardable, editable view to a ledger.
Definition: Sandbox.h:34
-
std::uint32_t getFlags() const
Definition: STObject.cpp:481
+
std::uint32_t getFlags() const
Definition: STObject.cpp:496
virtual std::shared_ptr< SLE const > read(Keylet const &k) const =0
Return the state item associated with a key.
ApplyView & view()
Definition: ApplyContext.h:54
static NotTEC preflight(PreflightContext const &ctx)
Definition: AMMDelete.cpp:33
@@ -182,7 +182,7 @@ $(function() {
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
@ temDISABLED
Definition: TER.h:113
@ terNO_AMM
Definition: TER.h:220
-
TER deleteAMMAccount(Sandbox &view, Issue const &asset, Issue const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition: AMMUtils.cpp:234
+
TER deleteAMMAccount(Sandbox &view, Issue const &asset, Issue const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition: AMMUtils.cpp:237
TER doApply() override
Definition: AMMDelete.cpp:69
ApplyContext & ctx_
Definition: Transactor.h:88
Stream debug() const
Definition: Journal.h:314
diff --git a/AMMDeposit_8cpp_source.html b/AMMDeposit_8cpp_source.html index 4d857315f7..b1182aef36 100644 --- a/AMMDeposit_8cpp_source.html +++ b/AMMDeposit_8cpp_source.html @@ -904,7 +904,7 @@ $(function() {
904 } // namespace ripple
std::pair< TER, STAmount > singleDepositTokens(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount, STAmount const &lptAMMBalance, STAmount const &lpTokensDeposit, std::uint16_t tfee)
Single asset deposit (Asset1In, LPTokens) by the tokens.
Definition: AMMDeposit.cpp:752
-
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:283
+
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:286
@ tecFROZEN
Definition: TER.h:283
NotTEC preflight2(PreflightContext const &ctx)
Checks whether the signature appears valid.
Definition: Transactor.cpp:133
@ tecUNFUNDED_AMM
Definition: TER.h:308
@@ -967,7 +967,7 @@ $(function() {
Stream error() const
Definition: Journal.h:332
@ tecINTERNAL
Definition: TER.h:290
XRPAmount xrpLiquid(ReadView const &view, AccountID const &id, std::int32_t ownerCountAdj, beast::Journal j)
Definition: View.cpp:346
-
std::uint32_t getFlags() const
Definition: STObject.cpp:481
+
std::uint32_t getFlags() const
Definition: STObject.cpp:496
bool isXRP(AccountID const &c)
Definition: AccountID.h:91
@ temBAD_AMOUNT
Definition: TER.h:88
diff --git a/AMMExtended__test_8cpp_source.html b/AMMExtended__test_8cpp_source.html index cca50deda4..f46c5d97fe 100644 --- a/AMMExtended__test_8cpp_source.html +++ b/AMMExtended__test_8cpp_source.html @@ -3997,7 +3997,7 @@ $(function() {
PrettyAmount drops(Integer i)
Returns an XRP PrettyAmount, which is trivially convertible to STAmount.
Definition: amount.h:241
bool same(STPathSet const &st1, Args const &... args)
Definition: TestHelpers.h:150
Json::Value rpc(unsigned apiVersion, std::unordered_map< std::string, std::string > const &headers, std::string const &cmd, Args &&... args)
Execute an RPC command.
Definition: Env.h:711
-
AccountID const & ammAccount() const
Definition: AMM.h:255
+
AccountID const & ammAccount() const
Definition: AMM.h:336
void testPayStrand()
Set the expected result code for a JTx The test will fail if the code doesn't match.
Definition: ter.h:33
void testRIPD1373(FeatureBitset features)
@@ -4022,7 +4022,7 @@ $(function() {
Check a set of conditions.
Definition: require.h:63
PrettyAmount xrpMinusFee(Env const &env, std::int64_t xrpAmount)
Definition: TestHelpers.cpp:93
void testCurrencyConversionInParts(FeatureBitset features)
-
Json::Value pay(Account const &account, AccountID const &to, STAmount const &amount)
Definition: AMM.cpp:746
+
Json::Value pay(Account const &account, AccountID const &to, STAmount const &amount)
Definition: AMM.cpp:834
void path_find_consume_all()
const jtx::Account gw
Definition: AMMTest.h:64
const uint256 featureMultiSignReserve
@@ -4033,7 +4033,7 @@ $(function() {
PrettyAmount balance(Account const &account) const
Returns the XRP balance on an account.
Definition: Env.cpp:183
constexpr std::uint32_t tfPassive
Definition: TxFlags.h:94
Floating point representation of amounts with high dynamic range.
Definition: IOUAmount.h:43
-
Convenience class to test AMM functionality.
Definition: AMM.h:62
+
Convenience class to test AMM functionality.
Definition: AMM.h:123
void testRmFundedOffer(FeatureBitset features)
void run() override
@ temBAD_PATH
Definition: TER.h:95
@@ -4044,7 +4044,7 @@ $(function() {
BEAST_DEFINE_TESTSUITE_PRIO(AccountDelete, app, ripple, 2)
void testFlow()
bool empty() const
Definition: STPathSet.h:503
-
bool expectBalances(STAmount const &asset1, STAmount const &asset2, IOUAmount const &lpt, std::optional< AccountID > const &account=std::nullopt) const
Verify the AMM balances.
Definition: AMM.cpp:203
+
bool expectBalances(STAmount const &asset1, STAmount const &asset2, IOUAmount const &lpt, std::optional< AccountID > const &account=std::nullopt) const
Verify the AMM balances.
Definition: AMM.cpp:227
void via_offers_via_gateway()
@ tecKILLED
Definition: TER.h:296
void test_convert_all_of_an_asset(FeatureBitset features)
@@ -4080,7 +4080,7 @@ $(function() {
void path_find_01()
Definition: STAmount.h:46
bool isOffer(jtx::Env &env, jtx::Account const &account, STAmount const &takerPays, STAmount const &takerGets)
An offer exists.
Definition: PathSet.h:71
-
Json::Value trust(AccountID const &account, STAmount const &amount, std::uint32_t flags=0)
Definition: AMM.cpp:734
+
Json::Value trust(AccountID const &account, STAmount const &amount, std::uint32_t flags=0)
Definition: AMM.cpp:822
Add a path.
Definition: paths.h:55
jtx::Env pathTestEnv()
Definition: AMMTest.cpp:159
FeatureBitset supported_amendments()
Definition: Env.h:70
@@ -4091,7 +4091,7 @@ $(function() {
Json::Value fclear(Account const &account, std::uint32_t off)
Remove account flag.
Definition: flags.h:40
void testSellWithFillOrKill(FeatureBitset features)
constexpr std::uint32_t tfFillOrKill
Definition: TxFlags.h:96
-
bool expectTradingFee(std::uint16_t fee) const
Definition: AMM.cpp:284
+
bool expectTradingFee(std::uint16_t fee) const
Definition: AMM.cpp:308
Set the fee on a JTx.
Definition: fee.h:35
const uint256 fix1578
bool equal(std::unique_ptr< Step > const &s1, DirectStepInfo const &dsi)
@@ -4101,7 +4101,7 @@ $(function() {
constexpr std::uint32_t tfSell
Definition: TxFlags.h:97
Match set account flags.
Definition: flags.h:111
const jtx::IOU EUR
Definition: AMMTest.h:69
-
IOUAmount tokens() const
Definition: AMM.h:267
+
IOUAmount tokens() const
Definition: AMM.h:348
@ tecNO_LINE
Definition: TER.h:281
void testPayment(FeatureBitset features)
constexpr std::uint32_t tfSetfAuth
Definition: TxFlags.h:109
diff --git a/AMMInfo_8cpp_source.html b/AMMInfo_8cpp_source.html index 5314a1acd7..9496766d18 100644 --- a/AMMInfo_8cpp_source.html +++ b/AMMInfo_8cpp_source.html @@ -271,57 +271,60 @@ $(function() {
200  }
201  if (voteSlots.size() > 0)
202  ammResult[jss::vote_slots] = std::move(voteSlots);
-
203  if (amm->isFieldPresent(sfAuctionSlot))
-
204  {
-
205  auto const& auctionSlot =
-
206  static_cast<STObject const&>(amm->peekAtField(sfAuctionSlot));
-
207  if (auctionSlot.isFieldPresent(sfAccount))
-
208  {
-
209  Json::Value auction;
-
210  auto const timeSlot = ammAuctionTimeSlot(
-
211  ledger->info().parentCloseTime.time_since_epoch().count(),
-
212  auctionSlot);
-
213  auction[jss::time_interval] =
-
214  timeSlot ? *timeSlot : AUCTION_SLOT_TIME_INTERVALS;
-
215  auctionSlot[sfPrice].setJson(auction[jss::price]);
-
216  auction[jss::discounted_fee] = auctionSlot[sfDiscountedFee];
-
217  auction[jss::account] =
-
218  to_string(auctionSlot.getAccountID(sfAccount));
-
219  auction[jss::expiration] = to_iso8601(NetClock::time_point{
-
220  NetClock::duration{auctionSlot[sfExpiration]}});
-
221  if (auctionSlot.isFieldPresent(sfAuthAccounts))
-
222  {
-
223  Json::Value auth;
-
224  for (auto const& acct :
-
225  auctionSlot.getFieldArray(sfAuthAccounts))
-
226  {
-
227  Json::Value jv;
-
228  jv[jss::account] = to_string(acct.getAccountID(sfAccount));
-
229  auth.append(jv);
-
230  }
-
231  auction[jss::auth_accounts] = auth;
-
232  }
-
233  ammResult[jss::auction_slot] = std::move(auction);
-
234  }
-
235  }
-
236 
-
237  if (!isXRP(asset1Balance))
-
238  ammResult[jss::asset_frozen] =
-
239  isFrozen(*ledger, ammAccountID, issue1.currency, issue1.account);
-
240  if (!isXRP(asset2Balance))
-
241  ammResult[jss::asset2_frozen] =
-
242  isFrozen(*ledger, ammAccountID, issue2.currency, issue2.account);
-
243 
-
244  result[jss::amm] = std::move(ammResult);
-
245  if (!result.isMember(jss::ledger_index) &&
-
246  !result.isMember(jss::ledger_hash))
-
247  result[jss::ledger_current_index] = ledger->info().seq;
-
248  result[jss::validated] = context.ledgerMaster.isValidated(*ledger);
-
249 
-
250  return result;
-
251 }
+
203  assert(
+
204  !ledger->rules().enabled(fixInnerObjTemplate) ||
+
205  amm->isFieldPresent(sfAuctionSlot));
+
206  if (amm->isFieldPresent(sfAuctionSlot))
+
207  {
+
208  auto const& auctionSlot =
+
209  static_cast<STObject const&>(amm->peekAtField(sfAuctionSlot));
+
210  if (auctionSlot.isFieldPresent(sfAccount))
+
211  {
+
212  Json::Value auction;
+
213  auto const timeSlot = ammAuctionTimeSlot(
+
214  ledger->info().parentCloseTime.time_since_epoch().count(),
+
215  auctionSlot);
+
216  auction[jss::time_interval] =
+
217  timeSlot ? *timeSlot : AUCTION_SLOT_TIME_INTERVALS;
+
218  auctionSlot[sfPrice].setJson(auction[jss::price]);
+
219  auction[jss::discounted_fee] = auctionSlot[sfDiscountedFee];
+
220  auction[jss::account] =
+
221  to_string(auctionSlot.getAccountID(sfAccount));
+
222  auction[jss::expiration] = to_iso8601(NetClock::time_point{
+
223  NetClock::duration{auctionSlot[sfExpiration]}});
+
224  if (auctionSlot.isFieldPresent(sfAuthAccounts))
+
225  {
+
226  Json::Value auth;
+
227  for (auto const& acct :
+
228  auctionSlot.getFieldArray(sfAuthAccounts))
+
229  {
+
230  Json::Value jv;
+
231  jv[jss::account] = to_string(acct.getAccountID(sfAccount));
+
232  auth.append(jv);
+
233  }
+
234  auction[jss::auth_accounts] = auth;
+
235  }
+
236  ammResult[jss::auction_slot] = std::move(auction);
+
237  }
+
238  }
+
239 
+
240  if (!isXRP(asset1Balance))
+
241  ammResult[jss::asset_frozen] =
+
242  isFrozen(*ledger, ammAccountID, issue1.currency, issue1.account);
+
243  if (!isXRP(asset2Balance))
+
244  ammResult[jss::asset2_frozen] =
+
245  isFrozen(*ledger, ammAccountID, issue2.currency, issue2.account);
+
246 
+
247  result[jss::amm] = std::move(ammResult);
+
248  if (!result.isMember(jss::ledger_index) &&
+
249  !result.isMember(jss::ledger_hash))
+
250  result[jss::ledger_current_index] = ledger->info().seq;
+
251  result[jss::validated] = context.ledgerMaster.isValidated(*ledger);
252 
-
253 } // namespace ripple
+
253  return result;
+
254 }
+
255 
+
256 } // namespace ripple
virtual LedgerInfo const & info() const =0
Returns information about the ledger.
T has_value(T... args)
@@ -330,6 +333,7 @@ $(function() {
A currency issued by an account.
Definition: Issue.h:35
const SF_ISSUE sfAsset
STL class.
+
bool enabled(uint256 const &feature) const
Returns true if a feature is enabled.
Definition: Rules.cpp:94
STL class.
@ rpcINVALID_PARAMS
Definition: ErrorCodes.h:84
constexpr std::uint16_t AUCTION_SLOT_TIME_INTERVALS
Definition: AMMCore.h:35
@@ -372,10 +376,11 @@ $(function() {
virtual std::shared_ptr< SLE const > read(Keylet const &k) const =0
Return the state item associated with a key.
std::optional< AccountID > getAccount(Json::Value const &v, Json::Value &result)
Definition: AMMInfo.cpp:33
Json::Value doAMMInfo(RPC::JsonContext &context)
Definition: AMMInfo.cpp:74
-
Definition: STObject.h:53
+
Definition: STObject.h:54
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
@ rpcACT_MALFORMED
Definition: ErrorCodes.h:90
bool isValidated(ReadView const &ledger)
+
virtual Rules const & rules() const =0
Returns the tx processing rules.
STAmount ammLPHolds(ReadView const &view, Currency const &cur1, Currency const &cur2, AccountID const &ammAccount, AccountID const &lpAccount, beast::Journal const j)
Get the balance of LP tokens.
Definition: AMMUtils.cpp:104
Stream debug() const
Definition: Journal.h:314
@@ -383,6 +388,7 @@ $(function() {
const SF_ACCOUNT sfAccount
@ rpcISSUE_MALFORMED
Definition: ErrorCodes.h:146
const SField sfAuctionSlot
+
const uint256 fixInnerObjTemplate
Json::Value params
Definition: Context.h:64
void inject_error(error_code_i code, JsonValue &json)
Add or update the json update to reflect the error code.
Definition: ErrorCodes.h:214
bool isFrozen(ReadView const &view, AccountID const &account, Currency const &currency, AccountID const &issuer)
Definition: View.cpp:203
diff --git a/AMMInfo__test_8cpp_source.html b/AMMInfo__test_8cpp_source.html index 521c021a44..d400971806 100644 --- a/AMMInfo__test_8cpp_source.html +++ b/AMMInfo__test_8cpp_source.html @@ -310,27 +310,27 @@ $(function() {
void testErrors()
const XRP_t XRP
Converts to XRP Issue or STAmount.
Definition: amount.cpp:105
STL class.
-
AccountID const & ammAccount() const
Definition: AMM.h:255
+
AccountID const & ammAccount() const
Definition: AMM.h:336
STL class.
STL class.
Currency currency
Definition: Issue.h:38
-
void vote(std::optional< Account > const &account, std::uint32_t feeVal, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Definition: AMM.cpp:578
+
void vote(std::optional< Account > const &account, std::uint32_t feeVal, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Definition: AMM.cpp:633
std::string const & human() const
Returns the human readable public key.
Definition: Account.h:113
const jtx::Account gw
Definition: AMMTest.h:64
const jtx::Account carol
Definition: AMMTest.h:65
-
IOUAmount deposit(std::optional< Account > const &account, LPToken tokens, std::optional< STAmount > const &asset1InDetails=std::nullopt, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Definition: AMM.cpp:383
+
IOUAmount deposit(std::optional< Account > const &account, LPToken tokens, std::optional< STAmount > const &asset1InDetails=std::nullopt, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Definition: AMM.cpp:407
const jtx::Account alice
Definition: AMMTest.h:66
Issue issue() const
Definition: amount.h:303
-
void bid(std::optional< Account > const &account, std::optional< std::variant< int, IOUAmount, STAmount >> const &bidMin=std::nullopt, std::optional< std::variant< int, IOUAmount, STAmount >> const &bidMax=std::nullopt, std::vector< Account > const &authAccounts={}, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Definition: AMM.cpp:599
+
void bid(std::optional< Account > const &account, std::optional< std::variant< int, IOUAmount, STAmount >> const &bidMin=std::nullopt, std::optional< std::variant< int, IOUAmount, STAmount >> const &bidMax=std::nullopt, std::vector< Account > const &authAccounts={}, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Definition: AMM.cpp:660
Floating point representation of amounts with high dynamic range.
Definition: IOUAmount.h:43
-
Convenience class to test AMM functionality.
Definition: AMM.h:62
+
Convenience class to test AMM functionality.
Definition: AMM.h:123
@ freeze
T contains(T... args)
AccountID id() const
Returns the Account ID.
Definition: Account.h:106
-
Json::Value ammRpcInfo(std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledgerIndex=std::nullopt, std::optional< Issue > issue1=std::nullopt, std::optional< Issue > issue2=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt, bool ignoreParams=false) const
Send amm_info RPC command.
Definition: AMM.cpp:136
-
bool expectAmmRpcInfo(STAmount const &asset1, STAmount const &asset2, IOUAmount const &balance, std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledger_index=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt) const
Definition: AMM.cpp:300
+
Json::Value ammRpcInfo(std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledgerIndex=std::nullopt, std::optional< Issue > issue1=std::nullopt, std::optional< Issue > issue2=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt, bool ignoreParams=false) const
Send amm_info RPC command.
Definition: AMM.cpp:160
+
bool expectAmmRpcInfo(STAmount const &asset1, STAmount const &asset2, IOUAmount const &balance, std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledger_index=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt) const
Definition: AMM.cpp:324
const jtx::Account bob
Definition: AMMTest.h:67
Definition: AMMTest.h:61
Json::Value fset(Account const &account, std::uint32_t on, std::uint32_t off=0)
Add and/or remove flag.
Definition: flags.cpp:28
@@ -341,7 +341,7 @@ $(function() {
void testVoteAndBid()
void run() override
Json::Value fclear(Account const &account, std::uint32_t off)
Remove account flag.
Definition: flags.h:40
-
bool expectTradingFee(std::uint16_t fee) const
Definition: AMM.cpp:284
+
bool expectTradingFee(std::uint16_t fee) const
Definition: AMM.cpp:308
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
T insert(T... args)
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
Definition: Env.cpp:228
@@ -356,7 +356,7 @@ $(function() {
void testSimpleRpc()
void testAMM(std::function< void(jtx::AMM &, jtx::Env &)> &&cb, std::optional< std::pair< STAmount, STAmount >> const &pool=std::nullopt, std::uint16_t tfee=0, std::optional< jtx::ter > const &ter=std::nullopt, std::optional< FeatureBitset > const &features=std::nullopt)
testAMM() funds 30,000XRP and 30,000IOU for each non-XRP asset to Alice and Carol
Definition: AMMTest.cpp:101
-
Issue lptIssue() const
Definition: AMM.h:261
+
Issue lptIssue() const
Definition: AMM.h:342
A transaction testing environment.
Definition: Env.h:116
AccountID account
Definition: Issue.h:39
T what(T... args)
diff --git a/AMMLiquidity_8cpp_source.html b/AMMLiquidity_8cpp_source.html index 953c3e6e6f..647d0f828c 100644 --- a/AMMLiquidity_8cpp_source.html +++ b/AMMLiquidity_8cpp_source.html @@ -325,7 +325,7 @@ $(function() {
Stream debug() const
Definition: Journal.h:314
std::string to_string(Manifest const &m)
Format the specified manifest to a string for debugging purposes.
static const int cMaxOffset
Definition: STAmount.h:64
-
STAmount ammAccountHolds(ReadView const &view, AccountID const &ammAccountID, Issue const &issue)
Returns total amount held by AMM for the given token.
Definition: AMMUtils.cpp:166
+
STAmount ammAccountHolds(ReadView const &view, AccountID const &ammAccountID, Issue const &issue)
Returns total amount held by AMM for the given token.
Definition: AMMUtils.cpp:169
static const std::uint64_t cMaxValue
Definition: STAmount.h:68
T what(T... args)
Definition: XRPAmount.h:46
diff --git a/AMMTest_8cpp_source.html b/AMMTest_8cpp_source.html index bb2c7741ee..aa2ab934f6 100644 --- a/AMMTest_8cpp_source.html +++ b/AMMTest_8cpp_source.html @@ -375,7 +375,7 @@ $(function() {
const Charge feeReferenceRPC
Application & app()
Definition: Env.h:241
-
Convenience class to test AMM functionality.
Definition: AMM.h:62
+
Convenience class to test AMM functionality.
Definition: AMM.h:123
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:54
std::optional< STObject > object
The STObject if the parse was successful.
Definition: STParsedJSON.h:50
diff --git a/AMMTest_8h_source.html b/AMMTest_8h_source.html index ac275fa796..ea4ede6a4f 100644 --- a/AMMTest_8h_source.html +++ b/AMMTest_8h_source.html @@ -237,7 +237,7 @@ $(function() {
STL class.
const jtx::Account alice
Definition: AMMTest.h:66
-
Convenience class to test AMM functionality.
Definition: AMM.h:62
+
Convenience class to test AMM functionality.
Definition: AMM.h:123
@ IOUOnly
std::tuple< STPathSet, STAmount, STAmount > find_paths(jtx::Env &env, jtx::Account const &src, jtx::Account const &dst, STAmount const &saDstAmount, std::optional< STAmount > const &saSendMax=std::nullopt, std::optional< Currency > const &saSrcCurrency=std::nullopt)
Definition: AMMTest.cpp:232
diff --git a/AMMUtils_8cpp_source.html b/AMMUtils_8cpp_source.html index a66c172e5a..c6a8fc9a67 100644 --- a/AMMUtils_8cpp_source.html +++ b/AMMUtils_8cpp_source.html @@ -209,203 +209,216 @@ $(function() {
138 getTradingFee(ReadView const& view, SLE const& ammSle, AccountID const& account)
139 {
140  using namespace std::chrono;
-
141  if (ammSle.isFieldPresent(sfAuctionSlot))
-
142  {
-
143  auto const& auctionSlot =
-
144  static_cast<STObject const&>(ammSle.peekAtField(sfAuctionSlot));
-
145  // Not expired
-
146  if (auto const expiration = auctionSlot[~sfExpiration];
-
147  duration_cast<seconds>(
-
148  view.info().parentCloseTime.time_since_epoch())
-
149  .count() < expiration)
-
150  {
-
151  if (auctionSlot[~sfAccount] == account)
-
152  return auctionSlot[sfDiscountedFee];
-
153  if (auctionSlot.isFieldPresent(sfAuthAccounts))
-
154  {
-
155  for (auto const& acct :
-
156  auctionSlot.getFieldArray(sfAuthAccounts))
-
157  if (acct[~sfAccount] == account)
-
158  return auctionSlot[sfDiscountedFee];
-
159  }
-
160  }
-
161  }
-
162  return ammSle[sfTradingFee];
-
163 }
-
164 
-
165 STAmount
-
166 ammAccountHolds(
-
167  ReadView const& view,
-
168  AccountID const& ammAccountID,
-
169  Issue const& issue)
-
170 {
-
171  if (isXRP(issue))
-
172  {
-
173  if (auto const sle = view.read(keylet::account(ammAccountID)))
-
174  return (*sle)[sfBalance];
-
175  }
-
176  else if (auto const sle = view.read(
-
177  keylet::line(ammAccountID, issue.account, issue.currency));
-
178  sle &&
-
179  !isFrozen(view, ammAccountID, issue.currency, issue.account))
-
180  {
-
181  auto amount = (*sle)[sfBalance];
-
182  if (ammAccountID > issue.account)
-
183  amount.negate();
-
184  amount.setIssuer(issue.account);
-
185  return amount;
-
186  }
-
187 
-
188  return STAmount{issue};
-
189 }
+
141  assert(
+
142  !view.rules().enabled(fixInnerObjTemplate) ||
+
143  ammSle.isFieldPresent(sfAuctionSlot));
+
144  if (ammSle.isFieldPresent(sfAuctionSlot))
+
145  {
+
146  auto const& auctionSlot =
+
147  static_cast<STObject const&>(ammSle.peekAtField(sfAuctionSlot));
+
148  // Not expired
+
149  if (auto const expiration = auctionSlot[~sfExpiration];
+
150  duration_cast<seconds>(
+
151  view.info().parentCloseTime.time_since_epoch())
+
152  .count() < expiration)
+
153  {
+
154  if (auctionSlot[~sfAccount] == account)
+
155  return auctionSlot[sfDiscountedFee];
+
156  if (auctionSlot.isFieldPresent(sfAuthAccounts))
+
157  {
+
158  for (auto const& acct :
+
159  auctionSlot.getFieldArray(sfAuthAccounts))
+
160  if (acct[~sfAccount] == account)
+
161  return auctionSlot[sfDiscountedFee];
+
162  }
+
163  }
+
164  }
+
165  return ammSle[sfTradingFee];
+
166 }
+
167 
+
168 STAmount
+
169 ammAccountHolds(
+
170  ReadView const& view,
+
171  AccountID const& ammAccountID,
+
172  Issue const& issue)
+
173 {
+
174  if (isXRP(issue))
+
175  {
+
176  if (auto const sle = view.read(keylet::account(ammAccountID)))
+
177  return (*sle)[sfBalance];
+
178  }
+
179  else if (auto const sle = view.read(
+
180  keylet::line(ammAccountID, issue.account, issue.currency));
+
181  sle &&
+
182  !isFrozen(view, ammAccountID, issue.currency, issue.account))
+
183  {
+
184  auto amount = (*sle)[sfBalance];
+
185  if (ammAccountID > issue.account)
+
186  amount.negate();
+
187  amount.setIssuer(issue.account);
+
188  return amount;
+
189  }
190 
-
191 static TER
-
192 deleteAMMTrustLines(
-
193  Sandbox& sb,
-
194  AccountID const& ammAccountID,
-
195  std::uint16_t maxTrustlinesToDelete,
-
196  beast::Journal j)
-
197 {
-
198  return cleanupOnAccountDelete(
-
199  sb,
-
200  keylet::ownerDir(ammAccountID),
-
201  [&](LedgerEntryType nodeType,
-
202  uint256 const&,
-
203  std::shared_ptr<SLE>& sleItem) -> std::pair<TER, SkipEntry> {
-
204  // Skip AMM
-
205  if (nodeType == LedgerEntryType::ltAMM)
-
206  return {tesSUCCESS, SkipEntry::Yes};
-
207  // Should only have the trustlines
-
208  if (nodeType != LedgerEntryType::ltRIPPLE_STATE)
-
209  {
-
210  JLOG(j.error())
-
211  << "deleteAMMTrustLines: deleting non-trustline "
-
212  << nodeType;
-
213  return {tecINTERNAL, SkipEntry::No};
-
214  }
-
215 
-
216  // Trustlines must have zero balance
-
217  if (sleItem->getFieldAmount(sfBalance) != beast::zero)
-
218  {
-
219  JLOG(j.error())
-
220  << "deleteAMMTrustLines: deleting trustline with "
-
221  "non-zero balance.";
-
222  return {tecINTERNAL, SkipEntry::No};
-
223  }
-
224 
-
225  return {
-
226  deleteAMMTrustLine(sb, sleItem, ammAccountID, j),
-
227  SkipEntry::No};
-
228  },
-
229  j,
-
230  maxTrustlinesToDelete);
-
231 }
-
232 
-
233 TER
-
234 deleteAMMAccount(
-
235  Sandbox& sb,
-
236  Issue const& asset,
-
237  Issue const& asset2,
-
238  beast::Journal j)
-
239 {
-
240  auto ammSle = sb.peek(keylet::amm(asset, asset2));
-
241  if (!ammSle)
-
242  {
-
243  JLOG(j.error()) << "deleteAMMAccount: AMM object does not exist "
-
244  << asset << " " << asset2;
-
245  return tecINTERNAL;
-
246  }
-
247 
-
248  auto const ammAccountID = (*ammSle)[sfAccount];
-
249  auto sleAMMRoot = sb.peek(keylet::account(ammAccountID));
-
250  if (!sleAMMRoot)
-
251  {
-
252  JLOG(j.error()) << "deleteAMMAccount: AMM account does not exist "
-
253  << to_string(ammAccountID);
-
254  return tecINTERNAL;
-
255  }
-
256 
-
257  if (auto const ter =
-
258  deleteAMMTrustLines(sb, ammAccountID, maxDeletableAMMTrustLines, j);
-
259  ter != tesSUCCESS)
-
260  return ter;
-
261 
-
262  auto const ownerDirKeylet = keylet::ownerDir(ammAccountID);
-
263  if (!sb.dirRemove(
-
264  ownerDirKeylet, (*ammSle)[sfOwnerNode], ammSle->key(), false))
-
265  {
-
266  JLOG(j.error()) << "deleteAMMAccount: failed to remove dir link";
-
267  return tecINTERNAL;
-
268  }
-
269  if (sb.exists(ownerDirKeylet) && !sb.emptyDirDelete(ownerDirKeylet))
-
270  {
-
271  JLOG(j.error()) << "deleteAMMAccount: cannot delete root dir node of "
-
272  << toBase58(ammAccountID);
-
273  return tecINTERNAL;
-
274  }
-
275 
-
276  sb.erase(ammSle);
-
277  sb.erase(sleAMMRoot);
+
191  return STAmount{issue};
+
192 }
+
193 
+
194 static TER
+
195 deleteAMMTrustLines(
+
196  Sandbox& sb,
+
197  AccountID const& ammAccountID,
+
198  std::uint16_t maxTrustlinesToDelete,
+
199  beast::Journal j)
+
200 {
+
201  return cleanupOnAccountDelete(
+
202  sb,
+
203  keylet::ownerDir(ammAccountID),
+
204  [&](LedgerEntryType nodeType,
+
205  uint256 const&,
+
206  std::shared_ptr<SLE>& sleItem) -> std::pair<TER, SkipEntry> {
+
207  // Skip AMM
+
208  if (nodeType == LedgerEntryType::ltAMM)
+
209  return {tesSUCCESS, SkipEntry::Yes};
+
210  // Should only have the trustlines
+
211  if (nodeType != LedgerEntryType::ltRIPPLE_STATE)
+
212  {
+
213  JLOG(j.error())
+
214  << "deleteAMMTrustLines: deleting non-trustline "
+
215  << nodeType;
+
216  return {tecINTERNAL, SkipEntry::No};
+
217  }
+
218 
+
219  // Trustlines must have zero balance
+
220  if (sleItem->getFieldAmount(sfBalance) != beast::zero)
+
221  {
+
222  JLOG(j.error())
+
223  << "deleteAMMTrustLines: deleting trustline with "
+
224  "non-zero balance.";
+
225  return {tecINTERNAL, SkipEntry::No};
+
226  }
+
227 
+
228  return {
+
229  deleteAMMTrustLine(sb, sleItem, ammAccountID, j),
+
230  SkipEntry::No};
+
231  },
+
232  j,
+
233  maxTrustlinesToDelete);
+
234 }
+
235 
+
236 TER
+
237 deleteAMMAccount(
+
238  Sandbox& sb,
+
239  Issue const& asset,
+
240  Issue const& asset2,
+
241  beast::Journal j)
+
242 {
+
243  auto ammSle = sb.peek(keylet::amm(asset, asset2));
+
244  if (!ammSle)
+
245  {
+
246  JLOG(j.error()) << "deleteAMMAccount: AMM object does not exist "
+
247  << asset << " " << asset2;
+
248  return tecINTERNAL;
+
249  }
+
250 
+
251  auto const ammAccountID = (*ammSle)[sfAccount];
+
252  auto sleAMMRoot = sb.peek(keylet::account(ammAccountID));
+
253  if (!sleAMMRoot)
+
254  {
+
255  JLOG(j.error()) << "deleteAMMAccount: AMM account does not exist "
+
256  << to_string(ammAccountID);
+
257  return tecINTERNAL;
+
258  }
+
259 
+
260  if (auto const ter =
+
261  deleteAMMTrustLines(sb, ammAccountID, maxDeletableAMMTrustLines, j);
+
262  ter != tesSUCCESS)
+
263  return ter;
+
264 
+
265  auto const ownerDirKeylet = keylet::ownerDir(ammAccountID);
+
266  if (!sb.dirRemove(
+
267  ownerDirKeylet, (*ammSle)[sfOwnerNode], ammSle->key(), false))
+
268  {
+
269  JLOG(j.error()) << "deleteAMMAccount: failed to remove dir link";
+
270  return tecINTERNAL;
+
271  }
+
272  if (sb.exists(ownerDirKeylet) && !sb.emptyDirDelete(ownerDirKeylet))
+
273  {
+
274  JLOG(j.error()) << "deleteAMMAccount: cannot delete root dir node of "
+
275  << toBase58(ammAccountID);
+
276  return tecINTERNAL;
+
277  }
278 
-
279  return tesSUCCESS;
-
280 }
+
279  sb.erase(ammSle);
+
280  sb.erase(sleAMMRoot);
281 
-
282 void
-
283 initializeFeeAuctionVote(
-
284  ApplyView& view,
-
285  std::shared_ptr<SLE>& ammSle,
-
286  AccountID const& account,
-
287  Issue const& lptIssue,
-
288  std::uint16_t tfee)
-
289 {
-
290  // AMM creator gets the voting slot.
-
291  STArray voteSlots;
-
292  STObject voteEntry{sfVoteEntry};
-
293  if (tfee != 0)
-
294  voteEntry.setFieldU16(sfTradingFee, tfee);
-
295  voteEntry.setFieldU32(sfVoteWeight, VOTE_WEIGHT_SCALE_FACTOR);
-
296  voteEntry.setAccountID(sfAccount, account);
-
297  voteSlots.push_back(voteEntry);
-
298  ammSle->setFieldArray(sfVoteSlots, voteSlots);
-
299  // AMM creator gets the auction slot for free.
-
300  auto& auctionSlot = ammSle->peekFieldObject(sfAuctionSlot);
-
301  auctionSlot.setAccountID(sfAccount, account);
-
302  // current + sec in 24h
-
303  auto const expiration = std::chrono::duration_cast<std::chrono::seconds>(
-
304  view.info().parentCloseTime.time_since_epoch())
-
305  .count() +
-
306  TOTAL_TIME_SLOT_SECS;
-
307  auctionSlot.setFieldU32(sfExpiration, expiration);
-
308  auctionSlot.setFieldAmount(sfPrice, STAmount{lptIssue, 0});
-
309  // Set the fee
-
310  if (tfee != 0)
-
311  ammSle->setFieldU16(sfTradingFee, tfee);
-
312  else if (ammSle->isFieldPresent(sfTradingFee))
-
313  ammSle->makeFieldAbsent(sfTradingFee);
-
314  if (auto const dfee = tfee / AUCTION_SLOT_DISCOUNTED_FEE_FRACTION)
-
315  auctionSlot.setFieldU16(sfDiscountedFee, dfee);
-
316  else if (auctionSlot.isFieldPresent(sfDiscountedFee))
-
317  auctionSlot.makeFieldAbsent(sfDiscountedFee);
-
318 }
-
319 
-
320 } // namespace ripple
+
282  return tesSUCCESS;
+
283 }
+
284 
+
285 void
+
286 initializeFeeAuctionVote(
+
287  ApplyView& view,
+
288  std::shared_ptr<SLE>& ammSle,
+
289  AccountID const& account,
+
290  Issue const& lptIssue,
+
291  std::uint16_t tfee)
+
292 {
+
293  auto const& rules = view.rules();
+
294  // AMM creator gets the voting slot.
+
295  STArray voteSlots;
+
296  STObject voteEntry = STObject::makeInnerObject(sfVoteEntry, rules);
+
297  if (tfee != 0)
+
298  voteEntry.setFieldU16(sfTradingFee, tfee);
+
299  voteEntry.setFieldU32(sfVoteWeight, VOTE_WEIGHT_SCALE_FACTOR);
+
300  voteEntry.setAccountID(sfAccount, account);
+
301  voteSlots.push_back(voteEntry);
+
302  ammSle->setFieldArray(sfVoteSlots, voteSlots);
+
303  // AMM creator gets the auction slot for free.
+
304  // AuctionSlot is created on AMMCreate and updated on AMMDeposit
+
305  // when AMM is in an empty state
+
306  if (rules.enabled(fixInnerObjTemplate) &&
+
307  !ammSle->isFieldPresent(sfAuctionSlot))
+
308  {
+
309  STObject auctionSlot = STObject::makeInnerObject(sfAuctionSlot, rules);
+
310  ammSle->set(std::move(auctionSlot));
+
311  }
+
312  STObject& auctionSlot = ammSle->peekFieldObject(sfAuctionSlot);
+
313  auctionSlot.setAccountID(sfAccount, account);
+
314  // current + sec in 24h
+
315  auto const expiration = std::chrono::duration_cast<std::chrono::seconds>(
+
316  view.info().parentCloseTime.time_since_epoch())
+
317  .count() +
+
318  TOTAL_TIME_SLOT_SECS;
+
319  auctionSlot.setFieldU32(sfExpiration, expiration);
+
320  auctionSlot.setFieldAmount(sfPrice, STAmount{lptIssue, 0});
+
321  // Set the fee
+
322  if (tfee != 0)
+
323  ammSle->setFieldU16(sfTradingFee, tfee);
+
324  else if (ammSle->isFieldPresent(sfTradingFee))
+
325  ammSle->makeFieldAbsent(sfTradingFee);
+
326  if (auto const dfee = tfee / AUCTION_SLOT_DISCOUNTED_FEE_FRACTION)
+
327  auctionSlot.setFieldU16(sfDiscountedFee, dfee);
+
328  else if (auctionSlot.isFieldPresent(sfDiscountedFee))
+
329  auctionSlot.makeFieldAbsent(sfDiscountedFee);
+
330 }
+
331 
+
332 } // namespace ripple
virtual LedgerInfo const & info() const =0
Returns information about the ledger.
-
const STBase & peekAtField(SField const &field) const
Definition: STObject.cpp:373
+
const STBase & peekAtField(SField const &field) const
Definition: STObject.cpp:388
Keylet ownerDir(AccountID const &id) noexcept
The root page of an account's directory.
Definition: Indexes.cpp:312
-
void setAccountID(SField const &field, AccountID const &)
Definition: STObject.cpp:689
+
void setAccountID(SField const &field, AccountID const &)
Definition: STObject.cpp:710
void negate()
Definition: STAmount.h:405
bool issues(DebtDirection dir)
Definition: Steps.h:51
-
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:283
+
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:286
T make_tuple(T... args)
const SF_UINT16 sfDiscountedFee
-
void makeFieldAbsent(SField const &field)
Definition: STObject.cpp:514
+
void makeFieldAbsent(SField const &field)
Definition: STObject.cpp:529
Definition: STLedgerEntry.h:30
A currency issued by an account.
Definition: Issue.h:35
const SF_ISSUE sfAsset
+
bool enabled(uint256 const &feature) const
Returns true if a feature is enabled.
Definition: Rules.cpp:94
STL class.
const SF_UINT64 sfOwnerNode
-
void setFieldU16(SField const &field, std::uint16_t)
Definition: STObject.cpp:653
+
void setFieldU16(SField const &field, std::uint16_t)
Definition: STObject.cpp:674
constexpr std::uint32_t VOTE_WEIGHT_SCALE_FACTOR
Definition: AMMCore.h:45
Expected< std::tuple< STAmount, STAmount, STAmount >, TER > ammHolds(ReadView const &view, SLE const &ammSle, std::optional< Issue > const &optIssue1, std::optional< Issue > const &optIssue2, FreezeHandling freezeHandling, beast::Journal const j)
Get AMM pool and LP token balances.
Definition: AMMUtils.cpp:45
const SField sfVoteSlots
@@ -437,9 +450,11 @@ $(function() {
NetClock::time_point parentCloseTime
Definition: LedgerHeader.h:42
@ Yes
const SF_ISSUE sfAsset2
-
void setFieldArray(SField const &field, STArray const &v)
Definition: STObject.cpp:725
+
void setFieldArray(SField const &field, STArray const &v)
Definition: STObject.cpp:746
+
static STObject makeInnerObject(SField const &name, Rules const &rules)
Definition: STObject.cpp:63
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition: Indexes.cpp:142
-
AccountID getAccountID(SField const &field) const
Definition: STObject.cpp:589
+
void setFieldAmount(SField const &field, STAmount const &)
Definition: STObject.cpp:728
+
AccountID getAccountID(SField const &field) const
Definition: STObject.cpp:604
@ tecAMM_INVALID_TOKENS
Definition: TER.h:311
const SField sfAuthAccounts
std::uint16_t getTradingFee(ReadView const &view, SLE const &ammSle, AccountID const &account)
Get AMM trading fee for the given account.
Definition: AMMUtils.cpp:138
@@ -457,16 +472,17 @@ $(function() {
virtual std::shared_ptr< SLE const > read(Keylet const &k) const =0
Return the state item associated with a key.
TER cleanupOnAccountDelete(ApplyView &view, Keylet const &ownerDirKeylet, EntryDeleter const &deleter, beast::Journal j, std::optional< uint16_t > maxNodesToDelete)
Definition: View.cpp:1531
void erase(std::shared_ptr< SLE > const &sle) override
Remove a peeked SLE.
-
Definition: STObject.h:53
+
Definition: STObject.h:54
A view into a ledger.
Definition: ReadView.h:54
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
-
STObject & peekFieldObject(SField const &field)
Definition: STObject.cpp:439
+
STObject & peekFieldObject(SField const &field)
Definition: STObject.cpp:454
constexpr std::uint32_t TOTAL_TIME_SLOT_SECS
Definition: AMMCore.h:34
LedgerEntryType
Identifiers for on-ledger objects.
Definition: LedgerFormats.h:53
bool emptyDirDelete(Keylet const &directory)
Remove the specified directory, if it is empty.
Definition: ApplyView.cpp:125
-
static TER deleteAMMTrustLines(Sandbox &sb, AccountID const &ammAccountID, std::uint16_t maxTrustlinesToDelete, beast::Journal j)
Definition: AMMUtils.cpp:192
-
bool isFieldPresent(SField const &field) const
Definition: STObject.cpp:428
-
TER deleteAMMAccount(Sandbox &view, Issue const &asset, Issue const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition: AMMUtils.cpp:234
+
virtual Rules const & rules() const =0
Returns the tx processing rules.
+
static TER deleteAMMTrustLines(Sandbox &sb, AccountID const &ammAccountID, std::uint16_t maxTrustlinesToDelete, beast::Journal j)
Definition: AMMUtils.cpp:195
+
bool isFieldPresent(SField const &field) const
Definition: STObject.cpp:443
+
TER deleteAMMAccount(Sandbox &view, Issue const &asset, Issue const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition: AMMUtils.cpp:237
STAmount ammLPHolds(ReadView const &view, Currency const &cur1, Currency const &cur2, AccountID const &ammAccount, AccountID const &lpAccount, beast::Journal const j)
Get the balance of LP tokens.
Definition: AMMUtils.cpp:104
@ No
const SF_AMOUNT sfBalance
@@ -478,10 +494,13 @@ $(function() {
std::shared_ptr< SLE > peek(Keylet const &k) override
Prepare to modify the SLE associated with key.
Currency ammLPTCurrency(Currency const &cur1, Currency const &cur2)
Calculate Liquidity Provider Token (LPT) Currency.
Definition: AMMCore.cpp:42
const SField sfAuctionSlot
-
STAmount ammAccountHolds(ReadView const &view, AccountID const &ammAccountID, Issue const &issue)
Returns total amount held by AMM for the given token.
Definition: AMMUtils.cpp:166
+
const uint256 fixInnerObjTemplate
+
void set(const SOTemplate &)
Definition: STObject.cpp:115
+
void setFieldU32(SField const &field, std::uint32_t)
Definition: STObject.cpp:680
+
STAmount ammAccountHolds(ReadView const &view, AccountID const &ammAccountID, Issue const &issue)
Returns total amount held by AMM for the given token.
Definition: AMMUtils.cpp:169
@ tesSUCCESS
Definition: TER.h:235
bool isFrozen(ReadView const &view, AccountID const &account, Currency const &currency, AccountID const &issuer)
Definition: View.cpp:203
-
STAmount const & getFieldAmount(SField const &field) const
Definition: STObject.cpp:603
+
STAmount const & getFieldAmount(SField const &field) const
Definition: STObject.cpp:618
AccountID account
Definition: Issue.h:39
diff --git a/AMMUtils_8h_source.html b/AMMUtils_8h_source.html index bb02829198..c159a7b3d3 100644 --- a/AMMUtils_8h_source.html +++ b/AMMUtils_8h_source.html @@ -169,7 +169,7 @@ $(function() {
117 
118 #endif // RIPPLE_APP_MISC_AMMUTILS_H_INLCUDED
-
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:283
+
void initializeFeeAuctionVote(ApplyView &view, std::shared_ptr< SLE > &ammSle, AccountID const &account, Issue const &lptIssue, std::uint16_t tfee)
Initialize Auction and Voting slots and set the trading/discounted fee.
Definition: AMMUtils.cpp:286
STL class.
Expected< std::tuple< STAmount, STAmount, STAmount >, TER > ammHolds(ReadView const &view, SLE const &ammSle, std::optional< Issue > const &optIssue1, std::optional< Issue > const &optIssue2, FreezeHandling freezeHandling, beast::Journal const j)
Get AMM pool and LP token balances.
Definition: AMMUtils.cpp:45
@@ -183,10 +183,10 @@ $(function() {
base_uint< 160, detail::CurrencyTag > Currency
Currency is a hash representing a specific currency.
Definition: UintTypes.h:56
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
-
TER deleteAMMAccount(Sandbox &view, Issue const &asset, Issue const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition: AMMUtils.cpp:234
+
TER deleteAMMAccount(Sandbox &view, Issue const &asset, Issue const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition: AMMUtils.cpp:237
STAmount ammLPHolds(ReadView const &view, Currency const &cur1, Currency const &cur2, AccountID const &ammAccount, AccountID const &lpAccount, beast::Journal const j)
Get the balance of LP tokens.
Definition: AMMUtils.cpp:104
-
STAmount ammAccountHolds(ReadView const &view, AccountID const &ammAccountID, Issue const &issue)
Returns total amount held by AMM for the given token.
Definition: AMMUtils.cpp:166
+
STAmount ammAccountHolds(ReadView const &view, AccountID const &ammAccountID, Issue const &issue)
Returns total amount held by AMM for the given token.
Definition: AMMUtils.cpp:169
base_uint< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition: AccountID.h:49