Compare commits

..

34 Commits

Author SHA1 Message Date
Vito
5fff81a722 Merge remote-tracking branch 'origin/develop' into tapanito/transactor-invariant-pt2
# Conflicts:
#	src/libxrpl/tx/transactors/nft/NFTokenMint.cpp
#	src/libxrpl/tx/transactors/vault/VaultClawback.cpp
#	src/libxrpl/tx/transactors/vault/VaultCreate.cpp
#	src/libxrpl/tx/transactors/vault/VaultDelete.cpp
#	src/libxrpl/tx/transactors/vault/VaultDeposit.cpp
#	src/libxrpl/tx/transactors/vault/VaultSet.cpp
#	src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp
2026-04-24 18:06:40 +02:00
Vito
a444d80b45 fix: Re-apply vault invariant rounding to per-transactor checks
Restore the DeltaInfo + roundToAsset rounding logic in VaultDeposit,
VaultWithdraw, and VaultClawback finalizeInvariants methods. These
changes were lost when the previous parent-branch merge was committed
without staging the transactor files.
2026-04-24 17:46:03 +02:00
Vito
6167c70043 Merge remote-tracking branch 'origin/tapanito/transaction-invariant' into tapanito/transactor-invariant-pt2
# Conflicts:
#	include/xrpl/tx/invariants/VaultInvariant.h
#	src/libxrpl/tx/invariants/VaultInvariant.cpp
#	src/libxrpl/tx/transactors/vault/VaultCreate.cpp
2026-04-22 17:16:13 +02:00
Vito
dd654f649e fix: Remove unreachable tefINVARIANT_FAILED check on tx invariants
checkTransactionInvariants only returns tecINVARIANT_FAILED or the
input result, never tefINVARIANT_FAILED. Only protocol invariants can
escalate to tef, so the txResult comparison was dead code.
2026-04-22 15:25:38 +02:00
Vito
0365449598 chore: Mark conditionally-used includes with IWYU pragma keep
Serializer.h, STAmount.h, Number.h, and <iterator> are only used inside
XRPL_ASSERT or #ifdef DEBUG blocks that compile to nothing in release
builds. Without the pragma, include-cleaner flags them as unused in
release CI while flagging them as missing in debug builds.
2026-04-22 13:43:39 +02:00
Vito
3f569f4cca chore: Add more direct includes flagged by include-cleaner
Add direct includes for std::exception, std::distance, beast::Journal,
xrpl::ReadView, xrpl::Serializer, xrpl::SerialIter, xrpl::Number, and
xrpl::roundToAsset across files that use them. Also suppress
modernize-use-ranges on a std::is_sorted call where the ranges version
does not compile because SignerEntry is not std::totally_ordered.
2026-04-22 12:43:12 +02:00
Vito
cdef4f3f2c chore: Apply readability fixes flagged by clang-tidy
Use container::empty() and container::contains() instead of size() == 0
and find() != end(), matching the readability-container-size-empty and
readability-container-contains checks.
2026-04-22 12:43:11 +02:00
Vito Tumas
4b9e3997f8 Merge branch 'develop' into tapanito/transaction-invariant 2026-04-22 11:21:39 +02:00
Vito
273f8a13cd fix: Log transaction JSON on invariant failure
The fatal log emitted when finalizeInvariants returns false previously
lacked identifying information, making postmortems difficult. Include
the full transaction JSON, matching the global invariant checker.
2026-04-22 10:00:13 +02:00
Vito
50aa2603ec docs: Clarify visitInvariantEntry after parameter semantics
Callers must use isDelete rather than after == nullptr to detect
deletions; after is non-null for erased SLEs as supplied by the apply
logic.
2026-04-22 10:00:01 +02:00
Vito
c84cab12ae Merge remote-tracking branch 'origin/develop' into tapanito/transaction-invariant
# Conflicts:
#	src/test/app/Invariants_test.cpp
2026-04-21 19:02:58 +02:00
Vito
96f60d6def chore: Add direct includes flagged by include-cleaner
Add direct includes for std::shared_ptr, SLE, STTx, and XRPAmount in
transactor translation units that override visitInvariantEntry or
finalizeInvariants. Previously these types were pulled in transitively,
which misc-include-cleaner flags as errors under the project's
clang-tidy configuration.
2026-04-21 18:58:20 +02:00
Vito
687d9489d7 test: Guard against null transactor in Invariants_test
Addresses a review comment: the soft BEAST_EXPECT assertion would not
abort on failure, risking a null pointer dereference in the subsequent
checkInvariants call. Use an early-return guard instead.
2026-04-21 18:58:20 +02:00
Vito Tumas
99d745d4a2 Merge branch 'develop' into tapanito/transaction-invariant 2026-04-21 16:56:01 +02:00
Vito
e28d5e5b50 formatting issues 2026-04-21 16:50:27 +02:00
Vito
da44fdb5d3 Merge remote-tracking branch 'origin/develop' into tapanito/transaction-invariant 2026-04-21 14:41:20 +02:00
Vito
9e9fdb40a8 Merge remote-tracking branch 'origin/develop' into tapanito/transaction-invariant 2026-04-21 13:47:31 +02:00
Vito Tumas
1664669bcc Merge branch 'develop' into tapanito/transaction-invariant 2026-03-31 13:46:04 +02:00
Vito Tumas
e873e17d2b Merge branch 'tapanito/transaction-invariant' into tapanito/transactor-invariant-pt2 2026-03-31 12:18:57 +02:00
Vito
a62ac8b32f addresses review comments 2026-03-25 15:17:47 +01:00
Vito
05738afbb9 Merge remote-tracking branch 'origin/tapanito/transaction-invariant' into tapanito/transactor-invariant-pt2 2026-03-24 16:10:33 +01:00
Vito
b5b97bc3e6 addresses review comments 2026-03-24 16:10:07 +01:00
Vito
1bf045d2bd removes bad files 2026-03-23 16:57:42 +01:00
Vito
009e05a463 restores invariant tests 2026-03-23 16:49:03 +01:00
Vito
ce92da9161 fix: Clean up VaultInvariantData and deduplicate ValidVault
- Remove unused zero member, clear() method, and MPT accessors
- Fix std::move from const ref in resolveBeforeShares
- Fix assertion label to use VaultInvariantData class name
- Simplify dead ternary in VaultSet::finalizeInvariants
- Add [[nodiscard]] to afterVault()/beforeVault() accessors
- Add isTesSuccess early return guard to all transactor invariants
- Deduplicate ValidVault by delegating to VaultInvariantData
- Remove ReadView/STTx/Journal dependencies from VaultInvariantData
2026-03-22 13:23:06 +01:00
Vito
c59683d07c refactor: Move vault invariants from global to per-transactor
Move transaction-specific invariant checks from the global ValidVault
invariant into each vault transactor's finalizeInvariants method. Run
both transaction and protocol invariants unconditionally, returning
failure if either check fails (tef takes priority over tec).
2026-03-22 12:13:53 +01:00
Vito
e3d9e06345 fix: Run both transaction and protocol invariants unconditionally
Always run both invariant checks instead of short-circuiting on
transaction invariant failure. Return the most severe failure code
(tef > tec). Also switch logger from j_ to ctx_.journal.
2026-03-22 12:11:00 +01:00
Vito
038e50abed fix: Align invariant method class names with transactor class names
Rename class qualifiers in visitInvariantEntry and finalizeInvariants
definitions to match their actual transactor classes (e.g.,
DeleteAccount → AccountDelete, CancelCheck → CheckCancel).
2026-03-21 17:56:12 +01:00
Vito
34804eb53a Merge remote-tracking branch 'origin/tapanito/transaction-invariant' into tapanito/transaction-invariant 2026-03-21 17:55:00 +01:00
Vito
08f70c85d4 Merge remote-tracking branch 'origin/develop' into tapanito/transaction-invariant 2026-03-20 17:51:35 +01:00
Vito Tumas
b6e792cede Merge branch 'develop' into tapanito/transaction-invariant 2026-03-17 17:56:19 +01:00
Vito
23e117bde7 Merge remote-tracking branch 'origin/develop' into tapanito/transaction-invariant 2026-03-16 19:09:43 +01:00
Vito
40ee1e1ff3 feat: Add no-op transaction invariant overrides to all transactors 2026-03-16 19:05:11 +01:00
Vito
10cb46c3f0 feat: Add transaction-specific invariant checking
Introduce a two-phase visitor pattern (visitInvariantEntry /
finalizeInvariants) on Transactor so individual transaction types
can define their own post-condition checks.  These run before the
existing protocol-wide invariants and short-circuit on failure to
avoid misleading secondary errors.

- Add pure virtual visitInvariantEntry and finalizeInvariants to
  Transactor
- Implement checkTransactionInvariants to drive the visitor loop
- Extract checkInvariants to orchestrate transaction-specific then
  protocol-wide checks with reset-and-retry on failure
- Move failInvariantCheck from private to public in ApplyContext
2026-03-16 19:05:03 +01:00
325 changed files with 2773 additions and 4818 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

@@ -188,16 +188,10 @@ test.toplevel > xrpl.json
test.unit_test > xrpl.basics
test.unit_test > xrpl.protocol
tests.libxrpl > xrpl.basics
tests.libxrpl > xrpl.core
tests.libxrpl > xrpl.json
tests.libxrpl > xrpl.ledger
tests.libxrpl > xrpl.net
tests.libxrpl > xrpl.nodestore
tests.libxrpl > xrpl.protocol
tests.libxrpl > xrpl.protocol_autogen
tests.libxrpl > xrpl.server
tests.libxrpl > xrpl.shamap
tests.libxrpl > xrpl.tx
xrpl.conditions > xrpl.basics
xrpl.conditions > xrpl.protocol
xrpl.core > xrpl.basics

View File

@@ -51,21 +51,20 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
# Only generate a subset of configurations in PRs.
if not all:
# Debian:
# - Bookworm using GCC 13: Debug on linux/amd64, set the reference
# fee to 500 and enable code coverage (which will be done below).
# - Bookworm using GCC 15: Debug on linux/amd64, enable Address and
# UB sanitizers (which will be done below).
# - Bookworm using GCC 13: Release on linux/amd64, set the reference
# fee to 500.
# - Bookworm using GCC 15: Debug on linux/amd64, enable code
# coverage (which will be done below).
# - Bookworm using Clang 16: Debug on linux/amd64, enable voidstar.
# - Bookworm using Clang 17: Release on linux/amd64, set the
# reference fee to 1000.
# - Bookworm using Clang 20: Debug on linux/amd64, enable Address
# and UB sanitizers (which will be done below).
# - Bookworm using Clang 20: Debug on linux/amd64.
if os["distro_name"] == "debian":
skip = True
if os["distro_version"] == "bookworm":
if (
f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-13"
and build_type == "Debug"
and build_type == "Release"
and architecture["platform"] == "linux/amd64"
):
cmake_args = f"-DUNIT_TEST_REFERENCE_FEE=500 {cmake_args}"
@@ -194,11 +193,11 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
):
continue
# Enable code coverage for Debian Bookworm using GCC 13 in Debug on
# linux/amd64.
# Enable code coverage for Debian Bookworm using GCC 15 in Debug on
# linux/amd64
if (
f"{os['distro_name']}-{os['distro_version']}" == "debian-bookworm"
and f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-13"
and f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-15"
and build_type == "Debug"
and architecture["platform"] == "linux/amd64"
):
@@ -235,39 +234,23 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
# Add the configuration to the list, with the most unique fields first,
# so that they are easier to identify in the GitHub Actions UI, as long
# names get truncated.
# Add Address and UB sanitizers as separate configurations for specific
# bookworm distros. Thread sanitizer is currently disabled (see below).
# Add Address and Thread (both coupled with UB) sanitizers for specific bookworm distros.
# GCC-Asan xrpld-embedded tests are failing because of https://github.com/google/sanitizers/issues/856
if os[
"distro_version"
] == "bookworm" and f"{os['compiler_name']}-{os['compiler_version']}" in [
"gcc-15",
"clang-20",
]:
# Add ASAN configuration.
if (
os["distro_version"] == "bookworm"
and f"{os['compiler_name']}-{os['compiler_version']}" == "clang-20"
):
# Add ASAN + UBSAN configuration.
configurations.append(
{
"config_name": config_name + "-asan",
"config_name": config_name + "-asan-ubsan",
"cmake_args": cmake_args,
"cmake_target": cmake_target,
"build_only": build_only,
"build_type": build_type,
"os": os,
"architecture": architecture,
"sanitizers": "address",
}
)
# Add UBSAN configuration.
configurations.append(
{
"config_name": config_name + "-ubsan",
"cmake_args": cmake_args,
"cmake_target": cmake_target,
"build_only": build_only,
"build_type": build_type,
"os": os,
"architecture": architecture,
"sanitizers": "undefinedbehavior",
"sanitizers": "address,undefinedbehavior",
}
)
# TSAN is deactivated due to seg faults with latest compilers.

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

@@ -67,10 +67,8 @@ private:
}
else
{
for (; elapsed > 0; --elapsed)
{
while ((elapsed--) != 0u)
m_value -= (m_value + Window - 1) / Window;
}
}
}

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

@@ -43,10 +43,8 @@ public:
: work_(boost::asio::make_work_guard(ios_))
{
threads_.reserve(concurrency);
for (std::size_t i = 0; i < concurrency; ++i)
{
while ((concurrency--) != 0u)
threads_.emplace_back([&] { ios_.run(); });
}
}
~enable_yield_to()

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

@@ -74,10 +74,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 +104,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 +179,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 +212,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 +229,7 @@ public:
apply(PaymentSandbox& to);
/** @} */
[[nodiscard]] XRPAmount
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

@@ -104,7 +104,7 @@ struct LoanState
Number managementFeeDue;
// Interest still due to be paid by the borrower.
[[nodiscard]] Number
Number
interestOutstanding() const
{
XRPL_ASSERT_PARTS(
@@ -266,7 +266,7 @@ struct PaymentComponents
//
// @return The amount of tracked interest included in this payment that
// will be paid to the vault.
[[nodiscard]] Number
Number
trackedInterestPart() const;
};
@@ -340,7 +340,7 @@ struct LoanStateDeltas
/* Calculates the total change across all components.
* @return The sum of principal, interest, and management fee deltas.
*/
[[nodiscard]] Number
Number
total() const
{
return principal + interest + managementFee;

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

@@ -54,9 +54,8 @@ read_varint(void const* buf, std::size_t buflen, std::size_t& t)
return 1;
}
auto const used = n;
while (n > 0)
while (n--)
{
--n;
auto const d = p[n];
auto const t0 = t;
t *= 127;

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_;

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