Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/unicode/unifilt.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 // © 2016 and later: Unicode, Inc. and others. | |
2 // License & terms of use: http://www.unicode.org/copyright.html | |
3 /* | |
4 ********************************************************************** | |
5 * Copyright (C) 1999-2010, International Business Machines Corporation and others. | |
6 * All Rights Reserved. | |
7 ********************************************************************** | |
8 * Date Name Description | |
9 * 11/17/99 aliu Creation. | |
10 ********************************************************************** | |
11 */ | |
12 #ifndef UNIFILT_H | |
13 #define UNIFILT_H | |
14 | |
15 #include "unicode/utypes.h" | |
16 | |
17 #if U_SHOW_CPLUSPLUS_API | |
18 | |
19 #include "unicode/unifunct.h" | |
20 #include "unicode/unimatch.h" | |
21 | |
22 /** | |
23 * \file | |
24 * \brief C++ API: Unicode Filter | |
25 */ | |
26 | |
27 U_NAMESPACE_BEGIN | |
28 | |
29 /** | |
30 * U_ETHER is used to represent character values for positions outside | |
31 * a range. For example, transliterator uses this to represent | |
32 * characters outside the range contextStart..contextLimit-1. This | |
33 * allows explicit matching by rules and UnicodeSets of text outside a | |
34 * defined range. | |
35 * @stable ICU 3.0 | |
36 */ | |
37 #define U_ETHER ((char16_t)0xFFFF) | |
38 | |
39 /** | |
40 * | |
41 * <code>UnicodeFilter</code> defines a protocol for selecting a | |
42 * subset of the full range (U+0000 to U+10FFFF) of Unicode characters. | |
43 * Currently, filters are used in conjunction with classes like {@link | |
44 * Transliterator} to only process selected characters through a | |
45 * transformation. | |
46 * | |
47 * <p>Note: UnicodeFilter currently stubs out two pure virtual methods | |
48 * of its base class, UnicodeMatcher. These methods are toPattern() | |
49 * and matchesIndexValue(). This is done so that filter classes that | |
50 * are not actually used as matchers -- specifically, those in the | |
51 * UnicodeFilterLogic component, and those in tests -- can continue to | |
52 * work without defining these methods. As long as a filter is not | |
53 * used in an RBT during real transliteration, these methods will not | |
54 * be called. However, this breaks the UnicodeMatcher base class | |
55 * protocol, and it is not a correct solution. | |
56 * | |
57 * <p>In the future we may revisit the UnicodeMatcher / UnicodeFilter | |
58 * hierarchy and either redesign it, or simply remove the stubs in | |
59 * UnicodeFilter and force subclasses to implement the full | |
60 * UnicodeMatcher protocol. | |
61 * | |
62 * @see UnicodeFilterLogic | |
63 * @stable ICU 2.0 | |
64 */ | |
65 class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher { | |
66 | |
67 public: | |
68 /** | |
69 * Destructor | |
70 * @stable ICU 2.0 | |
71 */ | |
72 virtual ~UnicodeFilter(); | |
73 | |
74 /** | |
75 * Clones this object polymorphically. | |
76 * The caller owns the result and should delete it when done. | |
77 * @return clone, or nullptr if an error occurred | |
78 * @stable ICU 2.4 | |
79 */ | |
80 virtual UnicodeFilter* clone() const = 0; | |
81 | |
82 /** | |
83 * Returns <tt>true</tt> for characters that are in the selected | |
84 * subset. In other words, if a character is <b>to be | |
85 * filtered</b>, then <tt>contains()</tt> returns | |
86 * <b><tt>false</tt></b>. | |
87 * @stable ICU 2.0 | |
88 */ | |
89 virtual UBool contains(UChar32 c) const = 0; | |
90 | |
91 /** | |
92 * UnicodeFunctor API. Cast 'this' to a UnicodeMatcher* pointer | |
93 * and return the pointer. | |
94 * @stable ICU 2.4 | |
95 */ | |
96 virtual UnicodeMatcher* toMatcher() const; | |
97 | |
98 /** | |
99 * Implement UnicodeMatcher API. | |
100 * @stable ICU 2.4 | |
101 */ | |
102 virtual UMatchDegree matches(const Replaceable& text, | |
103 int32_t& offset, | |
104 int32_t limit, | |
105 UBool incremental); | |
106 | |
107 /** | |
108 * UnicodeFunctor API. Nothing to do. | |
109 * @stable ICU 2.4 | |
110 */ | |
111 virtual void setData(const TransliterationRuleData*); | |
112 | |
113 /** | |
114 * ICU "poor man's RTTI", returns a UClassID for this class. | |
115 * | |
116 * @stable ICU 2.2 | |
117 */ | |
118 static UClassID U_EXPORT2 getStaticClassID(); | |
119 | |
120 protected: | |
121 | |
122 /* | |
123 * Since this class has pure virtual functions, | |
124 * a constructor can't be used. | |
125 * @stable ICU 2.0 | |
126 */ | |
127 /* UnicodeFilter();*/ | |
128 }; | |
129 | |
130 /*inline UnicodeFilter::UnicodeFilter() {}*/ | |
131 | |
132 U_NAMESPACE_END | |
133 | |
134 #endif /* U_SHOW_CPLUSPLUS_API */ | |
135 | |
136 #endif |