| // © 2016 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| /* |
| ********************************************************************** |
| * Copyright (c) 2002-2011, International Business Machines Corporation |
| * and others. All Rights Reserved. |
| ********************************************************************** |
| * Date Name Description |
| * 02/04/2002 aliu Creation. |
| ********************************************************************** |
| */ |
| |
| #ifndef FUNCREPL_H |
| #define FUNCREPL_H |
| |
| #include "unicode/utypes.h" |
| |
| #if !UCONFIG_NO_TRANSLITERATION |
| |
| #include "unicode/unifunct.h" |
| #include "unicode/unirepl.h" |
| |
| U_NAMESPACE_BEGIN |
| |
| class Transliterator; |
| |
| /** |
| * A replacer that calls a transliterator to generate its output text. |
| * The input text to the transliterator is the output of another |
| * UnicodeReplacer object. That is, this replacer wraps another |
| * replacer with a transliterator. |
| * |
| * @author Alan Liu |
| */ |
| class FunctionReplacer : public UnicodeFunctor, public UnicodeReplacer { |
| |
| private: |
| |
| /** |
| * The transliterator. Must not be null. OWNED. |
| */ |
| Transliterator* translit; |
| |
| /** |
| * The replacer object. This generates text that is then |
| * processed by 'translit'. Must not be null. OWNED. |
| */ |
| UnicodeFunctor* replacer; |
| |
| public: |
| |
| /** |
| * Construct a replacer that takes the output of the given |
| * replacer, passes it through the given transliterator, and emits |
| * the result as output. |
| */ |
| FunctionReplacer(Transliterator* adoptedTranslit, |
| UnicodeFunctor* adoptedReplacer); |
| |
| /** |
| * Copy constructor. |
| */ |
| FunctionReplacer(const FunctionReplacer& other); |
| |
| /** |
| * Destructor |
| */ |
| virtual ~FunctionReplacer(); |
| |
| /** |
| * Implement UnicodeFunctor |
| */ |
| virtual FunctionReplacer* clone() const; |
| |
| /** |
| * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer |
| * and return the pointer. |
| */ |
| virtual UnicodeReplacer* toReplacer() const; |
| |
| /** |
| * UnicodeReplacer API |
| */ |
| virtual int32_t replace(Replaceable& text, |
| int32_t start, |
| int32_t limit, |
| int32_t& cursor); |
| |
| /** |
| * UnicodeReplacer API |
| */ |
| virtual UnicodeString& toReplacerPattern(UnicodeString& rule, |
| UBool escapeUnprintable) const; |
| |
| /** |
| * Implement UnicodeReplacer |
| */ |
| virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const; |
| |
| /** |
| * UnicodeFunctor API |
| */ |
| virtual void setData(const TransliterationRuleData*); |
| |
| /** |
| * ICU "poor man's RTTI", returns a UClassID for the actual class. |
| */ |
| virtual UClassID getDynamicClassID() const; |
| |
| /** |
| * ICU "poor man's RTTI", returns a UClassID for this class. |
| */ |
| static UClassID U_EXPORT2 getStaticClassID(); |
| }; |
| |
| U_NAMESPACE_END |
| |
| #endif /* #if !UCONFIG_NO_TRANSLITERATION */ |
| #endif |
| |
| //eof |