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 807 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 IcuStringIterator.

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

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

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

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(), IcuStringIterator::Next(), IcuStringIterator::Prev(), and Textbuf::UpdateStringIter().

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

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