OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Public Member Functions | Private Attributes
IcuStringIterator Class Reference

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

Inheritance diagram for IcuStringIterator:

## Public Member Functions
virtual void | SetString (const char *s)
| Set a new iteration string.
virtual size_t | SetCurPosition (size_t pos)
| Change the current string cursor.
virtual size_t | Next (IterType what)
| Advance the cursor by one iteration unit.
virtual size_t | Prev (IterType what)
| Move the cursor back by one iteration unit.

## Private Attributes
icu::BreakIterator * | char_itr
| ICU iterator for characters.
icu::BreakIterator * | word_itr
| ICU iterator for words.
SmallVector< UChar, 32 > | utf16_str
| UTF-16 copy of the string.
SmallVector< size_t, 32 > | utf16_to_utf8
| Mapping from UTF-16 code point position to index in the UTF-8 source string.

## Additional Inherited Members
Public Types inherited from StringIterator
enum | IterType { ITER_CHARACTER, ITER_WORD }
| Type of the iterator. More...
Static Public Member Functions inherited from StringIterator
static StringIterator * | Create ()
| 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 ICU as a backend.

Definition at line 607 of file string.cpp.

## Member Function Documentation

virtual size_t IcuStringIterator::Next | ( | IterType | what | ) |
| inline virtual

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 687 of file string.cpp.

References char_itr, StringIterator::END, IsWhitespace(), StringIterator::ITER_CHARACTER, StringIterator::ITER_WORD, utf16_str, utf16_to_utf8, Utf16DecodeChar(), and word_itr.

virtual size_t IcuStringIterator::Prev | ( | IterType | what | ) |
| inline virtual

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 719 of file string.cpp.

References char_itr, StringIterator::END, IsWhitespace(), StringIterator::ITER_CHARACTER, StringIterator::ITER_WORD, utf16_str, utf16_to_utf8, Utf16DecodeChar(), and word_itr.

virtual size_t IcuStringIterator::SetCurPosition | ( | size_t | pos | ) |
| inline virtual

Change the current string cursor.

Parameters

  p | New cursor position.

Returns
  Actual new cursor position at the next valid character boundary.

Precondition
  p has to be inside the current string.

Implements StringIterator.

Definition at line 669 of file string.cpp.

References char_itr, SmallVector< T, S >::Length(), and utf16_to_utf8.

virtual void IcuStringIterator::SetString | ( | const char * | s | ) |
| inline virtual

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

  s | New string.

Implements StringIterator.

Definition at line 632 of file string.cpp.

References SmallVector< T, S >::Append(), SmallVector< T, S >::Begin(), char_itr, SmallVector< T, S >::Clear(), SmallVector< T, S >::Length(), utf16_str, utf16_to_utf8, and word_itr.

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

- src/string.cpp