Logo Search packages:      
Sourcecode: icu version File versions  Download package

virtual void Transliterator::handleTransliterate ( Replaceable text,
UTransPosition pos,
UBool  incremental 
) const [protected, pure virtual]

Abstract method that concrete subclasses define to implement their transliteration algorithm. This method handles both incremental and non-incremental transliteration. Let originalStart refer to the value of pos.start upon entry.

  • If incremental is false, then this method should transliterate all characters between pos.start and pos.limit. Upon return pos.start must == pos.limit.

  • If incremental is true, then this method should transliterate all characters between pos.start and pos.limit that can be unambiguously transliterated, regardless of future insertions of text at pos.limit. Upon return, pos.start should be in the range [originalStart, pos.limit). pos.start should be positioned such that characters [originalStart, pos.start) will not be changed in the future by this transliterator and characters [pos.start, pos.limit) are unchanged.

Implementations of this method should also obey the following invariants:

  • pos.limit and pos.contextLimit should be updated to reflect changes in length of the text between pos.start and pos.limit. The difference pos.contextLimit - pos.limit should not change.

  • pos.contextStart should not change.

  • Upon return, neither pos.start nor pos.limit should be less than originalStart.

  • Text before originalStart and text after pos.limit should not change.

  • Text before pos.contextStart and text after pos.contextLimit should be ignored.

Subclasses may safely assume that all characters in [pos.start, pos.limit) are filtered. In other words, the filter has already been applied by the time this method is called. See filteredTransliterate().

This method is not for public consumption. Calling this method directly will transliterate [pos.start, pos.limit) without applying the filter. End user code should call transliterate() instead of this method. Subclass code and wrapping transliterators should call filteredTransliterate() instead of this method.

text the buffer holding transliterated and untransliterated text
pos the indices indicating the start, limit, context start, and context limit of the text.
incremental if true, assume more text may be inserted at pos.limit and act accordingly. Otherwise, transliterate all text between pos.start and pos.limit and move pos.start up to pos.limit.
See also:
transliterate ICU 2.4

Implemented in AnyTransliterator, BreakTransliterator, CaseMapTransliterator, CompoundTransliterator, EscapeTransliterator, NameUnicodeTransliterator, NormalizationTransliterator, NullTransliterator, RuleBasedTransliterator, RemoveTransliterator, TitlecaseTransliterator, UnescapeTransliterator, and UnicodeNameTransliterator.

Referenced by filteredTransliterate().

Generated by  Doxygen 1.6.0   Back to index