class Replaceable

Defined at line 77 of file ../../third_party/icu/default/source/common/unicode/rep.h

Replaceable

is an abstract base class representing a

string of characters that supports the replacement of a range of

itself with a new string of characters. It is used by APIs that

change a piece of text while retaining metadata. Metadata is data

other than the Unicode characters returned by char32At(). One

example of metadata is style attributes; another is an edit

history, marking each character with an author and revision number.

An implicit aspect of the

Replaceable

API is that

during a replace operation, new characters take on the metadata of

the old characters. For example, if the string "the

bold

font" has range (4, 8) replaced with "strong", then it becomes "the

strong

font".

Replaceable

specifies ranges using a start

offset and a limit offset. The range of characters thus specified

includes the characters at offset start..limit-1. That is, the

start offset is inclusive, and the limit offset is exclusive.

Replaceable

also includes API to access characters

in the string:

length()

,

charAt()

,

char32At()

, and

extractBetween()

.

For a subclass to support metadata, typical behavior of

replace()

is the following:

Set the metadata of the new text to the metadata of the first

character replaced

If no characters are replaced, use the metadata of the

previous character

If there is no previous character (i.e. start == 0), use the

following character

If there is no following character (i.e. the replaceable was

empty), use default metadata.

If the code point U+FFFF is seen, it should be interpreted as

a special marker having no metadata

If this is not the behavior, the subclass should document any differences.

Public Methods

void ~Replaceable ()

Destructor.

ICU 2.0

int32_t length ()

Returns the number of 16-bit code units in the text.

Returns

number of 16-bit code units in text

ICU 1.8

Defined at line 245 of file ../../third_party/icu/default/source/common/unicode/rep.h

char16_t charAt (int32_t offset)

Returns the 16-bit code unit at the given offset into the text.

Parameters

offset an integer between 0 and length()-1 inclusive

Returns

16-bit code unit of text at given offset

ICU 1.8

Defined at line 250 of file ../../third_party/icu/default/source/common/unicode/rep.h

UChar32 char32At (int32_t offset)

Returns the 32-bit code point at the given 16-bit offset into

the text. This assumes the text is stored as 16-bit code units

with surrogate pairs intermixed. If the offset of a leading or

trailing code unit of a surrogate pair is given, return the

code point of the surrogate pair.

Parameters

offset an integer between 0 and length()-1 inclusive

Returns

32-bit code point of text at given offset

ICU 1.8

Defined at line 255 of file ../../third_party/icu/default/source/common/unicode/rep.h

void extractBetween (int32_t start, int32_t limit, UnicodeString & target)

Copies characters in the range [

start

,

limit

)

into the UnicodeString

target

.

Parameters

start offset of first character which will be copied
limit offset immediately following the last character to be copied
target UnicodeString into which to copy characters.

Returns

A reference to

<TT

>target

</TT

>

ICU 2.1

void handleReplaceBetween (int32_t start, int32_t limit, const UnicodeString & text)

Replaces a substring of this object with the given text. If the

characters being replaced have metadata, the new characters

that replace them should be given the same metadata.

Subclasses must ensure that if the text between start and

limit is equal to the replacement text, that replace has no

effect. That is, any metadata

should be unaffected. In addition, subclasses are encouraged to

check for initial and trailing identical characters, and make a

smaller replacement if possible. This will preserve as much

metadata as possible.

Parameters

start the beginning index, inclusive; 0 <= start<= limit.
limit the ending index, exclusive; start <= limit<= length().
text the text to replace characters start to limit - 1 ICU 2.0
void copy (int32_t start, int32_t limit, int32_t dest)

Copies a substring of this object, retaining metadata.

This method is used to duplicate or reorder substrings.

The destination index must not overlap the source range.

Parameters

start the beginning index, inclusive; 0 <= start <= limit.
limit the ending index, exclusive; start <= limit <= length().
dest the destination index. The characters fromstart..limit-1 will be copied to dest. Implementations of this method may assume that dest <= start || dest >= limit. ICU 2.0
UBool hasMetaData ()

Returns true if this object contains metadata. If a

Replaceable object has metadata, calls to the Replaceable API

must be made so as to preserve metadata. If it does not, calls

to the Replaceable API may be optimized to improve performance.

The default implementation returns true.

Returns

true if this object contains metadata

ICU 2.2

Replaceable * clone ()

Clone this object, an instance of a subclass of Replaceable.

Clones can be used concurrently in multiple threads.

If a subclass does not implement clone(), or if an error occurs,

then nullptr is returned.

The caller must delete the clone.

Returns

a clone of this object

Protected Methods

void Replaceable ()

Default constructor.

ICU 2.4

Defined at line 243 of file ../../third_party/icu/default/source/common/unicode/rep.h

int32_t getLength ()

Virtual version of length().

ICU 2.4

char16_t getCharAt (int32_t offset)

Virtual version of charAt().

ICU 2.4

UChar32 getChar32At (int32_t offset)

Virtual version of char32At().

ICU 2.4