OpenTTD

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

- Data Structures
- Class Hierarchy
- Data Fields

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

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.
virtual size_t | SetCurPosition (size_t pos)=0
| Change the current string cursor.
virtual size_t | Next (IterType what=ITER_CHARACTER)=0
| Advance the cursor by one iteration unit.
virtual size_t | Prev (IterType what=ITER_CHARACTER)=0
| Move the cursor back by one iteration unit.

## Static Public Member Functions
static StringIterator * | Create ()
| Create a new iterator instance.

## 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 16 of file string_base.h.

## Member Enumeration Documentation

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 19 of file string_base.h.

## Member Function Documentation

StringIterator * StringIterator::Create | ( |  | ) |
| static

Create a new iterator instance.

Returns
  New iterator instance.

Definition at line 849 of file string.cpp.

Referenced by Textbuf::Textbuf().

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 DefaultStringIterator.

Referenced by Textbuf::DeleteChar(), and Textbuf::MovePos().

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 DefaultStringIterator.

Referenced by Textbuf::DeleteChar(), and Textbuf::MovePos().

virtual size_t StringIterator::SetCurPosition | ( | size_t | pos | ) |
| pure 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.

Implemented in DefaultStringIterator.

Referenced by Textbuf::MovePos(), and Textbuf::UpdateStringIter().

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 DefaultStringIterator.

Referenced by Textbuf::UpdateStringIter().

## Field Documentation

const size_t StringIterator::END = SIZE_MAX
| static

Sentinel to indicate end-of-iteration.

Definition at line 25 of file string_base.h.

Referenced by Textbuf::MovePos(), DefaultStringIterator::Next(), DefaultStringIterator::Prev(), and Textbuf::UpdateStringIter().

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

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