]>
Commit | Line | Data |
---|---|---|
f3c0d7a5 A |
1 | // © 2016 and later: Unicode, Inc. and others. |
2 | // License & terms of use: http://www.unicode.org/copyright.html | |
b75a7d8f A |
3 | /* |
4 | ********************************************************************** | |
4388f060 | 5 | * Copyright (c) 2002-2011, International Business Machines Corporation |
b75a7d8f A |
6 | * and others. All Rights Reserved. |
7 | ********************************************************************** | |
8 | * Date Name Description | |
9 | * 02/04/2002 aliu Creation. | |
10 | ********************************************************************** | |
11 | */ | |
12 | ||
73c04bcf A |
13 | #ifndef FUNCREPL_H |
14 | #define FUNCREPL_H | |
15 | ||
b75a7d8f A |
16 | #include "unicode/utypes.h" |
17 | ||
18 | #if !UCONFIG_NO_TRANSLITERATION | |
19 | ||
20 | #include "unicode/unifunct.h" | |
21 | #include "unicode/unirepl.h" | |
22 | ||
23 | U_NAMESPACE_BEGIN | |
24 | ||
25 | class Transliterator; | |
26 | ||
27 | /** | |
28 | * A replacer that calls a transliterator to generate its output text. | |
29 | * The input text to the transliterator is the output of another | |
30 | * UnicodeReplacer object. That is, this replacer wraps another | |
31 | * replacer with a transliterator. | |
32 | * | |
b75a7d8f A |
33 | * @author Alan Liu |
34 | */ | |
46f4442e | 35 | class FunctionReplacer : public UnicodeFunctor, public UnicodeReplacer { |
b75a7d8f A |
36 | |
37 | private: | |
38 | ||
39 | /** | |
40 | * The transliterator. Must not be null. OWNED. | |
41 | */ | |
42 | Transliterator* translit; | |
43 | ||
44 | /** | |
45 | * The replacer object. This generates text that is then | |
46 | * processed by 'translit'. Must not be null. OWNED. | |
47 | */ | |
48 | UnicodeFunctor* replacer; | |
49 | ||
b75a7d8f A |
50 | public: |
51 | ||
52 | /** | |
53 | * Construct a replacer that takes the output of the given | |
54 | * replacer, passes it through the given transliterator, and emits | |
55 | * the result as output. | |
56 | */ | |
57 | FunctionReplacer(Transliterator* adoptedTranslit, | |
58 | UnicodeFunctor* adoptedReplacer); | |
59 | ||
60 | /** | |
61 | * Copy constructor. | |
62 | */ | |
63 | FunctionReplacer(const FunctionReplacer& other); | |
64 | ||
65 | /** | |
66 | * Destructor | |
67 | */ | |
68 | virtual ~FunctionReplacer(); | |
69 | ||
70 | /** | |
71 | * Implement UnicodeFunctor | |
72 | */ | |
73 | virtual UnicodeFunctor* clone() const; | |
74 | ||
75 | /** | |
76 | * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer | |
77 | * and return the pointer. | |
78 | */ | |
79 | virtual UnicodeReplacer* toReplacer() const; | |
80 | ||
81 | /** | |
82 | * UnicodeReplacer API | |
83 | */ | |
84 | virtual int32_t replace(Replaceable& text, | |
85 | int32_t start, | |
86 | int32_t limit, | |
87 | int32_t& cursor); | |
88 | ||
89 | /** | |
90 | * UnicodeReplacer API | |
91 | */ | |
92 | virtual UnicodeString& toReplacerPattern(UnicodeString& rule, | |
93 | UBool escapeUnprintable) const; | |
94 | ||
95 | /** | |
96 | * Implement UnicodeReplacer | |
97 | */ | |
98 | virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const; | |
99 | ||
100 | /** | |
101 | * UnicodeFunctor API | |
102 | */ | |
103 | virtual void setData(const TransliterationRuleData*); | |
104 | ||
105 | /** | |
106 | * ICU "poor man's RTTI", returns a UClassID for the actual class. | |
b75a7d8f | 107 | */ |
374ca955 | 108 | virtual UClassID getDynamicClassID() const; |
b75a7d8f A |
109 | |
110 | /** | |
111 | * ICU "poor man's RTTI", returns a UClassID for this class. | |
b75a7d8f | 112 | */ |
374ca955 | 113 | static UClassID U_EXPORT2 getStaticClassID(); |
b75a7d8f A |
114 | }; |
115 | ||
116 | U_NAMESPACE_END | |
117 | ||
118 | #endif /* #if !UCONFIG_NO_TRANSLITERATION */ | |
73c04bcf | 119 | #endif |
b75a7d8f A |
120 | |
121 | //eof |