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