OpenTTD Source: StringIterator Class Reference

OpenTTD Source 14.0-RC3

Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes
StringIterator Class Referenceabstract

Class for iterating over different kind of parts of a string. More...

`#include <string_base.h>`

Inheritance diagram for StringIterator:

## Public Types
enum | IterType { ITER_CHARACTER, ITER_WORD }
| Type of the iterator. More...

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

## Static Public Member Functions
static std::unique_ptr< StringIterator > | Create ()
| Create a new iterator instance. More...

## Static Public Attributes
static const size_t | END = SIZE_MAX
| Sentinel to indicate end-of-iteration.

## Detailed Description

Class for iterating over different kind of parts of a string.

Definition at line 14 of file string_base.h.

## Member Enumeration Documentation

## ◆ IterType

enum StringIterator::IterType

Type of the iterator.

Enumerator
ITER_CHARACTER | Iterate over characters (or more exactly grapheme clusters).
ITER_WORD | Iterate over words.

Definition at line 17 of file string_base.h.

## Member Function Documentation

## ◆ Create()

std::unique_ptr< StringIterator > StringIterator::Create | ( |  | ) |
| static

Create a new iterator instance.

Returns
  New iterator instance.

Definition at line 913 of file string.cpp.

## ◆ Next()

virtual size_t StringIterator::Next | ( | IterType | what = `ITER_CHARACTER` | ) |
| pure 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.

Implemented in IcuStringIterator, UniscribeStringIterator, and OSXStringIterator.

## ◆ Prev()

virtual size_t StringIterator::Prev | ( | IterType | what = `ITER_CHARACTER` | ) |
| pure 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.

Implemented in IcuStringIterator, UniscribeStringIterator, and OSXStringIterator.

## ◆ SetCurPosition()

virtual size_t StringIterator::SetCurPosition | ( | size_t | pos | ) |
| pure virtual

Change the current string cursor.

Parameters

  pos | New cursor position.

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

Precondition
  pos has to be inside the current string.

Implemented in IcuStringIterator, UniscribeStringIterator, and OSXStringIterator.

## ◆ SetString()

virtual void StringIterator::SetString | ( | const char * | s | ) |
| pure 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.

Implemented in IcuStringIterator, UniscribeStringIterator, and OSXStringIterator.

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

- src/string_base.h
- src/string.cpp