mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-31 11:00:23 +00:00
refactor: extract IOUAmount exponent bounds check into a helper
The exponent bounds check appeared verbatim in both normalize() and IOUAmount(Number const&). Extract it into a private enforceExponentBounds() and call it from both. Named "enforce" rather than "check" because the function acts on the value as well as inspecting it: it throws above the range and truncates to zero below it. That matches the codebase precedent of requireAuth (a pure predicate) versus enforceMPTokenAuthorization (which mutates). Defined out of line because a header inline would need STAmount's offset constants, and STAmount.h already includes IOUAmount.h. No behavior change: the extracted body is identical to both original blocks, and the Number constructor still applies it after delegating construction completes.
This commit is contained in:
@@ -40,6 +40,20 @@ private:
|
||||
void
|
||||
normalize();
|
||||
|
||||
/**
|
||||
* Constrains the exponent to IOUAmount's range, which is narrower than
|
||||
* the one Number normalization enforces.
|
||||
*
|
||||
* The two ends are deliberately asymmetric, matching the class contract:
|
||||
* an exponent above the range is unrepresentable and throws, while one
|
||||
* below it is a silent underflow that truncates the amount to zero.
|
||||
*
|
||||
* @throws std::overflow_error if the exponent exceeds the largest
|
||||
* representable IOU exponent.
|
||||
*/
|
||||
void
|
||||
enforceExponentBounds();
|
||||
|
||||
static IOUAmount
|
||||
fromNumber(Number const& number);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user