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