OpenTTD
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:
DefaultStringIterator

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 StringIteratorCreate ()
 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

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
pNew 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
sNew 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: