Compare commits

..

2 Commits

Author SHA1 Message Date
Mayukha Vadari
a6d9060218 clean up 2026-04-23 16:56:30 -04:00
Mayukha Vadari
6afe1ba64c fix: Regressions in server_definitions 2026-04-23 16:53:38 -04:00
307 changed files with 1920 additions and 1961 deletions

View File

@@ -73,7 +73,7 @@ Checks: "-*,
bugprone-unhandled-self-assignment,
bugprone-unique-ptr-array-mismatch,
bugprone-unsafe-functions,
bugprone-use-after-move,
bugprone-use-after-move, # has issues
bugprone-unused-raii,
bugprone-unused-return-value,
bugprone-unused-local-non-trivial-variable,
@@ -106,7 +106,6 @@ Checks: "-*,
modernize-use-emplace,
modernize-use-equals-default,
modernize-use-equals-delete,
modernize-use-nodiscard,
modernize-use-override,
modernize-use-ranges,
modernize-use-starts-ends-with,

View File

@@ -22,10 +22,117 @@ Responsible investigation includes, but isn't limited to, the following:
- Not targeting physical security measures, or attempting to use social engineering, spam, distributed denial of service (DDOS) attacks, etc.
- Investigating bugs in a way that makes a reasonable, good faith effort not to be disruptive or harmful to the XRP Ledger and the broader ecosystem.
### Responsible Disclosure
If you discover a vulnerability or potential threat, or if you _think_
you have, please reach out by dropping an email using the contact
information below.
Your report should include the following:
- Your contact information (typically, an email address);
- The description of the vulnerability;
- The attack scenario (if any);
- The steps to reproduce the vulnerability;
- Any other relevant details or artifacts, including code, scripts or patches.
In your email, please describe the issue or potential threat. If possible, include a "repro" (code that can reproduce the issue) or describe the best way to reproduce and replicate the issue. Please make your report as detailed and comprehensive as possible.
For more information on responsible disclosure, please read this [Wikipedia article](https://en.wikipedia.org/wiki/Responsible_disclosure).
## Report Handling Process
Please report the bug directly to us and limit further disclosure. If you want to prove that you knew the bug as of a given time, consider using a cryptographic pre-commitment: hash the content of your report and publish the hash on a medium of your choice (e.g. on Twitter or as a memo in a transaction) as "proof" that you had written the text at a given point in time.
Once we receive a report, we:
1. Assign two people to independently evaluate the report;
2. Consider their recommendations;
3. If action is necessary, formulate a plan to address the issue;
4. Communicate privately with the reporter to explain our plan.
5. Prepare, test and release a version which fixes the issue; and
6. Announce the vulnerability publicly.
We will triage and respond to your disclosure within 24 hours. Beyond that, we will work to analyze the issue in more detail, formulate, develop and test a fix.
While we commit to responding with 24 hours of your initial report with our triage assessment, we cannot guarantee a response time for the remaining steps. We will communicate with you throughout this process, letting you know where we are and keeping you updated on the timeframe.
## Bug Bounty Program
[Ripple](https://ripple.com) is generously sponsoring a bug bounty program for vulnerabilities in [`xrpld`](https://github.com/XRPLF/rippled) (and other related projects, like [`Clio`](https://github.com/XRPLF/clio), [`xrpl.js`](https://github.com/XRPLF/xrpl.js), [`xrpl-py`](https://github.com/XRPLF/xrpl-py), [`xrpl4j`](https://github.com/XRPLF/xrpl4j)).
[Ripple](https://ripple.com) is generously sponsoring a bug bounty program for vulnerabilities in [`xrpld`](https://github.com/XRPLF/rippled) (and other related projects, like [`xrpl.js`](https://github.com/XRPLF/xrpl.js), [`xrpl-py`](https://github.com/XRPLF/xrpl-py), [`xrpl4j`](https://github.com/XRPLF/xrpl4j)).
This program allows us to recognize and reward individuals or groups that identify and report bugs.
This program allows us to recognize and reward individuals or groups that identify and report bugs. In summary, in order to qualify for a bounty, the bug must be:
We have partnered with Bugcrowd to manage this program. It is a private program, and security researchers can participate based on invitation. If you need access to the program, please email bugs@ripple.com with your Bugcrowd handle or Bugcrowd registered email, and we will get you added to the program. Once you have been added, please submit vulnerability reports through Bugcrowd, not by email. The detailed bug bounty policy is available on the Bugcrowd website.
1. **In scope**. Only bugs in software under the scope of the program qualify. Currently, that means `xrpld`, `xrpl.js`, `xrpl-py`, `xrpl4j`.
2. **Relevant**. A security issue, posing a danger to user funds, privacy, or the operation of the XRP Ledger.
3. **Original and previously unknown**. Bugs that are already known and discussed in public do not qualify. Previously reported bugs, even if publicly unknown, are not eligible.
4. **Specific**. We welcome general security advice or recommendations, but we cannot pay bounties for that.
5. **Fixable**. There has to be something we can do to permanently fix the problem. Note that bugs in other peoples software may still qualify in some cases. For example, if you find a bug in a library that we use which can compromise the security of software that is in scope and we can get it fixed, you may qualify for a bounty.
6. **Unused**. If you use the exploit to attack the XRP Ledger, you do not qualify for a bounty. If you report a vulnerability used in an ongoing or past attack and there is specific, concrete evidence that suggests you are the attacker we reserve the right not to pay a bounty.
The amount paid varies dramatically. Vulnerabilities that are harmless on their own, but could form part of a critical exploit will usually receive a bounty. Full-blown exploits can receive much higher bounties. Please dont hold back partial vulnerabilities while trying to construct a full-blown exploit. We will pay a bounty to anyone who reports a complete chain of vulnerabilities even if they have reported each component of the exploit separately and those vulnerabilities have been fixed in the meantime. However, to qualify for a the full bounty, you must to have been the first to report each of the partial exploits.
### Contacting Us
To report a qualifying bug, please send a detailed report to:
| Email Address | bugs@ripple.com |
| :-----------: | :-------------------------------------------------- |
| Short Key ID | `0xA9F514E0` |
| Long Key ID | `0xD900855AA9F514E0` |
| Fingerprint | `B72C 0654 2F2A E250 2763 A268 D900 855A A9F5 14E0` |
The full PGP key for this address, which is also available on several key servers (e.g. on [keyserver.ubuntu.com](https://keyserver.ubuntu.com)), is:
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGkSZAQBEACprU199OhgdsOsygNjiQV4msuN3vDOUooehL+NwfsGfW79Tbqq
Q2u7uQ3NZjW+M2T4nsDwuhkr7pe7xSReR5W8ssaczvtUyxkvbMClilcgZ2OSCAuC
N9tzJsqOqkwBvXoNXkn//T2jnPz0ZU2wSF+NrEibq5FeuyGdoX3yXXBxq9pW9HzK
HkQll63QSl6BzVSGRQq+B6lGgaZGLwf3mzmIND9Z5VGLNK2jKynyz9z091whNG/M
kV+E7/r/bujHk7WIVId07G5/COTXmSr7kFnNEkd2Umw42dkgfiNKvlmJ9M7c1wLK
KbL9Eb4ADuW6rRc5k4s1e6GT8R4/VPliWbCl9SE32hXH8uTkqVIFZP2eyM5WRRHs
aKzitkQG9UK9gcb0kdgUkxOvvgPHAe5IuZlcHFzU4y0dBbU1VEFWVpiLU0q+IuNw
5BRemeHc59YNsngkmAZ+/9zouoShRusZmC8Wzotv75C2qVBcjijPvmjWAUz0Zunm
Lsr+O71vqHE73pERjD07wuD/ISjiYRYYE/bVrXtXLZijC7qAH4RE3nID+2ojcZyO
/2jMQvt7un56RsGH4UBHi3aBHi9bUoDGCXKiQY981cEuNaOxpou7Mh3x/ONzzSvk
sTV6nl1LOZHykN1JyKwaNbTSAiuyoN+7lOBqbV04DNYAHL88PrT21P83aQARAQAB
tB1SaXBwbGUgTGFicyA8YnVnc0ByaXBwbGUuY29tPokCTgQTAQgAOBYhBLcsBlQv
KuJQJ2OiaNkAhVqp9RTgBQJpEmQEAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
AAoJENkAhVqp9RTgBzgP/i7y+aDWl1maig1XMdyb+o0UGusumFSW4Hmj278wlKVv
usgLPihYgHE0PKrv6WRyKOMC1tQEcYYN93M+OeQ1vFhS2YyURq6RCMmh4zq/awXG
uZbG36OURB5NH8lGBOHiN/7O+nY0CgenBT2JWm+GW3nEOAVOVm4+r5GlpPlv+Dp1
NPBThcKXFMnH73++NpSQoDzTfRYHPxhDAX3jkLi/moXfSanOLlR6l94XNNN0jBHW
Quao0rzf4WSXq9g6AS224xhAA5JyIcFl8TX7hzj5HaFn3VWo3COoDu4U7H+BM0fl
85yqiMQypp7EhN2gxpMMWaHY5TFM85U/bFXFYfEgihZ4/gt4uoIzsNI9jlX7mYvG
KFdDij+oTlRsuOxdIy60B3dKcwOH9nZZCz0SPsN/zlRWgKzK4gDKdGhFkU9OlvPu
94ZqscanoiWKDoZkF96+sjgfjkuHsDK7Lwc1Xi+T4drHG/3aVpkYabXox+lrKB/S
yxZjeqOIQzWPhnLgCaLyvsKo5hxKzL0w3eURu8F3IS7RgOOlljv4M+Me9sEVcdNV
aN3/tQwbaomSX1X5D5YXqhBwC3rU3wXwamsscRTGEpkV+JCX6KUqGP7nWmxCpAly
FL05XuOd5SVHJjXLeuje0JqLUpN514uL+bThWwDbDTdAdwW3oK/2WbXz7IfJRLBj
uQINBGkSZAQBEADdI3SL2F72qkrgFqXWE6HSRBu9bsAvTE5QrRPWk7ux6at537r4
S4sIw2dOwLvbyIrDgKNq3LQ5wCK88NO/NeCOFm4AiCJSl3pJHXYnTDoUxTrrxx+o
vSRI4I3fHEql/MqzgiAb0YUezjgFdh3vYheMPp/309PFbOLhiFqEcx80Mx5h06UH
gDzu1qNj3Ec+31NLic5zwkrAkvFvD54d6bqYR3SEgMau6aYEewpGHbWBi2pLqSi2
lQcAeOFixqGpTwDmAnYR8YtjBYepy0MojEAdTHcQQlOYSDk4q4elG+io2N8vECfU
rD6ORecN48GXdZINYWTAdslrUeanmBdgQrYkSpce8TSghgT9P01SNaXxmyaehVUO
lqI4pcg5G2oojAE8ncNS3TwDtt7daTaTC3bAdr4PXDVAzNAiewjMNZPB7xidkDGQ
Y4W1LxTMXyJVWxehYOH7tsbBRKninlfRnLgYzmtIbNRAAvNcsxU6ihv3AV0WFknN
YbSzotEv1Xq/5wk309x8zCDe+sP0cQicvbXafXmUzPAZzeqFg+VLFn7F9MP1WGlW
B1u7VIvBF1Mp9Nd3EAGBAoLRdRu+0dVWIjPTQuPIuD9cCatJA0wVaKUrjYbBMl88
a12LixNVGeSFS9N7ADHx0/o7GNT6l88YbaLP6zggUHpUD/bR+cDN7vllIQARAQAB
iQI2BBgBCAAgFiEEtywGVC8q4lAnY6Jo2QCFWqn1FOAFAmkSZAQCGwwACgkQ2QCF
Wqn1FOAfAA/8CYq4p0p4bobY20CKEMsZrkBTFJyPDqzFwMeTjgpzqbD7Y3Qq5QCK
OBbvY02GWdiIsNOzKdBxiuam2xYP9WHZj4y7/uWEvT0qlPVmDFu+HXjoJ43oxwFd
CUp2gMuQ4cSL3X94VRJ3BkVL+tgBm8CNY0vnTLLOO3kum/R69VsGJS1JSGUWjNM+
4qwS3mz+73xJu1HmERyN2RZF/DGIZI2PyONQQ6aH85G1Dd2ohu2/DBAkQAMBrPbj
FrbDaBLyFhODxU3kTWqnfLlaElSm2EGdIU2yx7n4BggEa//NZRMm5kyeo4vzhtlQ
YIVUMLAOLZvnEqDnsLKp+22FzNR/O+htBQC4lPywl53oYSALdhz1IQlcAC1ru5KR
XPzhIXV6IIzkcx9xNkEclZxmsuy5ERXyKEmLbIHAlzFmnrldlt2ZgXDtzaorLmxj
klKibxd5tF50qOpOivz+oPtFo7n+HmFa1nlVAMxlDCUdM0pEVeYDKI5zfVwalyhZ
NnjpakdZSXMwgc7NP/hH9buF35hKDp7EckT2y3JNYwHsDdy1icXN2q40XZw5tSIn
zkPWdu3OUY8PISohN6Pw4h0RH4ZmoX97E8sEfmdKaT58U4Hf2aAv5r9IWCSrAVqY
u5jvac29CzQR9Kal0A+8phHAXHNFD83SwzIC0syaT9ficAguwGH8X6Q=
=nGuD
-----END PGP PUBLIC KEY BLOCK-----
```

View File

@@ -118,7 +118,7 @@ if(MSVC)
NOMINMAX
# TODO: Resolve these warnings, don't just silence them
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:Debug>>:_CRTDBG_MAP_ALLOC>
$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:Debug>,$<NOT:$<BOOL:${is_ci}>>>:_CRTDBG_MAP_ALLOC>
)
target_link_libraries(common INTERFACE -errorreport:none -machine:X64)
else()

View File

@@ -36,7 +36,7 @@ public:
explicit Section(std::string name = "");
/** Returns the name of this section. */
[[nodiscard]] std::string const&
std::string const&
name() const
{
return name_;
@@ -45,7 +45,7 @@ public:
/** Returns all the lines in the section.
This includes everything.
*/
[[nodiscard]] std::vector<std::string> const&
std::vector<std::string> const&
lines() const
{
return lines_;
@@ -54,7 +54,7 @@ public:
/** Returns all the values in the section.
Values are non-empty lines which are not key/value pairs.
*/
[[nodiscard]] std::vector<std::string> const&
std::vector<std::string> const&
values() const
{
return values_;
@@ -82,7 +82,7 @@ public:
* @return The retrieved value. A section with an empty legacy value returns
an empty string.
*/
[[nodiscard]] std::string
std::string
legacy() const
{
if (lines_.empty())
@@ -117,11 +117,11 @@ public:
}
/** Returns `true` if a key with the given name exists. */
[[nodiscard]] bool
bool
exists(std::string const& name) const;
template <class T = std::string>
[[nodiscard]] std::optional<T>
std::optional<T>
get(std::string const& name) const
{
auto const iter = lookup_.find(name);
@@ -132,7 +132,7 @@ public:
/// Returns a value if present, else another value.
template <class T>
[[nodiscard]] T
T
value_or(std::string const& name, T const& other) const
{
auto const v = get<T>(name);
@@ -141,7 +141,7 @@ public:
// indicates if trailing comments were seen
// during the appending of any lines/values
[[nodiscard]] bool
bool
had_trailing_comments() const
{
return had_trailing_comments_;
@@ -151,42 +151,42 @@ public:
operator<<(std::ostream&, Section const& section);
// Returns `true` if there are no key/value pairs.
[[nodiscard]] bool
bool
empty() const
{
return lookup_.empty();
}
// Returns the number of key/value pairs.
[[nodiscard]] std::size_t
std::size_t
size() const
{
return lookup_.size();
}
// For iteration of key/value pairs.
[[nodiscard]] const_iterator
const_iterator
begin() const
{
return lookup_.cbegin();
}
// For iteration of key/value pairs.
[[nodiscard]] const_iterator
const_iterator
cbegin() const
{
return lookup_.cbegin();
}
// For iteration of key/value pairs.
[[nodiscard]] const_iterator
const_iterator
end() const
{
return lookup_.cend();
}
// For iteration of key/value pairs.
[[nodiscard]] const_iterator
const_iterator
cend() const
{
return lookup_.cend();
@@ -206,7 +206,7 @@ private:
public:
/** Returns `true` if a section with the given name exists. */
[[nodiscard]] bool
bool
exists(std::string const& name) const;
/** Returns the section with the given name.
@@ -216,7 +216,7 @@ public:
Section&
section(std::string const& name);
[[nodiscard]] Section const&
Section const&
section(std::string const& name) const;
Section const&
@@ -264,7 +264,7 @@ public:
* legacy value.
* @return Contents of the legacy value.
*/
[[nodiscard]] std::string
std::string
legacy(std::string const& sectionName) const;
friend std::ostream&
@@ -272,7 +272,7 @@ public:
// indicates if trailing comments were seen
// in any loaded Sections
[[nodiscard]] bool
bool
had_trailing_comments() const
{
return std::ranges::any_of(map_, [](auto s) { return s.second.had_trailing_comments(); });

View File

@@ -101,13 +101,13 @@ public:
}
/** Returns the number of bytes in the buffer. */
[[nodiscard]] std::size_t
std::size_t
size() const noexcept
{
return size_;
}
[[nodiscard]] bool
bool
empty() const noexcept
{
return 0 == size_;
@@ -125,7 +125,7 @@ public:
to a single byte, to facilitate pointer arithmetic.
*/
/** @{ */
[[nodiscard]] std::uint8_t const*
std::uint8_t const*
data() const noexcept
{
return p_.get();
@@ -169,25 +169,25 @@ public:
return alloc(n);
}
[[nodiscard]] const_iterator
const_iterator
begin() const noexcept
{
return p_.get();
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const noexcept
{
return p_.get();
}
[[nodiscard]] const_iterator
const_iterator
end() const noexcept
{
return p_.get() + size_;
}
[[nodiscard]] const_iterator
const_iterator
cend() const noexcept
{
return p_.get() + size_;

View File

@@ -19,7 +19,7 @@ public:
using Entry = std::pair<std::string, int>;
using List = std::vector<Entry>;
[[nodiscard]] List
List
getCounts(int minimumThreshold) const;
public:
@@ -59,19 +59,19 @@ public:
return --count_;
}
[[nodiscard]] int
int
getCount() const noexcept
{
return count_.load();
}
[[nodiscard]] Counter*
Counter*
getNext() const noexcept
{
return next_;
}
[[nodiscard]] std::string const&
std::string const&
getName() const noexcept
{
return name_;

View File

@@ -73,7 +73,7 @@ public:
{
}
[[nodiscard]] constexpr E const&
constexpr E const&
value() const&
{
return val_;
@@ -91,7 +91,7 @@ public:
return std::move(val_);
}
[[nodiscard]] constexpr E const&&
constexpr E const&&
value() const&&
{
return std::move(val_);
@@ -125,13 +125,13 @@ public:
{
}
[[nodiscard]] constexpr bool
constexpr bool
has_value() const
{
return Base::has_value();
}
[[nodiscard]] constexpr T const&
constexpr T const&
value() const
{
return Base::value();
@@ -143,7 +143,7 @@ public:
return Base::value();
}
[[nodiscard]] constexpr E const&
constexpr E const&
error() const
{
return Base::error();
@@ -210,7 +210,7 @@ public:
{
}
[[nodiscard]] constexpr E const&
constexpr E const&
error() const
{
return Base::error();

View File

@@ -159,11 +159,11 @@ public:
reset();
/** Get the raw pointer */
[[nodiscard]] T*
T*
get() const;
/** Return the strong count */
[[nodiscard]] std::size_t
std::size_t
use_count() const;
template <class TT, class... Args>
@@ -181,7 +181,7 @@ public:
private:
/** Return the raw pointer held by this object. */
[[nodiscard]] T*
T*
unsafeGetRawPtr() const;
/** Exchange the current raw pointer held by this object with the given
@@ -260,7 +260,7 @@ public:
lock() const;
/** Return true if the strong count is zero. */
[[nodiscard]] bool
bool
expired() const;
/** Set the pointer to null and decrement the weak count.
@@ -339,7 +339,7 @@ public:
don't lock the weak pointer. Use the `lock` method if that's what's
needed)
*/
[[nodiscard]] SharedIntrusive<T>
SharedIntrusive<T>
getStrong() const;
/** Return true if this is a strong pointer and the strong pointer is
@@ -357,31 +357,31 @@ public:
/** If this is a strong pointer, return the raw pointer. Otherwise
return null.
*/
[[nodiscard]] T*
T*
get() const;
/** If this is a strong pointer, return the strong count. Otherwise
* return 0
*/
[[nodiscard]] std::size_t
std::size_t
use_count() const;
/** Return true if there is a non-zero strong count. */
[[nodiscard]] bool
bool
expired() const;
/** If this is a strong pointer, return the strong pointer. Otherwise
attempt to lock the weak pointer.
*/
[[nodiscard]] SharedIntrusive<T>
SharedIntrusive<T>
lock() const;
/** Return true is this represents a strong pointer. */
[[nodiscard]] bool
bool
isStrong() const;
/** Return true is this represents a weak pointer. */
[[nodiscard]] bool
bool
isWeak() const;
/** If this is a weak pointer, attempt to convert it to a strong
@@ -412,7 +412,7 @@ private:
private:
/** Return the raw pointer held by this object.
*/
[[nodiscard]] T*
T*
unsafeGetRawPtr() const;
enum class RefStrength { strong, weak };

View File

@@ -207,7 +207,7 @@ private:
RefCountPair(CountType s, CountType w) noexcept;
/** Convert back to the packed integer form. */
[[nodiscard]] FieldType
FieldType
combinedValue() const noexcept;
static constexpr CountType maxStrongValue =

View File

@@ -76,7 +76,7 @@ private:
@return `true` if a system file is associated and opened for
writing.
*/
[[nodiscard]] bool
bool
isOpen() const noexcept;
/** Associate a system file with the log.

View File

@@ -44,7 +44,7 @@ public:
return data_;
}
[[nodiscard]] ProtectedDataType const&
ProtectedDataType const&
get() const
{
return data_;

View File

@@ -252,9 +252,9 @@ public:
// Assume unsigned values are... unsigned. i.e. positive
explicit Number(internalrep mantissa, int exponent, normalized);
[[nodiscard]] constexpr rep
constexpr rep
mantissa() const noexcept;
[[nodiscard]] constexpr int
constexpr int
exponent() const noexcept;
constexpr Number
@@ -339,7 +339,7 @@ public:
}
/** Return the sign of the amount */
[[nodiscard]] constexpr int
constexpr int
signum() const noexcept
{
if (negative_)
@@ -347,7 +347,7 @@ public:
return (mantissa_ != 0u) ? 1 : 0;
}
[[nodiscard]] Number
Number
truncate() const noexcept;
friend constexpr bool
@@ -490,13 +490,13 @@ private:
MantissaRange::rep const& minMantissa,
MantissaRange::rep const& maxMantissa);
[[nodiscard]] bool
bool
isnormal() const noexcept;
// Copy the number, but modify the exponent by "exponentDelta". Because the
// mantissa doesn't change, the result will be "mostly" normalized, but the
// exponent could go out of range, so it will be checked.
[[nodiscard]] Number
Number
shiftExponent(int exponentDelta) const;
// Safely convert rep (int64) mantissa to internalrep (uint64). If the rep

View File

@@ -20,7 +20,7 @@ public:
{
}
[[nodiscard]] uint256 const&
uint256 const&
as_uint256() const
{
return hash_;
@@ -30,17 +30,17 @@ public:
{
return hash_;
}
[[nodiscard]] bool
bool
isZero() const
{
return hash_.isZero();
}
[[nodiscard]] bool
bool
isNonZero() const
{
return hash_.isNonZero();
}
[[nodiscard]] int
int
signum() const
{
return hash_.signum();

View File

@@ -49,7 +49,7 @@ public:
/** Return a strong pointer if this is already a strong pointer (i.e. don't
lock the weak pointer. Use the `lock` method if that's what's needed)
*/
[[nodiscard]] std::shared_ptr<T> const&
std::shared_ptr<T> const&
getStrong() const;
/** Return true if this is a strong pointer and the strong pointer is
@@ -67,30 +67,30 @@ public:
/** If this is a strong pointer, return the raw pointer. Otherwise return
null.
*/
[[nodiscard]] T*
T*
get() const;
/** If this is a strong pointer, return the strong count. Otherwise return 0
*/
[[nodiscard]] std::size_t
std::size_t
use_count() const;
/** Return true if there is a non-zero strong count. */
[[nodiscard]] bool
bool
expired() const;
/** If this is a strong pointer, return the strong pointer. Otherwise
attempt to lock the weak pointer.
*/
[[nodiscard]] std::shared_ptr<T>
std::shared_ptr<T>
lock() const;
/** Return true is this represents a strong pointer. */
[[nodiscard]] bool
bool
isStrong() const;
/** Return true is this represents a weak pointer. */
[[nodiscard]] bool
bool
isWeak() const;
/** If this is a weak pointer, attempt to convert it to a strong pointer.

View File

@@ -180,7 +180,7 @@ public:
~SlabAllocator() = default;
/** Returns the size of the memory block this allocator returns. */
[[nodiscard]] constexpr std::size_t
constexpr std::size_t
size() const noexcept
{
return itemSize_;

View File

@@ -74,7 +74,7 @@ public:
@note The return type is guaranteed to be a pointer
to a single byte, to facilitate pointer arithmetic.
*/
[[nodiscard]] std::uint8_t const*
std::uint8_t const*
data() const noexcept
{
return data_;
@@ -123,25 +123,25 @@ public:
size_ -= n;
}
[[nodiscard]] const_iterator
const_iterator
begin() const noexcept
{
return data_;
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const noexcept
{
return data_;
}
[[nodiscard]] const_iterator
const_iterator
end() const noexcept
{
return data_ + size_;
}
[[nodiscard]] const_iterator
const_iterator
cend() const noexcept
{
return data_ + size_;
@@ -158,7 +158,7 @@ public:
@returns The requested subslice, if the request is valid.
@throws std::out_of_range if pos > size()
*/
[[nodiscard]] Slice
Slice
substr(std::size_t pos, std::size_t count = std::numeric_limits<std::size_t>::max()) const
{
if (pos > size())

View File

@@ -222,19 +222,19 @@ private:
{
}
[[nodiscard]] bool
bool
isWeak() const
{
if (!ptr)
return true;
return ptr.isWeak();
}
[[nodiscard]] bool
bool
isCached() const
{
return ptr && ptr.isStrong();
}
[[nodiscard]] bool
bool
isExpired() const
{
return ptr.expired();

View File

@@ -102,7 +102,7 @@ public:
{
return reinterpret_cast<pointer>(data_.data());
}
[[nodiscard]] const_pointer
const_pointer
data() const
{
return reinterpret_cast<const_pointer>(data_.data());
@@ -118,22 +118,22 @@ public:
{
return data() + bytes;
}
[[nodiscard]] const_iterator
const_iterator
begin() const
{
return data();
}
[[nodiscard]] const_iterator
const_iterator
end() const
{
return data() + bytes;
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const
{
return data();
}
[[nodiscard]] const_iterator
const_iterator
cend() const
{
return data() + bytes;
@@ -310,7 +310,7 @@ public:
return fromVoid(from.data());
}
[[nodiscard]] constexpr int
constexpr int
signum() const
{
for (int i = 0; i < WIDTH; i++)
@@ -433,14 +433,14 @@ public:
return ret;
}
[[nodiscard]] base_uint
base_uint
next() const
{
auto ret = *this;
return ++ret;
}
[[nodiscard]] base_uint
base_uint
prev() const
{
auto ret = *this;
@@ -517,12 +517,12 @@ public:
}
// Deprecated.
[[nodiscard]] bool
bool
isZero() const
{
return *this == beast::zero;
}
[[nodiscard]] bool
bool
isNonZero() const
{
return *this != beast::zero;

View File

@@ -49,7 +49,7 @@ public:
return m_ios;
}
[[nodiscard]] boost::asio::io_context const&
boost::asio::io_context const&
get_io_context() const
{
return m_ios;

View File

@@ -63,7 +63,7 @@ struct abstract_clock_wrapper : public abstract_clock<Facade>
using typename abstract_clock<Facade>::duration;
using typename abstract_clock<Facade>::time_point;
[[nodiscard]] time_point
time_point
now() const override
{
return Clock::now();

View File

@@ -32,7 +32,7 @@ public:
{
}
[[nodiscard]] time_point
time_point
now() const override
{
return now_;

View File

@@ -115,7 +115,7 @@ public:
return &m_iter->value;
}
[[nodiscard]] time_point const&
time_point const&
when() const
{
return m_iter->when;
@@ -136,7 +136,7 @@ private:
{
}
[[nodiscard]] Iterator const&
Iterator const&
iterator() const
{
return m_iter;

View File

@@ -186,7 +186,7 @@ private:
return *this;
}
[[nodiscard]] Compare const&
Compare const&
compare() const
{
return *this;
@@ -295,7 +295,7 @@ private:
return KeyValueCompare::compare();
}
[[nodiscard]] Compare const&
Compare const&
compare() const
{
return KeyValueCompare::compare();
@@ -307,7 +307,7 @@ private:
return *this;
}
[[nodiscard]] KeyValueCompare const&
KeyValueCompare const&
key_compare() const
{
return *this;
@@ -319,7 +319,7 @@ private:
return beast::detail::empty_base_optimization<ElementAllocator>::member();
}
[[nodiscard]] ElementAllocator const&
ElementAllocator const&
alloc() const
{
return beast::detail::empty_base_optimization<ElementAllocator>::member();

View File

@@ -149,7 +149,7 @@ private:
return *this;
}
[[nodiscard]] Hash const&
Hash const&
hash_function() const
{
return *this;
@@ -195,7 +195,7 @@ private:
return *this;
}
[[nodiscard]] KeyEqual const&
KeyEqual const&
key_eq() const
{
return *this;
@@ -348,7 +348,7 @@ private:
return *this;
}
[[nodiscard]] ValueHash const&
ValueHash const&
value_hash() const
{
return *this;
@@ -360,7 +360,7 @@ private:
return ValueHash::hash_function();
}
[[nodiscard]] Hash const&
Hash const&
hash_function() const
{
return ValueHash::hash_function();
@@ -372,7 +372,7 @@ private:
return *this;
}
[[nodiscard]] KeyValueEqual const&
KeyValueEqual const&
key_value_equal() const
{
return *this;
@@ -384,7 +384,7 @@ private:
return key_value_equal().key_eq();
}
[[nodiscard]] KeyEqual const&
KeyEqual const&
key_eq() const
{
return key_value_equal().key_eq();
@@ -396,7 +396,7 @@ private:
return beast::detail::empty_base_optimization<ElementAllocator>::member();
}
[[nodiscard]] ElementAllocator const&
ElementAllocator const&
alloc() const
{
return beast::detail::empty_base_optimization<ElementAllocator>::member();
@@ -433,7 +433,7 @@ private:
m_vec.clear();
}
[[nodiscard]] size_type
size_type
max_bucket_count() const
{
return m_vec.max_size();
@@ -445,7 +445,7 @@ private:
return m_max_load_factor;
}
[[nodiscard]] float const&
float const&
max_load_factor() const
{
return m_max_load_factor;

View File

@@ -43,7 +43,7 @@ public:
return *this;
}
[[nodiscard]] T const&
T const&
member() const noexcept
{
return *this;

View File

@@ -128,7 +128,7 @@ public:
}
private:
[[nodiscard]] reference
reference
dereference() const noexcept
{
return static_cast<reference>(*m_node);
@@ -287,14 +287,14 @@ public:
/** Determine if the list is empty.
@return `true` if the list is empty.
*/
[[nodiscard]] bool
bool
empty() const noexcept
{
return size() == 0;
}
/** Returns the number of elements in the list. */
[[nodiscard]] size_type
size_type
size() const noexcept
{
return m_size;
@@ -314,7 +314,7 @@ public:
@invariant The list may not be empty.
@return A const reference to the first element.
*/
[[nodiscard]] const_reference
const_reference
front() const noexcept
{
return element_from(m_head.m_next);
@@ -334,7 +334,7 @@ public:
@invariant The list may not be empty.
@return A const reference to the last element.
*/
[[nodiscard]] const_reference
const_reference
back() const noexcept
{
return element_from(m_tail.m_prev);
@@ -352,7 +352,7 @@ public:
/** Obtain a const iterator to the beginning of the list.
@return A const iterator pointing to the beginning of the list.
*/
[[nodiscard]] const_iterator
const_iterator
begin() const noexcept
{
return const_iterator(m_head.m_next);
@@ -361,7 +361,7 @@ public:
/** Obtain a const iterator to the beginning of the list.
@return A const iterator pointing to the beginning of the list.
*/
[[nodiscard]] const_iterator
const_iterator
cbegin() const noexcept
{
return const_iterator(m_head.m_next);
@@ -379,7 +379,7 @@ public:
/** Obtain a const iterator to the end of the list.
@return A constiterator pointing to the end of the list.
*/
[[nodiscard]] const_iterator
const_iterator
end() const noexcept
{
return const_iterator(&m_tail);
@@ -388,7 +388,7 @@ public:
/** Obtain a const iterator to the end of the list
@return A constiterator pointing to the end of the list.
*/
[[nodiscard]] const_iterator
const_iterator
cend() const noexcept
{
return const_iterator(&m_tail);
@@ -549,7 +549,7 @@ public:
@param element The element to obtain an iterator for.
@return A const iterator to the element.
*/
[[nodiscard]] const_iterator
const_iterator
const_iterator_to(T const& element) const noexcept
{
return const_iterator(static_cast<Node const*>(&element));

View File

@@ -162,7 +162,7 @@ public:
operator=(LockFreeStack const&) = delete;
/** Returns true if the stack is empty. */
[[nodiscard]] bool
bool
empty() const
{
return m_head.load() == &m_end;
@@ -237,25 +237,25 @@ public:
return iterator(&m_end);
}
[[nodiscard]] const_iterator
const_iterator
begin() const
{
return const_iterator(m_head.load());
}
[[nodiscard]] const_iterator
const_iterator
end() const
{
return const_iterator(&m_end);
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const
{
return const_iterator(m_head.load());
}
[[nodiscard]] const_iterator
const_iterator
cend() const
{
return const_iterator(&m_end);

View File

@@ -37,15 +37,15 @@ public:
parse(std::string_view input);
/** Produce a string from semantic version components. */
[[nodiscard]] std::string
std::string
print() const;
[[nodiscard]] bool
bool
isRelease() const noexcept
{
return preReleaseIdentifiers.empty();
}
[[nodiscard]] bool
bool
isPreRelease() const noexcept
{
return !isRelease();

View File

@@ -45,7 +45,7 @@ public:
m_impl->notify(ceil<value_type>(value));
}
[[nodiscard]] std::shared_ptr<EventImpl> const&
std::shared_ptr<EventImpl> const&
impl() const
{
return m_impl;

View File

@@ -108,7 +108,7 @@ public:
}
/** @} */
[[nodiscard]] std::shared_ptr<GaugeImpl> const&
std::shared_ptr<GaugeImpl> const&
impl() const
{
return m_impl;

View File

@@ -14,7 +14,7 @@ public:
using ptr = std::shared_ptr<Group>;
/** Returns the name of this group, for diagnostics. */
[[nodiscard]] virtual std::string const&
virtual std::string const&
name() const = 0;
};

View File

@@ -24,7 +24,7 @@ public:
{
}
[[nodiscard]] std::shared_ptr<HookImpl> const&
std::shared_ptr<HookImpl> const&
impl() const
{
return m_impl;

View File

@@ -63,7 +63,7 @@ public:
}
/** @} */
[[nodiscard]] std::shared_ptr<MeterImpl> const&
std::shared_ptr<MeterImpl> const&
impl() const
{
return m_impl;

View File

@@ -32,25 +32,25 @@ public:
from_string(std::string const& s);
/** Returns a string representing the endpoint. */
[[nodiscard]] std::string
std::string
to_string() const;
/** Returns the port number on the endpoint. */
[[nodiscard]] Port
Port
port() const
{
return m_port;
}
/** Returns a new Endpoint with a different port. */
[[nodiscard]] Endpoint
Endpoint
at_port(Port port) const
{
return Endpoint(m_addr, port);
}
/** Returns the address portion of this endpoint. */
[[nodiscard]] Address const&
Address const&
address() const
{
return m_addr;
@@ -58,22 +58,22 @@ public:
/** Convenience accessors for the address part. */
/** @{ */
[[nodiscard]] bool
bool
is_v4() const
{
return m_addr.is_v4();
}
[[nodiscard]] bool
bool
is_v6() const
{
return m_addr.is_v6();
}
[[nodiscard]] AddressV4
AddressV4
to_v4() const
{
return m_addr.to_v4();
}
[[nodiscard]] AddressV6
AddressV6
to_v6() const
{
return m_addr.to_v6();

View File

@@ -25,7 +25,7 @@ protected:
return m_cont;
}
[[nodiscard]] cont_type const&
cont_type const&
cont() const
{
return m_cont;
@@ -39,14 +39,14 @@ public:
using const_iterator = typename cont_type::const_iterator;
/** Returns `true` if the container is empty. */
[[nodiscard]] bool
bool
empty() const
{
return m_cont.empty();
}
/** Returns the number of items in the container. */
[[nodiscard]] size_type
size_type
size() const
{
return m_cont.size();
@@ -54,25 +54,25 @@ public:
/** Returns forward iterators for traversal. */
/** @{ */
[[nodiscard]] const_iterator
const_iterator
begin() const
{
return m_cont.cbegin();
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const
{
return m_cont.cbegin();
}
[[nodiscard]] const_iterator
const_iterator
end() const
{
return m_cont.cend();
}
[[nodiscard]] const_iterator
const_iterator
cend() const
{
return m_cont.cend();

View File

@@ -21,7 +21,7 @@ public:
recorder() = default;
/** Returns a report with the results of all completed suites. */
[[nodiscard]] results const&
results const&
report() const
{
return m_results;

View File

@@ -41,14 +41,14 @@ private:
tests_t() = default;
/** Returns the total number of test conditions. */
[[nodiscard]] std::size_t
std::size_t
total() const
{
return cont().size();
}
/** Returns the number of failed test conditions. */
[[nodiscard]] std::size_t
std::size_t
failed() const
{
return failed_;
@@ -89,7 +89,7 @@ public:
}
/** Returns the name of this testcase. */
[[nodiscard]] std::string const&
std::string const&
name() const
{
return name_;
@@ -118,21 +118,21 @@ public:
}
/** Returns the name of this suite. */
[[nodiscard]] std::string const&
std::string const&
name() const
{
return name_;
}
/** Returns the total number of test conditions. */
[[nodiscard]] std::size_t
std::size_t
total() const
{
return total_;
}
/** Returns the number of failures. */
[[nodiscard]] std::size_t
std::size_t
failed() const
{
return failed_;
@@ -173,21 +173,21 @@ public:
results() = default;
/** Returns the total number of test cases. */
[[nodiscard]] std::size_t
std::size_t
cases() const
{
return m_cases;
}
/** Returns the total number of test conditions. */
[[nodiscard]] std::size_t
std::size_t
total() const
{
return total_;
}
/** Returns the number of failures. */
[[nodiscard]] std::size_t
std::size_t
failed() const
{
return failed_;

View File

@@ -47,7 +47,7 @@ public:
}
/** Returns the argument string. */
[[nodiscard]] std::string const&
std::string const&
arg() const
{
return arg_;

View File

@@ -57,7 +57,7 @@ private:
// in the event of a failure, if the option to stop is set.
struct abort_exception : public std::exception
{
[[nodiscard]] char const*
char const*
what() const noexcept override
{
return "test suite aborted";

View File

@@ -42,33 +42,33 @@ public:
{
}
[[nodiscard]] std::string const&
std::string const&
name() const
{
return name_;
}
[[nodiscard]] std::string const&
std::string const&
module() const
{
return module_;
}
[[nodiscard]] std::string const&
std::string const&
library() const
{
return library_;
}
/// Returns `true` if this suite only runs manually.
[[nodiscard]] bool
bool
manual() const
{
return manual_;
}
/// Return the canonical suite name as a string.
[[nodiscard]] std::string
std::string
full_name() const
{
return library_ + "." + module_ + "." + name_;

View File

@@ -47,13 +47,13 @@ public:
t_ = std::thread(&Thread::run, this, std::move(b));
}
[[nodiscard]] bool
bool
joinable() const
{
return t_.joinable();
}
[[nodiscard]] std::thread::id
std::thread::id
get_id() const
{
return t_.get_id();

View File

@@ -66,12 +66,12 @@ public:
operator=(Sink const& lhs) = delete;
/** Returns `true` if text at the passed severity produces output. */
[[nodiscard]] virtual bool
virtual bool
active(Severity level) const;
/** Returns `true` if a message is also written to the Output Window
* (MSVC). */
[[nodiscard]] virtual bool
virtual bool
console() const;
/** Set whether messages are also written to the Output Window (MSVC).
@@ -80,7 +80,7 @@ public:
console(bool output);
/** Returns the minimum severity level this sink will report. */
[[nodiscard]] virtual Severity
virtual Severity
threshold() const;
/** Set the minimum severity this sink will report. */
@@ -204,14 +204,14 @@ public:
operator=(Stream const& other) = delete;
/** Returns the Sink that this Stream writes to. */
[[nodiscard]] Sink&
Sink&
sink() const
{
return m_sink;
}
/** Returns the Severity level of messages this Stream reports. */
[[nodiscard]] Severity
Severity
level() const
{
return m_level;
@@ -219,7 +219,7 @@ public:
/** Returns `true` if sink logs anything at this stream's level. */
/** @{ */
[[nodiscard]] bool
bool
active() const
{
return m_sink.active(m_level);
@@ -267,14 +267,14 @@ public:
}
/** Returns the Sink associated with this Journal. */
[[nodiscard]] Sink&
Sink&
sink() const
{
return *m_sink;
}
/** Returns a stream for this sink, with the specified severity level. */
[[nodiscard]] Stream
Stream
stream(Severity level) const
{
return Stream(*m_sink, level);
@@ -284,7 +284,7 @@ public:
For a message to be logged, the severity must be at or above the
sink's severity threshold.
*/
[[nodiscard]] bool
bool
active(Severity level) const
{
return m_sink->active(level);
@@ -292,37 +292,37 @@ public:
/** Severity stream access functions. */
/** @{ */
[[nodiscard]] Stream
Stream
trace() const
{
return {*m_sink, severities::kTrace};
}
[[nodiscard]] Stream
Stream
debug() const
{
return {*m_sink, severities::kDebug};
}
[[nodiscard]] Stream
Stream
info() const
{
return {*m_sink, severities::kInfo};
}
[[nodiscard]] Stream
Stream
warn() const
{
return {*m_sink, severities::kWarning};
}
[[nodiscard]] Stream
Stream
error() const
{
return {*m_sink, severities::kError};
}
[[nodiscard]] Stream
Stream
fatal() const
{
return {*m_sink, severities::kFatal};

View File

@@ -149,7 +149,7 @@ class PropertyStream::Item : public List<Item>::Node
{
public:
explicit Item(Source* source);
[[nodiscard]] Source&
Source&
source() const;
Source*
operator->() const;
@@ -217,7 +217,7 @@ public:
PropertyStream&
stream();
[[nodiscard]] PropertyStream const&
PropertyStream const&
stream() const;
template <typename Value>
@@ -287,7 +287,7 @@ public:
PropertyStream&
stream();
[[nodiscard]] PropertyStream const&
PropertyStream const&
stream() const;
template <typename Value>
@@ -323,7 +323,7 @@ public:
operator=(Source const&) = delete;
/** Returns the name of this source. */
[[nodiscard]] std::string const&
std::string const&
name() const;
/** Add a child source. */

View File

@@ -35,13 +35,13 @@ public:
prefix_ = s;
}
[[nodiscard]] bool
bool
active(beast::severities::Severity level) const override
{
return sink_.active(level);
}
[[nodiscard]] bool
bool
console() const override
{
return sink_.console();
@@ -53,7 +53,7 @@ public:
sink_.console(output);
}
[[nodiscard]] beast::severities::Severity
beast::severities::Severity
threshold() const override
{
return sink_.threshold();

View File

@@ -43,7 +43,7 @@ public:
}
/// Get the native path for the temporary directory
[[nodiscard]] std::string
std::string
path() const
{
return path_.string();
@@ -53,7 +53,7 @@ public:
The file does not need to exist.
*/
[[nodiscard]] std::string
std::string
file(std::string const& name) const
{
return (path_ / name).string();

View File

@@ -41,15 +41,15 @@ public:
with respect to other conditions of the
same type.
*/
[[nodiscard]] virtual Buffer
virtual Buffer
fingerprint() const = 0;
/** Returns the type of this condition. */
[[nodiscard]] virtual Type
virtual Type
type() const = 0;
/** Validates a fulfillment. */
[[nodiscard]] virtual bool
virtual bool
validate(Slice data) const = 0;
/** Calculates the cost associated with this fulfillment. *
@@ -58,7 +58,7 @@ public:
type and properties of the condition and the fulfillment
that the condition is generated from.
*/
[[nodiscard]] virtual std::uint32_t
virtual std::uint32_t
cost() const = 0;
/** Returns the condition associated with the given fulfillment.
@@ -67,7 +67,7 @@ public:
will, if compliant, produce the identical condition for the
same fulfillment.
*/
[[nodiscard]] virtual Condition
virtual Condition
condition() const = 0;
};

View File

@@ -90,13 +90,13 @@ public:
{
}
[[nodiscard]] Type
Type
type() const override
{
return Type::preimageSha256;
}
[[nodiscard]] Buffer
Buffer
fingerprint() const override
{
sha256_hasher h;
@@ -105,19 +105,19 @@ public:
return {d.data(), d.size()};
}
[[nodiscard]] std::uint32_t
std::uint32_t
cost() const override
{
return static_cast<std::uint32_t>(payload_.size());
}
[[nodiscard]] Condition
Condition
condition() const override
{
return {type(), cost(), fingerprint()};
}
[[nodiscard]] bool
bool
validate(Slice) const override
{
// Perhaps counterintuitively, the message isn't

View File

@@ -118,7 +118,7 @@ private:
peers_.insert(peer);
}
[[nodiscard]] HashRouterFlags
HashRouterFlags
getFlags(void) const
{
return flags_;
@@ -138,7 +138,7 @@ private:
}
/** Return seated relay time point if the message has been relayed */
[[nodiscard]] std::optional<Stopwatch::time_point>
std::optional<Stopwatch::time_point>
relayed() const
{
return relayed_;

View File

@@ -98,11 +98,11 @@ public:
LoadMonitor& lm,
std::function<void()> const& job);
[[nodiscard]] JobType
JobType
getType() const;
/** Returns the time when the job was queued. */
[[nodiscard]] clock_type::time_point const&
clock_type::time_point const&
queue_time() const;
void

View File

@@ -7,13 +7,8 @@
#include <xrpl/core/detail/Workers.h>
#include <xrpl/json/json_value.h>
// Include only the specific Boost.Coroutine2 headers actually used here.
// Avoid `boost/coroutine2/all.hpp` because it transitively pulls in
// `boost/context/pooled_fixedsize_stack.hpp`, whose `.malloc()` / `.free()`
// member calls on `boost::pool` collide with MSVC's `_CRTDBG_MAP_ALLOC` macros
// in Debug builds (see cmake/XrplCompiler.cmake).
#include <boost/context/protected_fixedsize_stack.hpp>
#include <boost/coroutine2/coroutine.hpp>
#include <boost/coroutine2/all.hpp>
#include <set>

View File

@@ -54,13 +54,13 @@ public:
JobTypeData&
operator=(JobTypeData const& other) = delete;
[[nodiscard]] std::string
std::string
name() const
{
return info.name();
}
[[nodiscard]] JobType
JobType
type() const
{
return info.type();

View File

@@ -40,37 +40,37 @@ public:
{
}
[[nodiscard]] JobType
JobType
type() const
{
return m_type;
}
[[nodiscard]] std::string const&
std::string const&
name() const
{
return m_name;
}
[[nodiscard]] int
int
limit() const
{
return m_limit;
}
[[nodiscard]] bool
bool
special() const
{
return m_limit == 0;
}
[[nodiscard]] std::chrono::milliseconds
std::chrono::milliseconds
getAverageLatency() const
{
return m_avgLatency;
}
[[nodiscard]] std::chrono::milliseconds
std::chrono::milliseconds
getPeakLatency() const
{
return m_peakLatency;

View File

@@ -113,7 +113,7 @@ public:
return instance().get(jt).name();
}
[[nodiscard]] JobTypeInfo const&
JobTypeInfo const&
get(JobType jt) const
{
Map::const_iterator const iter(m_map.find(jt));
@@ -125,37 +125,37 @@ public:
return m_unknown;
}
[[nodiscard]] JobTypeInfo const&
JobTypeInfo const&
getInvalid() const
{
return m_unknown;
}
[[nodiscard]] Map::size_type
Map::size_type
size() const
{
return m_map.size();
}
[[nodiscard]] const_iterator
const_iterator
begin() const
{
return m_map.cbegin();
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const
{
return m_map.cbegin();
}
[[nodiscard]] const_iterator
const_iterator
end() const
{
return m_map.cend();
}
[[nodiscard]] const_iterator
const_iterator
cend() const
{
return m_map.cend();

View File

@@ -21,15 +21,15 @@ public:
~LoadEvent();
[[nodiscard]] std::string const&
std::string const&
name() const;
// The time spent waiting.
[[nodiscard]] std::chrono::steady_clock::duration
std::chrono::steady_clock::duration
waitTime() const;
// The time spent running.
[[nodiscard]] std::chrono::steady_clock::duration
std::chrono::steady_clock::duration
runTime() const;
void

View File

@@ -26,7 +26,7 @@ public:
*
* @return The network ID this server is configured for
*/
[[nodiscard]] virtual std::uint32_t
virtual std::uint32_t
getNetworkID() const noexcept = 0;
};

View File

@@ -22,7 +22,7 @@ public:
PublicKey nodeId;
std::string description = {}; // NOLINT(readability-redundant-member-init)
[[nodiscard]] auto
auto
toJson() const -> Json::Value;
template <typename Hasher>

View File

@@ -121,7 +121,7 @@ public:
*
* @return Counters Json object
*/
[[nodiscard]] virtual Json::Value
virtual Json::Value
countersJson() const = 0;
/**
@@ -129,7 +129,7 @@ public:
*
* @return Current executing jobs and RPC calls and durations
*/
[[nodiscard]] virtual Json::Value
virtual Json::Value
currentJson() const = 0;
/**

View File

@@ -192,7 +192,7 @@ public:
virtual OpenLedger&
getOpenLedger() = 0;
[[nodiscard]] virtual OpenLedger const&
virtual OpenLedger const&
getOpenLedger() const = 0;
// Transaction and operation services
@@ -219,7 +219,7 @@ public:
getPerfLog() = 0;
// Configuration and state
[[nodiscard]] virtual bool
virtual bool
isStopping() const = 0;
virtual beast::Journal
@@ -231,7 +231,7 @@ public:
virtual Logs&
getLogs() = 0;
[[nodiscard]] virtual std::optional<uint256> const&
virtual std::optional<uint256> const&
getTrapTxID() const = 0;
/** Retrieve the "wallet database" */

View File

@@ -106,7 +106,7 @@ public:
@note This function is not thread-safe.
*/
[[nodiscard]] int
int
getNumberOfThreads() const noexcept;
/** Set the desired number of threads.
@@ -141,7 +141,7 @@ public:
While this function is thread-safe, the value may not stay
accurate for very long. It's mainly for diagnostic purposes.
*/
[[nodiscard]] int
int
numberOfCurrentlyRunningTasks() const noexcept;
//--------------------------------------------------------------------------

View File

@@ -14,7 +14,7 @@ public:
public:
JsonPropertyStream();
[[nodiscard]] Json::Value const&
Json::Value const&
top() const;
protected:

View File

@@ -64,7 +64,7 @@ public:
* their location in the parsed document. An empty string is returned if no
* error occurred during parsing.
*/
[[nodiscard]] std::string
std::string
getFormattedErrorMessages() const;
static constexpr unsigned nest_limit{25};

View File

@@ -53,7 +53,7 @@ public:
return str_;
}
[[nodiscard]] constexpr char const*
constexpr char const*
c_str() const
{
return str_;
@@ -158,11 +158,11 @@ private:
operator<(CZString const& other) const;
bool
operator==(CZString const& other) const;
[[nodiscard]] int
int
index() const;
[[nodiscard]] char const*
char const*
c_str() const;
[[nodiscard]] bool
bool
isStaticString() const;
private:
@@ -223,60 +223,60 @@ public:
void
swap(Value& other) noexcept;
[[nodiscard]] ValueType
ValueType
type() const;
[[nodiscard]] char const*
char const*
asCString() const;
/** Returns the unquoted string value. */
[[nodiscard]] std::string
std::string
asString() const;
[[nodiscard]] Int
Int
asInt() const;
[[nodiscard]] UInt
UInt
asUInt() const;
[[nodiscard]] double
double
asDouble() const;
[[nodiscard]] bool
bool
asBool() const;
/** Correct absolute value from int or unsigned int */
[[nodiscard]] UInt
UInt
asAbsUInt() const;
// TODO: What is the "empty()" method this docstring mentions?
/** isNull() tests to see if this field is null. Don't use this method to
test for emptiness: use empty(). */
[[nodiscard]] bool
bool
isNull() const;
[[nodiscard]] bool
bool
isBool() const;
[[nodiscard]] bool
bool
isInt() const;
[[nodiscard]] bool
bool
isUInt() const;
[[nodiscard]] bool
bool
isIntegral() const;
[[nodiscard]] bool
bool
isDouble() const;
[[nodiscard]] bool
bool
isNumeric() const;
[[nodiscard]] bool
bool
isString() const;
[[nodiscard]] bool
bool
isArray() const;
[[nodiscard]] bool
bool
isArrayOrNull() const;
[[nodiscard]] bool
bool
isObject() const;
[[nodiscard]] bool
bool
isObjectOrNull() const;
[[nodiscard]] bool
bool
isConvertibleTo(ValueType other) const;
/// Number of values in array or object
[[nodiscard]] UInt
UInt
size() const;
/** Returns false if this is an empty array, empty object, empty string,
@@ -304,10 +304,10 @@ public:
operator[](UInt index) const;
/// If the array contains at least index+1 elements, returns the element
/// value, otherwise returns defaultValue.
[[nodiscard]] Value
Value
get(UInt index, Value const& defaultValue) const;
/// Return true if index < size().
[[nodiscard]] bool
bool
isValidIndex(UInt index) const;
/// \brief Append value to array at the end.
///
@@ -355,7 +355,7 @@ public:
Value
get(char const* key, Value const& defaultValue) const;
/// Return the member named key if it exist, defaultValue otherwise.
[[nodiscard]] Value
Value
get(std::string const& key, Value const& defaultValue) const;
/// \brief Remove and return the named member.
@@ -374,10 +374,10 @@ public:
bool
isMember(char const* key) const;
/// Return true if the object has a member named key.
[[nodiscard]] bool
bool
isMember(std::string const& key) const;
/// Return true if the object has a member named key.
[[nodiscard]] bool
bool
isMember(StaticString const& key) const;
/// \brief Return a list of the member names.
@@ -385,15 +385,15 @@ public:
/// If null, return an empty list.
/// \pre type() is objectValue or nullValue
/// \post if type() was nullValue, it remains nullValue
[[nodiscard]] Members
Members
getMemberNames() const;
[[nodiscard]] std::string
std::string
toStyledString() const;
[[nodiscard]] const_iterator
const_iterator
begin() const;
[[nodiscard]] const_iterator
const_iterator
end() const;
iterator
@@ -513,20 +513,20 @@ public:
/// Return either the index or the member name of the referenced value as a
/// Value.
[[nodiscard]] Value
Value
key() const;
/// Return the index of the referenced Value. -1 if it is not an arrayValue.
[[nodiscard]] UInt
UInt
index() const;
/// Return the member name of the referenced Value. "" if it is not an
/// objectValue.
[[nodiscard]] char const*
char const*
memberName() const;
protected:
[[nodiscard]] Value&
Value&
deref() const;
void
@@ -535,10 +535,10 @@ protected:
void
decrement();
[[nodiscard]] difference_type
difference_type
computeDistance(SelfType const& other) const;
[[nodiscard]] bool
bool
isEqual(SelfType const& other) const;
void

View File

@@ -30,47 +30,47 @@ public:
std::shared_ptr<STTx const> const&,
std::shared_ptr<STObject const> const&);
[[nodiscard]] std::shared_ptr<STTx const> const&
std::shared_ptr<STTx const> const&
getTxn() const
{
return mTxn;
}
[[nodiscard]] TxMeta const&
TxMeta const&
getMeta() const
{
return mMeta;
}
[[nodiscard]] boost::container::flat_set<AccountID> const&
boost::container::flat_set<AccountID> const&
getAffected() const
{
return mAffected;
}
[[nodiscard]] TxID
TxID
getTransactionID() const
{
return mTxn->getTransactionID();
}
[[nodiscard]] TxType
TxType
getTxnType() const
{
return mTxn->getTxnType();
}
[[nodiscard]] TER
TER
getResult() const
{
return mMeta.getResultTER();
}
[[nodiscard]] std::uint32_t
std::uint32_t
getTxnSeq() const
{
return mMeta.getIndex();
}
[[nodiscard]] std::string
std::string
getEscMeta() const;
[[nodiscard]] Json::Value const&
Json::Value const&
getJson() const
{
return mJson;

View File

@@ -36,7 +36,7 @@ public:
virtual ~AmendmentTable() = default;
[[nodiscard]] virtual uint256
virtual uint256
find(std::string const& name) const = 0;
virtual bool
@@ -47,9 +47,9 @@ public:
virtual bool
enable(uint256 const& amendment) = 0;
[[nodiscard]] virtual bool
virtual bool
isEnabled(uint256 const& amendment) const = 0;
[[nodiscard]] virtual bool
virtual bool
isSupported(uint256 const& amendment) const = 0;
/**
@@ -58,17 +58,17 @@ public:
*
* @return true if an unsupported feature is enabled on the network
*/
[[nodiscard]] virtual bool
virtual bool
hasUnsupportedEnabled() const = 0;
[[nodiscard]] virtual std::optional<NetClock::time_point>
virtual std::optional<NetClock::time_point>
firstUnsupportedExpected() const = 0;
[[nodiscard]] virtual Json::Value
virtual Json::Value
getJson(bool isAdmin) const = 0;
/** Returns a Json::objectValue. */
[[nodiscard]] virtual Json::Value
virtual Json::Value
getJson(uint256 const& amendment, bool isAdmin) const = 0;
/** Called when a new fully-validated ledger is accepted. */
@@ -87,7 +87,7 @@ public:
/** Called to determine whether the amendment logic needs to process
a new validated ledger. (If it could have changed things.)
*/
[[nodiscard]] virtual bool
virtual bool
needValidatedLedger(LedgerIndex seq) const = 0;
virtual void
@@ -112,14 +112,14 @@ public:
// Called by the consensus code when we need to
// add feature entries to a validation
[[nodiscard]] virtual std::vector<uint256>
virtual std::vector<uint256>
doValidation(std::set<uint256> const& enabled) const = 0;
// The set of amendments to enable in the genesis ledger
// This will return all known, non-vetoed amendments.
// If we ever have two amendments that should not both be
// enabled at the same time, we should ensure one is vetoed.
[[nodiscard]] virtual std::vector<uint256>
virtual std::vector<uint256>
getDesired() const = 0;
// The function below adapts the API callers expect to the

View File

@@ -134,7 +134,7 @@ public:
while transactions applied to the consensus
ledger produce hard failures (and claim a fee).
*/
[[nodiscard]] virtual ApplyFlags
virtual ApplyFlags
flags() const = 0;
/** Prepare to modify the SLE associated with key.

View File

@@ -22,10 +22,10 @@ public:
BookDirs(ReadView const&, Book const&);
[[nodiscard]] const_iterator
const_iterator
begin() const;
[[nodiscard]] const_iterator
const_iterator
end() const;
};

View File

@@ -59,13 +59,13 @@ private:
return !(lhs == rhs);
}
[[nodiscard]] uint256 const&
uint256 const&
getAccount() const
{
return account_;
}
[[nodiscard]] uint256 const&
uint256 const&
getTXID() const
{
return txId_;
@@ -118,30 +118,30 @@ public:
return map_.erase(it);
}
[[nodiscard]] const_iterator
const_iterator
begin() const
{
return map_.begin();
}
[[nodiscard]] const_iterator
const_iterator
end() const
{
return map_.end();
}
[[nodiscard]] size_t
size_t
size() const
{
return map_.size();
}
[[nodiscard]] bool
bool
empty() const
{
return map_.empty();
}
[[nodiscard]] uint256 const&
uint256 const&
key() const
{
return salt_;

View File

@@ -31,10 +31,10 @@ public:
Dir(ReadView const&, Keylet const&);
[[nodiscard]] const_iterator
const_iterator
begin() const;
[[nodiscard]] const_iterator
const_iterator
end() const;
};

View File

@@ -21,8 +21,9 @@ private:
struct ValueIOU
{
explicit ValueIOU() = default;
STAmount lowAcctDebits;
STAmount highAcctDebits;
STAmount lowAcctCredits;
STAmount highAcctCredits;
STAmount lowAcctOrigBalance;
};
@@ -74,10 +75,10 @@ public:
// Get the adjustments for the balance between main and other.
// Returns the debits, credits and the original balance
[[nodiscard]] std::optional<AdjustmentIOU>
std::optional<AdjustmentIOU>
adjustmentsIOU(AccountID const& main, AccountID const& other, Currency const& currency) const;
[[nodiscard]] std::optional<AdjustmentMPT>
std::optional<AdjustmentMPT>
adjustmentsMPT(MPTID const& mptID) const;
void
@@ -104,7 +105,7 @@ public:
// Get the adjusted owner count. Since DeferredCredits is meant to be used
// in payments, and payments only decrease owner counts, return the max
// remembered owner count.
[[nodiscard]] std::optional<std::uint32_t>
std::optional<std::uint32_t>
ownerCount(AccountID const& id) const;
void
@@ -179,15 +180,15 @@ public:
}
/** @} */
[[nodiscard]] STAmount
STAmount
balanceHookIOU(AccountID const& account, AccountID const& issuer, STAmount const& amount)
const override;
[[nodiscard]] STAmount
STAmount
balanceHookMPT(AccountID const& account, MPTIssue const& issue, std::int64_t amount)
const override;
[[nodiscard]] STAmount
STAmount
balanceHookSelfIssueMPT(MPTIssue const& issue, std::int64_t amount) const override;
void
@@ -212,7 +213,7 @@ public:
void
adjustOwnerCountHook(AccountID const& account, std::uint32_t cur, std::uint32_t next) override;
[[nodiscard]] std::uint32_t
std::uint32_t
ownerCountHook(AccountID const& account, std::uint32_t count) const override;
/** Apply changes to base view.
@@ -229,7 +230,14 @@ public:
apply(PaymentSandbox& to);
/** @} */
[[nodiscard]] XRPAmount
// Return a map of balance changes on trust lines. The low account is the
// first account in the key. If the two accounts are equal, the map contains
// the total changes in currency regardless of issuer. This is useful to get
// the total change in XRP balances.
std::map<std::tuple<AccountID, AccountID, Currency>, STAmount>
balanceChanges(ReadView const& view) const;
XRPAmount
xrpDestroyed() const;
private:

View File

@@ -39,22 +39,22 @@ public:
struct sles_type : detail::ReadViewFwdRange<std::shared_ptr<SLE const>>
{
explicit sles_type(ReadView const& view);
[[nodiscard]] iterator
iterator
begin() const;
[[nodiscard]] iterator
iterator
end() const;
[[nodiscard]] iterator
iterator
upper_bound(key_type const& key) const;
};
struct txs_type : detail::ReadViewFwdRange<tx_type>
{
explicit txs_type(ReadView const& view);
[[nodiscard]] bool
bool
empty() const;
[[nodiscard]] iterator
iterator
begin() const;
[[nodiscard]] iterator
iterator
end() const;
};
@@ -78,33 +78,33 @@ public:
}
/** Returns information about the ledger. */
[[nodiscard]] virtual LedgerHeader const&
virtual LedgerHeader const&
header() const = 0;
/** Returns true if this reflects an open ledger. */
[[nodiscard]] virtual bool
virtual bool
open() const = 0;
/** Returns the close time of the previous ledger. */
[[nodiscard]] NetClock::time_point
NetClock::time_point
parentCloseTime() const
{
return header().parentCloseTime;
}
/** Returns the sequence number of the base ledger. */
[[nodiscard]] LedgerIndex
LedgerIndex
seq() const
{
return header().seq;
}
/** Returns the fees for the base ledger. */
[[nodiscard]] virtual Fees const&
virtual Fees const&
fees() const = 0;
/** Returns the tx processing rules. */
[[nodiscard]] virtual Rules const&
virtual Rules const&
rules() const = 0;
/** Determine if a state item exists.
@@ -114,7 +114,7 @@ public:
@return `true` if a SLE is associated with the
specified key.
*/
[[nodiscard]] virtual bool
virtual bool
exists(Keylet const& k) const = 0;
/** Return the key of the next state item.
@@ -127,7 +127,7 @@ public:
the key returned would be outside the open
interval (key, last).
*/
[[nodiscard]] virtual std::optional<key_type>
virtual std::optional<key_type>
succ(key_type const& key, std::optional<key_type> const& last = std::nullopt) const = 0;
/** Return the state item associated with a key.
@@ -143,7 +143,7 @@ public:
@return `nullptr` if the key is not present or
if the type does not match.
*/
[[nodiscard]] virtual std::shared_ptr<SLE const>
virtual std::shared_ptr<SLE const>
read(Keylet const& k) const = 0;
// Accounts in a payment are not allowed to use assets acquired during that
@@ -151,7 +151,7 @@ public:
// changes that accounts make during a payment. `balanceHookIOU` adjusts
// balances so newly acquired assets are not counted toward the balance.
// This is required to support PaymentSandbox.
[[nodiscard]] virtual STAmount
virtual STAmount
balanceHookIOU(AccountID const& account, AccountID const& issuer, STAmount const& amount) const
{
XRPL_ASSERT(amount.holds<Issue>(), "balanceHookIOU: amount is for Issue");
@@ -161,7 +161,7 @@ public:
// balanceHookMPT adjusts balances so newly acquired assets are not counted
// toward the balance.
[[nodiscard]] virtual STAmount
virtual STAmount
balanceHookMPT(AccountID const& account, MPTIssue const& issue, std::int64_t amount) const
{
return STAmount{issue, amount};
@@ -171,7 +171,7 @@ public:
// funds available to issue, which are originally available funds less
// already self sold MPT amounts (MPT sell offer). This hook is used
// by issuerFundsToSelfIssue() function.
[[nodiscard]] virtual STAmount
virtual STAmount
balanceHookSelfIssueMPT(MPTIssue const& issue, std::int64_t amount) const
{
return STAmount{issue, amount};
@@ -182,30 +182,30 @@ public:
// changes that accounts make during a payment. `ownerCountHook` adjusts the
// ownerCount so it returns the max value of the ownerCount so far.
// This is required to support PaymentSandbox.
[[nodiscard]] virtual std::uint32_t
virtual std::uint32_t
ownerCountHook(AccountID const& account, std::uint32_t count) const
{
return count;
}
// used by the implementation
[[nodiscard]] virtual std::unique_ptr<sles_type::iter_base>
virtual std::unique_ptr<sles_type::iter_base>
slesBegin() const = 0;
// used by the implementation
[[nodiscard]] virtual std::unique_ptr<sles_type::iter_base>
virtual std::unique_ptr<sles_type::iter_base>
slesEnd() const = 0;
// used by the implementation
[[nodiscard]] virtual std::unique_ptr<sles_type::iter_base>
virtual std::unique_ptr<sles_type::iter_base>
slesUpperBound(key_type const& key) const = 0;
// used by the implementation
[[nodiscard]] virtual std::unique_ptr<txs_type::iter_base>
virtual std::unique_ptr<txs_type::iter_base>
txsBegin() const = 0;
// used by the implementation
[[nodiscard]] virtual std::unique_ptr<txs_type::iter_base>
virtual std::unique_ptr<txs_type::iter_base>
txsEnd() const = 0;
/** Returns `true` if a tx exists in the tx map.
@@ -213,7 +213,7 @@ public:
A tx exists in the map if it is part of the
base ledger, or if it is a newly inserted tx.
*/
[[nodiscard]] virtual bool
virtual bool
txExists(key_type const& key) const = 0;
/** Read a transaction from the tx map.
@@ -224,7 +224,7 @@ public:
@return A pair of nullptr if the
key is not found in the tx map.
*/
[[nodiscard]] virtual tx_type
virtual tx_type
txRead(key_type const& key) const = 0;
//
@@ -257,7 +257,7 @@ public:
@return std::nullopt if the item does not exist.
*/
[[nodiscard]] virtual std::optional<digest_type>
virtual std::optional<digest_type>
digest(key_type const& key) const = 0;
};

View File

@@ -54,19 +54,19 @@ public:
bool isDryRun,
beast::Journal j);
[[nodiscard]] bool
bool
exists(ReadView const& base, Keylet const& k) const;
[[nodiscard]] std::optional<key_type>
std::optional<key_type>
succ(ReadView const& base, key_type const& key, std::optional<key_type> const& last) const;
[[nodiscard]] std::shared_ptr<SLE const>
std::shared_ptr<SLE const>
read(ReadView const& base, Keylet const& k) const;
std::shared_ptr<SLE>
peek(ReadView const& base, Keylet const& k);
[[nodiscard]] std::size_t
std::size_t
size() const;
void
@@ -97,7 +97,7 @@ public:
destroyXRP(XRPAmount const& fee);
// For debugging
[[nodiscard]] XRPAmount const&
XRPAmount const&
dropsDestroyed() const
{
return dropsDestroyed_;

View File

@@ -22,51 +22,51 @@ public:
ApplyViewBase(ReadView const* base, ApplyFlags flags);
// ReadView
[[nodiscard]] bool
bool
open() const override;
[[nodiscard]] LedgerHeader const&
LedgerHeader const&
header() const override;
[[nodiscard]] Fees const&
Fees const&
fees() const override;
[[nodiscard]] Rules const&
Rules const&
rules() const override;
[[nodiscard]] bool
bool
exists(Keylet const& k) const override;
[[nodiscard]] std::optional<key_type>
std::optional<key_type>
succ(key_type const& key, std::optional<key_type> const& last = std::nullopt) const override;
[[nodiscard]] std::shared_ptr<SLE const>
std::shared_ptr<SLE const>
read(Keylet const& k) const override;
[[nodiscard]] std::unique_ptr<sles_type::iter_base>
std::unique_ptr<sles_type::iter_base>
slesBegin() const override;
[[nodiscard]] std::unique_ptr<sles_type::iter_base>
std::unique_ptr<sles_type::iter_base>
slesEnd() const override;
[[nodiscard]] std::unique_ptr<sles_type::iter_base>
std::unique_ptr<sles_type::iter_base>
slesUpperBound(uint256 const& key) const override;
[[nodiscard]] std::unique_ptr<txs_type::iter_base>
std::unique_ptr<txs_type::iter_base>
txsBegin() const override;
[[nodiscard]] std::unique_ptr<txs_type::iter_base>
std::unique_ptr<txs_type::iter_base>
txsEnd() const override;
[[nodiscard]] bool
bool
txExists(key_type const& key) const override;
[[nodiscard]] tx_type
tx_type
txRead(key_type const& key) const override;
// ApplyView
[[nodiscard]] ApplyFlags
ApplyFlags
flags() const override;
std::shared_ptr<SLE>

View File

@@ -42,10 +42,10 @@ public:
void
apply(RawView& to) const;
[[nodiscard]] bool
bool
exists(ReadView const& base, Keylet const& k) const;
[[nodiscard]] std::optional<key_type>
std::optional<key_type>
succ(ReadView const& base, key_type const& key, std::optional<key_type> const& last) const;
void
@@ -57,19 +57,19 @@ public:
void
replace(std::shared_ptr<SLE> const& sle);
[[nodiscard]] std::shared_ptr<SLE const>
std::shared_ptr<SLE const>
read(ReadView const& base, Keylet const& k) const;
void
destroyXRP(XRPAmount const& fee);
[[nodiscard]] std::unique_ptr<ReadView::sles_type::iter_base>
std::unique_ptr<ReadView::sles_type::iter_base>
slesBegin(ReadView const& base) const;
[[nodiscard]] std::unique_ptr<ReadView::sles_type::iter_base>
std::unique_ptr<ReadView::sles_type::iter_base>
slesEnd(ReadView const& base) const;
[[nodiscard]] std::unique_ptr<ReadView::sles_type::iter_base>
std::unique_ptr<ReadView::sles_type::iter_base>
slesUpperBound(ReadView const& base, uint256 const& key) const;
private:

View File

@@ -27,16 +27,16 @@ public:
virtual ~ReadViewFwdIter() = default;
[[nodiscard]] virtual std::unique_ptr<ReadViewFwdIter>
virtual std::unique_ptr<ReadViewFwdIter>
copy() const = 0;
[[nodiscard]] virtual bool
virtual bool
equal(ReadViewFwdIter const& impl) const = 0;
virtual void
increment() = 0;
[[nodiscard]] virtual value_type
virtual value_type
dereference() const = 0;
};

View File

@@ -43,7 +43,7 @@ public:
{
}
[[nodiscard]] bool
bool
isSecure() const
{
return mSecure;

View File

@@ -58,7 +58,7 @@ public:
return ssl_context_;
}
[[nodiscard]] bool
bool
sslVerify() const
{
return verify_;

View File

@@ -34,7 +34,7 @@ public:
/** Get the block size for backends that support it
*/
[[nodiscard]] virtual std::optional<std::size_t>
virtual std::optional<std::size_t>
getBlockSize() const
{
return std::nullopt;
@@ -135,7 +135,7 @@ public:
}
/** Returns the number of file descriptors the backend expects to need. */
[[nodiscard]] virtual int
virtual int
fdRequired() const = 0;
};

View File

@@ -16,7 +16,7 @@ public:
virtual ~Factory() = default;
/** Retrieve the name of this factory. */
[[nodiscard]] virtual std::string
virtual std::string
getName() const = 0;
/** Create an instance of this factory's backend.

View File

@@ -59,15 +59,15 @@ public:
createObject(NodeObjectType type, Blob&& data, uint256 const& hash);
/** Returns the type of this object. */
[[nodiscard]] NodeObjectType
NodeObjectType
getType() const;
/** Returns the hash of the data. */
[[nodiscard]] uint256 const&
uint256 const&
getHash() const;
/** Returns the underlying data. */
[[nodiscard]] Blob const&
Blob const&
getData() const;
private:

View File

@@ -21,7 +21,7 @@ public:
DecodedBlob(void const* key, void const* value, int valueBytes);
/** Determine if the decoding was successful. */
[[nodiscard]] bool
bool
wasOk() const noexcept
{
return m_success;

View File

@@ -68,7 +68,7 @@ public:
{
}
[[nodiscard]] AccountID const&
AccountID const&
getIssuer() const;
template <ValidIssueType TIss>
@@ -80,16 +80,16 @@ public:
get();
template <ValidIssueType TIss>
[[nodiscard]] constexpr bool
constexpr bool
holds() const;
[[nodiscard]] std::string
std::string
getText() const;
[[nodiscard]] constexpr value_type const&
constexpr value_type const&
value() const;
[[nodiscard]] constexpr token_type
constexpr token_type
token() const;
void
@@ -98,7 +98,7 @@ public:
STAmount
operator()(Number const&) const;
[[nodiscard]] constexpr AmtType
constexpr AmtType
getAmountType() const;
// Custom, generic visit implementation
@@ -111,7 +111,7 @@ public:
return detail::visit(issue_, std::forward<Visitors>(visitors)...);
}
[[nodiscard]] constexpr bool
constexpr bool
native() const
{
return visit(
@@ -119,7 +119,7 @@ public:
[&](MPTIssue const&) { return false; });
}
[[nodiscard]] bool
bool
integral() const
{
return visit(
@@ -169,7 +169,7 @@ Asset::holds() const
}
template <ValidIssueType TIss>
[[nodiscard]] constexpr TIss const&
constexpr TIss const&
Asset::get() const
{
if (!std::holds_alternative<TIss>(issue_))

View File

@@ -39,7 +39,7 @@ struct Fees
The reserve is calculated as the reserve base plus
the reserve increment times the number of increments.
*/
[[nodiscard]] XRPAmount
XRPAmount
accountReserve(std::size_t ownerCount) const
{
return reserve + ownerCount * increment;

View File

@@ -71,13 +71,13 @@ public:
operator bool() const noexcept;
/** Return the sign of the amount */
[[nodiscard]] int
int
signum() const noexcept;
[[nodiscard]] exponent_type
exponent_type
exponent() const noexcept;
[[nodiscard]] mantissa_type
mantissa_type
mantissa() const noexcept;
static IOUAmount

View File

@@ -18,7 +18,7 @@ public:
static InnerObjectFormats const&
getInstance();
[[nodiscard]] SOTemplate const*
SOTemplate const*
findSOTemplateBySField(SField const& sField) const;
};

View File

@@ -21,22 +21,22 @@ public:
{
}
[[nodiscard]] AccountID const&
AccountID const&
getIssuer() const
{
return account;
}
[[nodiscard]] std::string
std::string
getText() const;
void
setJson(Json::Value& jv) const;
[[nodiscard]] bool
bool
native() const;
[[nodiscard]] bool
bool
integral() const;
friend constexpr std::weak_ordering

View File

@@ -25,7 +25,7 @@ struct Keylet
}
/** Returns true if the SLE matches the type */
[[nodiscard]] bool
bool
check(STLedgerEntry const&) const;
};

View File

@@ -44,7 +44,7 @@ public:
/** Retrieve the name of the format.
*/
[[nodiscard]] std::string const&
std::string const&
getName() const
{
return name_;
@@ -52,13 +52,13 @@ public:
/** Retrieve the transaction type this format represents.
*/
[[nodiscard]] KeyType
KeyType
getType() const
{
return type_;
}
[[nodiscard]] SOTemplate const&
SOTemplate const&
getSOTemplate() const
{
return soTemplate_;
@@ -96,7 +96,7 @@ public:
@param name The name of the type.
@return The type.
*/
[[nodiscard]] KeyType
KeyType
findTypeByName(std::string const& name) const
{
if (auto const result = findByName(name))
@@ -108,7 +108,7 @@ public:
/** Retrieve a format based on its type.
*/
[[nodiscard]] Item const*
Item const*
findByType(KeyType type) const
{
auto const itr = types_.find(type);
@@ -118,13 +118,13 @@ public:
}
// begin() and end() are provided for testing purposes.
[[nodiscard]] typename std::forward_list<Item>::const_iterator
typename std::forward_list<Item>::const_iterator
begin() const
{
return formats_.begin();
}
[[nodiscard]] typename std::forward_list<Item>::const_iterator
typename std::forward_list<Item>::const_iterator
end() const
{
return formats_.end();
@@ -133,7 +133,7 @@ public:
protected:
/** Retrieve a format based on its name.
*/
[[nodiscard]] Item const*
Item const*
findByName(std::string const& name) const
{
auto const itr = names_.find(name);

View File

@@ -68,14 +68,14 @@ public:
}
/** Return the sign of the amount */
[[nodiscard]] constexpr int
constexpr int
signum() const noexcept;
/** Returns the underlying value. Code SHOULD NOT call this
function unless the type has been abstracted away,
e.g. in a templated function.
*/
[[nodiscard]] constexpr value_type
constexpr value_type
value() const;
static MPTAmount

View File

@@ -26,16 +26,16 @@ public:
return mptID_;
}
[[nodiscard]] AccountID const&
AccountID const&
getIssuer() const;
[[nodiscard]] constexpr MPTID const&
constexpr MPTID const&
getMptID() const
{
return mptID_;
}
[[nodiscard]] std::string
std::string
getText() const;
void

View File

@@ -156,7 +156,7 @@ struct MultiApiJson
{ return visitor(*self, std::forward<decltype(args)>(args)...); };
}
[[nodiscard]] auto
auto
visit() const
{
return [self = this](auto... args)
@@ -176,7 +176,7 @@ struct MultiApiJson
}
template <typename... Args>
[[nodiscard]] auto
auto
visit(Args... args) const -> std::invoke_result_t<visitor_t, MultiApiJson const&, Args...>
requires(sizeof...(args) > 0) &&
requires { visitor(*this, std::forward<decltype(args)>(args)...); }

View File

@@ -24,17 +24,17 @@ public:
}
template <ValidPathAsset T>
[[nodiscard]] constexpr bool
constexpr bool
holds() const;
[[nodiscard]] constexpr bool
constexpr bool
isXRP() const;
template <ValidPathAsset T>
T const&
get() const;
[[nodiscard]] constexpr std::variant<Currency, MPTID> const&
constexpr std::variant<Currency, MPTID> const&
value() const;
// Custom, generic visit implementation

View File

@@ -53,22 +53,22 @@ public:
Permission&
operator=(Permission const&) = delete;
[[nodiscard]] std::optional<std::string>
std::optional<std::string>
getPermissionName(std::uint32_t const value) const;
[[nodiscard]] std::optional<std::uint32_t>
std::optional<std::uint32_t>
getGranularValue(std::string const& name) const;
[[nodiscard]] std::optional<std::string>
std::optional<std::string>
getGranularName(GranularPermissionType const& value) const;
[[nodiscard]] std::optional<TxType>
std::optional<TxType>
getGranularTxType(GranularPermissionType const& gpType) const;
[[nodiscard]] std::optional<std::reference_wrapper<uint256 const>>
std::optional<std::reference_wrapper<uint256 const>>
getTxFeature(TxType txType) const;
[[nodiscard]] bool
bool
isDelegable(std::uint32_t const& permissionValue, Rules const& rules) const;
// for tx level permission, permission value is equal to tx type plus one

View File

@@ -63,7 +63,7 @@ public:
*/
explicit PublicKey(Slice const& slice);
[[nodiscard]] std::uint8_t const*
std::uint8_t const*
data() const noexcept
{
return buf_;
@@ -75,31 +75,31 @@ public:
return size_;
}
[[nodiscard]] const_iterator
const_iterator
begin() const noexcept
{
return buf_;
}
[[nodiscard]] const_iterator
const_iterator
cbegin() const noexcept
{
return buf_;
}
[[nodiscard]] const_iterator
const_iterator
end() const noexcept
{
return buf_ + size_;
}
[[nodiscard]] const_iterator
const_iterator
cend() const noexcept
{
return buf_ + size_;
}
[[nodiscard]] Slice
Slice
slice() const noexcept
{
return {buf_, size_};

View File

@@ -35,7 +35,7 @@ struct TAmounts
}
/** Returns `true` if either quantity is not positive. */
[[nodiscard]] bool
bool
empty() const noexcept
{
return in <= beast::zero || out <= beast::zero;
@@ -145,7 +145,7 @@ public:
/** @} */
/** Returns the quality as STAmount. */
[[nodiscard]] STAmount
STAmount
rate() const
{
return amountFromQuality(m_value);
@@ -154,7 +154,7 @@ public:
/** Returns the quality rounded up to the specified number
of decimal digits.
*/
[[nodiscard]] Quality
Quality
round(int tickSize) const;
/** Returns the scaled amount with in capped.

View File

@@ -53,13 +53,13 @@ public:
/** Return true if the quality function is constant
*/
[[nodiscard]] bool
bool
isConst() const
{
return quality_.has_value();
}
[[nodiscard]] std::optional<Quality> const&
std::optional<Quality> const&
quality() const
{
return quality_;

View File

@@ -58,12 +58,12 @@ private:
std::optional<uint256> const& digest,
STVector256 const& amendments);
[[nodiscard]] std::unordered_set<uint256, beast::uhash<>> const&
std::unordered_set<uint256, beast::uhash<>> const&
presets() const;
public:
/** Returns `true` if a feature is enabled. */
[[nodiscard]] bool
bool
enabled(uint256 const& feature) const;
/** Returns `true` if two rule sets are identical.

View File

@@ -189,19 +189,19 @@ public:
return getField(field_code(type, value));
}
[[nodiscard]] std::string const&
std::string const&
getName() const
{
return fieldName;
}
[[nodiscard]] bool
bool
hasName() const
{
return fieldCode > 0;
}
[[nodiscard]] Json::StaticString const&
Json::StaticString const&
getJsonName() const
{
return jsonName;
@@ -212,19 +212,19 @@ public:
return jsonName;
}
[[nodiscard]] bool
bool
isInvalid() const
{
return fieldCode == -1;
}
[[nodiscard]] bool
bool
isUseful() const
{
return fieldCode > 0;
}
[[nodiscard]] bool
bool
isBinary() const
{
return fieldValue < 256;
@@ -234,18 +234,18 @@ public:
// should be discarded during serialization,like 'hash'.
// You cannot serialize an object's hash inside that object,
// but you can have it in the JSON representation.
[[nodiscard]] bool
bool
isDiscardable() const
{
return fieldValue > 256;
}
[[nodiscard]] int
int
getCode() const
{
return fieldCode;
}
[[nodiscard]] int
int
getNum() const
{
return fieldNum;
@@ -256,13 +256,13 @@ public:
return num;
}
[[nodiscard]] bool
bool
shouldMeta(int c) const
{
return (fieldMeta & c) != 0;
}
[[nodiscard]] bool
bool
shouldInclude(bool withSigningField) const
{
return (fieldValue < 256) && (withSigningField || (signingField == IsSigning::yes));

View File

@@ -63,19 +63,19 @@ public:
init(fieldName);
}
[[nodiscard]] SField const&
SField const&
sField() const
{
return sField_.get();
}
[[nodiscard]] SOEStyle
SOEStyle
style() const
{
return style_;
}
[[nodiscard]] SOETxMPTIssue
SOETxMPTIssue
supportMPT() const
{
return supportMpt_;
@@ -110,42 +110,42 @@ public:
std::initializer_list<SOElement> commonFields = {});
/* Provide for the enumeration of fields */
[[nodiscard]] std::vector<SOElement>::const_iterator
std::vector<SOElement>::const_iterator
begin() const
{
return elements_.cbegin();
}
[[nodiscard]] std::vector<SOElement>::const_iterator
std::vector<SOElement>::const_iterator
cbegin() const
{
return begin();
}
[[nodiscard]] std::vector<SOElement>::const_iterator
std::vector<SOElement>::const_iterator
end() const
{
return elements_.cend();
}
[[nodiscard]] std::vector<SOElement>::const_iterator
std::vector<SOElement>::const_iterator
cend() const
{
return end();
}
/** The number of entries in this template */
[[nodiscard]] std::size_t
std::size_t
size() const
{
return elements_.size();
}
/** Retrieve the position of a named field. */
[[nodiscard]] int
int
getIndex(SField const&) const;
[[nodiscard]] SOEStyle
SOEStyle
style(SField const& sf) const
{
return elements_[indices_[sf.getNum()]].style();

View File

@@ -28,25 +28,25 @@ public:
STAccount(SerialIter& sit, SField const& name);
STAccount(SField const& n, AccountID const& v);
[[nodiscard]] SerializedTypeID
SerializedTypeID
getSType() const override;
[[nodiscard]] std::string
std::string
getText() const override;
void
add(Serializer& s) const override;
[[nodiscard]] bool
bool
isEquivalent(STBase const& t) const override;
[[nodiscard]] bool
bool
isDefault() const override;
STAccount&
operator=(AccountID const& value);
[[nodiscard]] AccountID const&
AccountID const&
value() const noexcept;
void

View File

@@ -138,26 +138,26 @@ public:
//
//--------------------------------------------------------------------------
[[nodiscard]] int
int
exponent() const noexcept;
[[nodiscard]] bool
bool
integral() const noexcept;
[[nodiscard]] bool
bool
native() const noexcept;
template <ValidIssueType TIss>
[[nodiscard]] constexpr bool
constexpr bool
holds() const noexcept;
[[nodiscard]] bool
bool
negative() const noexcept;
[[nodiscard]] std::uint64_t
std::uint64_t
mantissa() const noexcept;
[[nodiscard]] Asset const&
Asset const&
asset() const;
template <ValidIssueType TIss>
@@ -168,20 +168,20 @@ public:
TIss&
get();
[[nodiscard]] AccountID const&
AccountID const&
getIssuer() const;
[[nodiscard]] int
int
signum() const noexcept;
/** Returns a zero value with the same issuer and currency. */
[[nodiscard]] STAmount
STAmount
zeroed() const;
void
setJson(Json::Value&) const;
[[nodiscard]] STAmount const&
STAmount const&
value() const noexcept;
//--------------------------------------------------------------------------
@@ -232,31 +232,31 @@ public:
//
//--------------------------------------------------------------------------
[[nodiscard]] SerializedTypeID
SerializedTypeID
getSType() const override;
[[nodiscard]] std::string
std::string
getFullText() const override;
[[nodiscard]] std::string
std::string
getText() const override;
[[nodiscard]] Json::Value getJson(JsonOptions = JsonOptions::none) const override;
Json::Value getJson(JsonOptions = JsonOptions::none) const override;
void
add(Serializer& s) const override;
[[nodiscard]] bool
bool
isEquivalent(STBase const& t) const override;
[[nodiscard]] bool
bool
isDefault() const override;
[[nodiscard]] XRPAmount
XRPAmount
xrp() const;
[[nodiscard]] IOUAmount
IOUAmount
iou() const;
[[nodiscard]] MPTAmount
MPTAmount
mpt() const;
private:
@@ -462,7 +462,7 @@ STAmount::asset() const
}
template <ValidIssueType TIss>
[[nodiscard]] constexpr TIss const&
constexpr TIss const&
STAmount::get() const
{
return mAsset.get<TIss>();

Some files were not shown because too many files have changed in this diff Show More