aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorZufu Liu <unknown>2024-03-08 09:59:53 +1100
committerZufu Liu <unknown>2024-03-08 09:59:53 +1100
commit990e88a854ce05b86f4ce0b6f9b6975b6df4a282 (patch)
tree09dc3c22956eb3190f5156f738e48ee37da7603b
parent61b369cbfef41fece0d01b7ff600afaa891d76ec (diff)
downloadscintilla-mirror-990e88a854ce05b86f4ce0b6f9b6975b6df4a282.tar.gz
Feature [feature-requests:#1512]. Simplify ElementForValue.
-rw-r--r--src/UndoHistory.cxx11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/UndoHistory.cxx b/src/UndoHistory.cxx
index 48695e664..66b6e62be 100644
--- a/src/UndoHistory.cxx
+++ b/src/UndoHistory.cxx
@@ -44,7 +44,6 @@ void VectorTruncate(std::vector<T> &v, size_t length) noexcept {
constexpr size_t byteMask = UINT8_MAX;
constexpr size_t byteBits = 8;
-constexpr size_t maxElementSize = 8;
size_t ReadValue(const uint8_t *bytes, size_t length) noexcept {
size_t value = 0;
@@ -75,13 +74,13 @@ intptr_t ScaledVector::SignedValueAt(size_t index) const noexcept {
constexpr SizeMax ElementForValue(size_t value) noexcept {
size_t maxN = byteMask;
- for (size_t i = 1; i < maxElementSize; i++) {
- if (value <= maxN) {
- return { i, maxN };
- }
+ size_t i = 1;
+ while (value > byteMask) {
+ i++;
+ value >>= byteBits;
maxN = (maxN << byteBits) + byteMask;
}
- return { 1, byteMask };
+ return { i, maxN };
}
void ScaledVector::SetValueAt(size_t index, size_t value) {