OpenTTD Source 20260206-master-g4d4e37dbf1
UniscribeStringIterator Class Reference

String iterator using Uniscribe as a backend. More...

#include <string_uniscribe.h>

Inheritance diagram for UniscribeStringIterator:
StringIterator

Data Structures

struct  CharInfo

Public Member Functions

void SetString (std::string_view s) override
 Set a new iteration string.
size_t SetCurPosition (size_t pos) override
 Change the current string cursor.
size_t Next (IterType what) override
 Advance the cursor by one iteration unit.
size_t Prev (IterType what) override
 Move the cursor back by one iteration unit.

Private Attributes

std::vector< CharInfostr_info
 Break information for each code point.
std::vector< size_t > utf16_to_utf8
 Mapping from UTF-16 code point position to index in the UTF-8 source string.
size_t cur_pos
 Current iteration position.

Additional Inherited Members

Public Types inherited from StringIterator
enum  IterType : uint8_t { ITER_CHARACTER , ITER_WORD }
 Type of the iterator. More...
Static Public Member Functions inherited from StringIterator
static std::unique_ptr< StringIteratorCreate ()
 Create a new iterator instance.
Static Public Attributes inherited from StringIterator
static const size_t END = SIZE_MAX
 Sentinel to indicate end-of-iteration.

Detailed Description

String iterator using Uniscribe as a backend.

Definition at line 67 of file string_uniscribe.h.

Member Function Documentation

◆ Next()

size_t UniscribeStringIterator::Next ( IterType what)
overridevirtual

Advance the cursor by one iteration unit.

Returns
New cursor position (in bytes) or END if the cursor is already at the end of the string.

Implements StringIterator.

Definition at line 587 of file string_uniscribe.cpp.

References StringIterator::END, StringIterator::ITER_CHARACTER, StringIterator::ITER_WORD, and utf16_to_utf8.

◆ Prev()

size_t UniscribeStringIterator::Prev ( IterType what)
overridevirtual

Move the cursor back by one iteration unit.

Returns
New cursor position (in bytes) or END if the cursor is already at the start of the string.

Implements StringIterator.

Definition at line 601 of file string_uniscribe.cpp.

References StringIterator::END, StringIterator::ITER_CHARACTER, StringIterator::ITER_WORD, str_info, and utf16_to_utf8.

◆ SetCurPosition()

size_t UniscribeStringIterator::SetCurPosition ( size_t pos)
overridevirtual

Change the current string cursor.

Parameters
posNew cursor position.
Returns
Actual new cursor position at the next valid character boundary.
Precondition
pos has to be inside the current string.

Implements StringIterator.

Definition at line 569 of file string_uniscribe.cpp.

References str_info, and utf16_to_utf8.

◆ SetString()

void UniscribeStringIterator::SetString ( std::string_view s)
overridevirtual

Set a new iteration string.

Must also be called if the string contents changed. The cursor is reset to the start of the string.

Parameters
sNew string.

< UTF-16 copy of the string.

Implements StringIterator.

Definition at line 517 of file string_uniscribe.cpp.

References str_info, UniscribeItemizeString(), and utf16_to_utf8.

Field Documentation

◆ cur_pos

size_t UniscribeStringIterator::cur_pos
private

Current iteration position.

Definition at line 77 of file string_uniscribe.h.

◆ str_info

std::vector<CharInfo> UniscribeStringIterator::str_info
private

Break information for each code point.

Definition at line 74 of file string_uniscribe.h.

Referenced by Prev(), SetCurPosition(), and SetString().

◆ utf16_to_utf8

std::vector<size_t> UniscribeStringIterator::utf16_to_utf8
private

Mapping from UTF-16 code point position to index in the UTF-8 source string.

Definition at line 75 of file string_uniscribe.h.

Referenced by Next(), Prev(), SetCurPosition(), and SetString().


The documentation for this class was generated from the following files: