mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-05 17:56:49 +00:00
* XRPLF/ximinez/number-division-accuracy: CI feedback: Add test cases covering other rounding modes Apply suggestions from code review Accept AI suggestion Update the testUpwardRoundsDown test to run under all scales Review feedback from Tapanito and AI Skip clang-tidy false positive: misc-include-cleaner ci: Run PR title and description checks on staging and release branches (7331) style: Run shfmt on workflows, actions and markdown bash code (7333) Remove TMax entirely from normalizeToRange; check type matching directly Tweak how the denominator is handled in division Minor fixes: missing include, variable init, typo Test optimization: Number_test::pow10 Significant rewrite Use the local range instead of calling a function Make Number::operator/= significantly more accurate
Basics
Utility functions and classes.
The module xrpl/basics should contain no dependencies on other modules.
Choosing an xrpld container.
-
std::vector- For ordered containers with most insertions or erases at the end.
-
std::deque- For ordered containers with most insertions or erases at the start or end.
-
std::list- For ordered containers with inserts and erases to the middle.
- For containers with iterators stable over insert and erase.
- Generally slower and bigger than
std::vectororstd::dequeexcept for those cases.
-
std::set- For sorted containers.
-
xrpl::hash_set- Where inserts and contains need to be O(1).
- For "small" sets,
std::setmight be faster and smaller.
-
xrpl::hardened_hash_set- For data sets where the key could be manipulated by an attacker in an attempt to mount an algorithmic complexity attack: see http://en.wikipedia.org/wiki/Algorithmic_complexity_attack
The following container is deprecated
std::unordered_set- Use
xrpl::hash_setinstead, which uses a better hashing algorithm. - Or use
xrpl::hardened_hash_setto prevent algorithmic complexity attacks.