Data structure storing a fee and size.
More...
#include <feefrac.h>
|
| static std::pair< int64_t, uint32_t > | MulFallback (int64_t a, int32_t b) noexcept |
| | Helper function for 32*64 signed multiplication, returning an unspecified but totally ordered type. More...
|
| |
| static int64_t | DivFallback (std::pair< int64_t, uint32_t > n, int32_t d, bool round_down) noexcept |
| | Helper function for 96/32 signed division, rounding towards negative infinity (if round_down) or positive infinity (if !round_down). More...
|
| |
Data structure storing a fee and size.
The size of a FeeFrac cannot be zero unless the fee is also zero.
Definition at line 21 of file feefrac.h.
◆ FeeFrac() [1/3]
| constexpr FeeFrac::FeeFrac |
( |
| ) |
|
|
inlineconstexprnoexcept |
◆ FeeFrac() [2/3]
| constexpr FeeFrac::FeeFrac |
( |
int64_t |
f, |
|
|
int32_t |
s |
|
) |
| |
|
inlineconstexprnoexcept |
◆ FeeFrac() [3/3]
| constexpr FeeFrac::FeeFrac |
( |
const FeeFrac & |
| ) |
|
|
inlineconstexprdefaultnoexcept |
◆ DivFallback()
| static int64_t FeeFrac::DivFallback |
( |
std::pair< int64_t, uint32_t > |
n, |
|
|
int32_t |
d, |
|
|
bool |
round_down |
|
) |
| |
|
inlinestaticnoexcept |
Helper function for 96/32 signed division, rounding towards negative infinity (if round_down) or positive infinity (if !round_down).
This is a fallback version, separate so that it can be tested on platforms where it isn't actually needed.
The exact behavior with negative n does not really matter, but this implementation chooses to be consistent for testability reasons.
The result must fit in an int64_t, and d must be strictly positive.
Definition at line 41 of file feefrac.h.
◆ EvaluateFee()
template<bool RoundDown>
| int64_t FeeFrac::EvaluateFee |
( |
int32_t |
at_size | ) |
const |
|
inlinenoexcept |
Compute the fee for a given size at_size using this object's feerate.
This effectively corresponds to evaluating (this->fee * at_size) / this->size, with the result rounded towards negative infinity (if RoundDown) or towards positive infinity (if !RoundDown).
Requires this->size > 0, at_size >= 0, and that the correct result fits in a int64_t. This is guaranteed to be the case when 0 <= at_size <= this->size.
Definition at line 155 of file feefrac.h.
◆ EvaluateFeeDown()
| int64_t FeeFrac::EvaluateFeeDown |
( |
int32_t |
at_size | ) |
const |
|
inlinenoexcept |
Compute the fee for a given size at_size using this object's feerate, rounding down.
Definition at line 174 of file feefrac.h.
◆ EvaluateFeeUp()
| int64_t FeeFrac::EvaluateFeeUp |
( |
int32_t |
at_size | ) |
const |
|
inlinenoexcept |
Compute the fee for a given size at_size using this object's feerate, rounding up.
Definition at line 176 of file feefrac.h.
◆ IsEmpty()
| bool FeeFrac::IsEmpty |
( |
| ) |
const |
|
inlinenoexcept |
Check if this is empty (size and fee are 0).
Definition at line 102 of file feefrac.h.
◆ MulFallback()
| static std::pair< int64_t, uint32_t > FeeFrac::MulFallback |
( |
int64_t |
a, |
|
|
int32_t |
b |
|
) |
| |
|
inlinestaticnoexcept |
Helper function for 32*64 signed multiplication, returning an unspecified but totally ordered type.
This is a fallback version, separate so it can be tested on platforms where it isn't actually needed.
Definition at line 26 of file feefrac.h.
◆ operator+=()
| void FeeFrac::operator+= |
( |
const FeeFrac & |
other | ) |
|
|
inlinenoexcept |
◆ operator-=()
| void FeeFrac::operator-= |
( |
const FeeFrac & |
other | ) |
|
|
inlinenoexcept |
Subtract fee and size of another FeeFrac from this one.
Definition at line 114 of file feefrac.h.
◆ operator=()
|
|
inlineconstexprdefaultnoexcept |
◆ operator+
◆ operator-
Subtract both fee and size.
Definition at line 127 of file feefrac.h.
◆ operator==
Check if two FeeFrac objects are equal (both same fee and same size).
Definition at line 133 of file feefrac.h.
◆ swap
Swap two FeeFracs.
Definition at line 139 of file feefrac.h.
◆ Div
◆ fee
◆ Mul
◆ size
The documentation for this struct was generated from the following file: