From b21038d91de7f67bbfec549f618b0238c3ca7735 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 19 Aug 2021 11:24:17 -0600 Subject: [PATCH] [bit-set-invertible] Rewrite next/previous_range() in terms of s.next/previous() --- src/hb-bit-set-invertible.hh | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/hb-bit-set-invertible.hh b/src/hb-bit-set-invertible.hh index 0b3712adc..7c7bc372b 100644 --- a/src/hb-bit-set-invertible.hh +++ b/src/hb-bit-set-invertible.hh @@ -230,20 +230,15 @@ struct hb_bit_set_invertible_t if (likely (!inverted)) return s.next_range (first, last); - hb_codepoint_t i; - - i = *last; - if (!next (&i)) + if (!next (last)) { *last = *first = INVALID; return false; } - /* TODO Speed up. */ - *last = *first = i; - while (next (&i) && i == *last + 1) - (*last)++; - + *first = *last; + s.next (last); + --*last; return true; } bool previous_range (hb_codepoint_t *first, hb_codepoint_t *last) const @@ -251,20 +246,15 @@ struct hb_bit_set_invertible_t if (likely (!inverted)) return s.previous_range (first, last); - hb_codepoint_t i; - - i = *first; - if (!previous (&i)) + if (!previous (first)) { *last = *first = INVALID; return false; } - /* TODO Speed up. */ - *last = *first = i; - while (previous (&i) && i == *first - 1) - (*first)--; - + *last = *first; + s.previous (first); + ++*first; return true; }