AK: Add Utf8View::iterator_at_byte_offset method

This implements a method to get a Utf8CodepointIterator at a specified
byte offset.
This commit is contained in:
Max Wipfli 2021-05-18 16:09:20 +02:00 committed by Andreas Kling
parent c1b452f754
commit a72bb34970
Notes: sideshowbarker 2024-07-18 17:36:27 +09:00
2 changed files with 12 additions and 0 deletions

View file

@ -46,6 +46,17 @@ Utf8CodepointIterator Utf8View::end() const
return { end_ptr(), 0 };
}
Utf8CodepointIterator Utf8View::iterator_at_byte_offset(size_t byte_offset) const
{
size_t current_offset = 0;
for (auto iterator = begin(); !iterator.done(); ++iterator) {
if (current_offset >= byte_offset)
return iterator;
current_offset += iterator.code_point_length_in_bytes();
}
return end();
}
size_t Utf8View::byte_offset_of(const Utf8CodepointIterator& it) const
{
VERIFY(it.m_ptr >= begin_ptr());

View file

@ -54,6 +54,7 @@ public:
Utf8CodepointIterator begin() const;
Utf8CodepointIterator end() const;
Utf8CodepointIterator iterator_at_byte_offset(size_t) const;
const unsigned char* bytes() const { return begin_ptr(); }
size_t byte_length() const { return m_string.length(); }