1*0e209d39SAndroid Build Coastguard Worker // © 2017 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker
4*0e209d39SAndroid Build Coastguard Worker // ucasemap_imp.h
5*0e209d39SAndroid Build Coastguard Worker // created: 2017feb08 Markus W. Scherer
6*0e209d39SAndroid Build Coastguard Worker
7*0e209d39SAndroid Build Coastguard Worker #ifndef __UCASEMAP_IMP_H__
8*0e209d39SAndroid Build Coastguard Worker #define __UCASEMAP_IMP_H__
9*0e209d39SAndroid Build Coastguard Worker
10*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h"
11*0e209d39SAndroid Build Coastguard Worker #include "unicode/ucasemap.h"
12*0e209d39SAndroid Build Coastguard Worker #include "unicode/uchar.h"
13*0e209d39SAndroid Build Coastguard Worker #include "ucase.h"
14*0e209d39SAndroid Build Coastguard Worker
15*0e209d39SAndroid Build Coastguard Worker /**
16*0e209d39SAndroid Build Coastguard Worker * Bit mask for the titlecasing iterator options bit field.
17*0e209d39SAndroid Build Coastguard Worker * Currently only 3 out of 8 values are used:
18*0e209d39SAndroid Build Coastguard Worker * 0 (words), U_TITLECASE_WHOLE_STRING, U_TITLECASE_SENTENCES.
19*0e209d39SAndroid Build Coastguard Worker * See stringoptions.h.
20*0e209d39SAndroid Build Coastguard Worker * @internal
21*0e209d39SAndroid Build Coastguard Worker */
22*0e209d39SAndroid Build Coastguard Worker #define U_TITLECASE_ITERATOR_MASK 0xe0
23*0e209d39SAndroid Build Coastguard Worker
24*0e209d39SAndroid Build Coastguard Worker /**
25*0e209d39SAndroid Build Coastguard Worker * Bit mask for the titlecasing index adjustment options bit set.
26*0e209d39SAndroid Build Coastguard Worker * Currently two bits are defined:
27*0e209d39SAndroid Build Coastguard Worker * U_TITLECASE_NO_BREAK_ADJUSTMENT, U_TITLECASE_ADJUST_TO_CASED.
28*0e209d39SAndroid Build Coastguard Worker * See stringoptions.h.
29*0e209d39SAndroid Build Coastguard Worker * @internal
30*0e209d39SAndroid Build Coastguard Worker */
31*0e209d39SAndroid Build Coastguard Worker #define U_TITLECASE_ADJUSTMENT_MASK 0x600
32*0e209d39SAndroid Build Coastguard Worker
33*0e209d39SAndroid Build Coastguard Worker /**
34*0e209d39SAndroid Build Coastguard Worker * Internal API, used by u_strcasecmp() etc.
35*0e209d39SAndroid Build Coastguard Worker * Compare strings case-insensitively,
36*0e209d39SAndroid Build Coastguard Worker * in code point order or code unit order.
37*0e209d39SAndroid Build Coastguard Worker */
38*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t
39*0e209d39SAndroid Build Coastguard Worker u_strcmpFold(const UChar *s1, int32_t length1,
40*0e209d39SAndroid Build Coastguard Worker const UChar *s2, int32_t length2,
41*0e209d39SAndroid Build Coastguard Worker uint32_t options,
42*0e209d39SAndroid Build Coastguard Worker UErrorCode *pErrorCode);
43*0e209d39SAndroid Build Coastguard Worker
44*0e209d39SAndroid Build Coastguard Worker /**
45*0e209d39SAndroid Build Coastguard Worker * Internal API, used for detecting length of
46*0e209d39SAndroid Build Coastguard Worker * shared prefix case-insensitively.
47*0e209d39SAndroid Build Coastguard Worker * @param s1 input string 1
48*0e209d39SAndroid Build Coastguard Worker * @param length1 length of string 1, or -1 (NULL terminated)
49*0e209d39SAndroid Build Coastguard Worker * @param s2 input string 2
50*0e209d39SAndroid Build Coastguard Worker * @param length2 length of string 2, or -1 (NULL terminated)
51*0e209d39SAndroid Build Coastguard Worker * @param options compare options
52*0e209d39SAndroid Build Coastguard Worker * @param matchLen1 (output) length of partial prefix match in s1
53*0e209d39SAndroid Build Coastguard Worker * @param matchLen2 (output) length of partial prefix match in s2
54*0e209d39SAndroid Build Coastguard Worker * @param pErrorCode receives error status
55*0e209d39SAndroid Build Coastguard Worker */
56*0e209d39SAndroid Build Coastguard Worker U_CAPI void
57*0e209d39SAndroid Build Coastguard Worker u_caseInsensitivePrefixMatch(const UChar *s1, int32_t length1,
58*0e209d39SAndroid Build Coastguard Worker const UChar *s2, int32_t length2,
59*0e209d39SAndroid Build Coastguard Worker uint32_t options,
60*0e209d39SAndroid Build Coastguard Worker int32_t *matchLen1, int32_t *matchLen2,
61*0e209d39SAndroid Build Coastguard Worker UErrorCode *pErrorCode);
62*0e209d39SAndroid Build Coastguard Worker
63*0e209d39SAndroid Build Coastguard Worker #ifdef __cplusplus
64*0e209d39SAndroid Build Coastguard Worker
65*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN
66*0e209d39SAndroid Build Coastguard Worker
67*0e209d39SAndroid Build Coastguard Worker class BreakIterator; // unicode/brkiter.h
68*0e209d39SAndroid Build Coastguard Worker class ByteSink;
69*0e209d39SAndroid Build Coastguard Worker class Locale; // unicode/locid.h
70*0e209d39SAndroid Build Coastguard Worker
71*0e209d39SAndroid Build Coastguard Worker /** Returns true if the options are valid. Otherwise false, and sets an error. */
ustrcase_checkTitleAdjustmentOptions(uint32_t options,UErrorCode & errorCode)72*0e209d39SAndroid Build Coastguard Worker inline UBool ustrcase_checkTitleAdjustmentOptions(uint32_t options, UErrorCode &errorCode) {
73*0e209d39SAndroid Build Coastguard Worker if (U_FAILURE(errorCode)) { return false; }
74*0e209d39SAndroid Build Coastguard Worker if ((options & U_TITLECASE_ADJUSTMENT_MASK) == U_TITLECASE_ADJUSTMENT_MASK) {
75*0e209d39SAndroid Build Coastguard Worker // Both options together.
76*0e209d39SAndroid Build Coastguard Worker errorCode = U_ILLEGAL_ARGUMENT_ERROR;
77*0e209d39SAndroid Build Coastguard Worker return false;
78*0e209d39SAndroid Build Coastguard Worker }
79*0e209d39SAndroid Build Coastguard Worker return true;
80*0e209d39SAndroid Build Coastguard Worker }
81*0e209d39SAndroid Build Coastguard Worker
ustrcase_isLNS(UChar32 c)82*0e209d39SAndroid Build Coastguard Worker inline UBool ustrcase_isLNS(UChar32 c) {
83*0e209d39SAndroid Build Coastguard Worker // Letter, number, symbol,
84*0e209d39SAndroid Build Coastguard Worker // or a private use code point because those are typically used as letters or numbers.
85*0e209d39SAndroid Build Coastguard Worker // Consider modifier letters only if they are cased.
86*0e209d39SAndroid Build Coastguard Worker const uint32_t LNS = (U_GC_L_MASK|U_GC_N_MASK|U_GC_S_MASK|U_GC_CO_MASK) & ~U_GC_LM_MASK;
87*0e209d39SAndroid Build Coastguard Worker int gc = u_charType(c);
88*0e209d39SAndroid Build Coastguard Worker return (U_MASK(gc) & LNS) != 0 || (gc == U_MODIFIER_LETTER && ucase_getType(c) != UCASE_NONE);
89*0e209d39SAndroid Build Coastguard Worker }
90*0e209d39SAndroid Build Coastguard Worker
91*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_BREAK_ITERATION
92*0e209d39SAndroid Build Coastguard Worker
93*0e209d39SAndroid Build Coastguard Worker /** Returns nullptr if error. Pass in either locale or locID, not both. */
94*0e209d39SAndroid Build Coastguard Worker U_CFUNC
95*0e209d39SAndroid Build Coastguard Worker BreakIterator *ustrcase_getTitleBreakIterator(
96*0e209d39SAndroid Build Coastguard Worker const Locale *locale, const char *locID, uint32_t options, BreakIterator *iter,
97*0e209d39SAndroid Build Coastguard Worker LocalPointer<BreakIterator> &ownedIter, UErrorCode &errorCode);
98*0e209d39SAndroid Build Coastguard Worker
99*0e209d39SAndroid Build Coastguard Worker #endif
100*0e209d39SAndroid Build Coastguard Worker
101*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END
102*0e209d39SAndroid Build Coastguard Worker
103*0e209d39SAndroid Build Coastguard Worker #include "unicode/unistr.h" // for UStringCaseMapper
104*0e209d39SAndroid Build Coastguard Worker
105*0e209d39SAndroid Build Coastguard Worker /*
106*0e209d39SAndroid Build Coastguard Worker * Internal string casing functions implementing
107*0e209d39SAndroid Build Coastguard Worker * ustring.h/ustrcase.cpp and UnicodeString case mapping functions.
108*0e209d39SAndroid Build Coastguard Worker */
109*0e209d39SAndroid Build Coastguard Worker
110*0e209d39SAndroid Build Coastguard Worker struct UCaseMap : public icu::UMemory {
111*0e209d39SAndroid Build Coastguard Worker /** Implements most of ucasemap_open(). */
112*0e209d39SAndroid Build Coastguard Worker UCaseMap(const char *localeID, uint32_t opts, UErrorCode *pErrorCode);
113*0e209d39SAndroid Build Coastguard Worker ~UCaseMap();
114*0e209d39SAndroid Build Coastguard Worker
115*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_BREAK_ITERATION
116*0e209d39SAndroid Build Coastguard Worker icu::BreakIterator *iter; /* We adopt the iterator, so we own it. */
117*0e209d39SAndroid Build Coastguard Worker #endif
118*0e209d39SAndroid Build Coastguard Worker char locale[32];
119*0e209d39SAndroid Build Coastguard Worker int32_t caseLocale;
120*0e209d39SAndroid Build Coastguard Worker uint32_t options;
121*0e209d39SAndroid Build Coastguard Worker };
122*0e209d39SAndroid Build Coastguard Worker
123*0e209d39SAndroid Build Coastguard Worker #if UCONFIG_NO_BREAK_ITERATION
124*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR_PARAM
125*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR_UNUSED
126*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR
127*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR_NULL
128*0e209d39SAndroid Build Coastguard Worker #else
129*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR_PARAM icu::BreakIterator *iter,
130*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR_UNUSED icu::BreakIterator *,
131*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR iter,
132*0e209d39SAndroid Build Coastguard Worker # define UCASEMAP_BREAK_ITERATOR_NULL NULL,
133*0e209d39SAndroid Build Coastguard Worker #endif
134*0e209d39SAndroid Build Coastguard Worker
135*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t
136*0e209d39SAndroid Build Coastguard Worker ustrcase_getCaseLocale(const char *locale);
137*0e209d39SAndroid Build Coastguard Worker
138*0e209d39SAndroid Build Coastguard Worker // TODO: swap src / dest if approved for new public api
139*0e209d39SAndroid Build Coastguard Worker /** Implements UStringCaseMapper. */
140*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t U_CALLCONV
141*0e209d39SAndroid Build Coastguard Worker ustrcase_internalToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
142*0e209d39SAndroid Build Coastguard Worker char16_t *dest, int32_t destCapacity,
143*0e209d39SAndroid Build Coastguard Worker const char16_t *src, int32_t srcLength,
144*0e209d39SAndroid Build Coastguard Worker icu::Edits *edits,
145*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
146*0e209d39SAndroid Build Coastguard Worker
147*0e209d39SAndroid Build Coastguard Worker /** Implements UStringCaseMapper. */
148*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t U_CALLCONV
149*0e209d39SAndroid Build Coastguard Worker ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
150*0e209d39SAndroid Build Coastguard Worker char16_t *dest, int32_t destCapacity,
151*0e209d39SAndroid Build Coastguard Worker const char16_t *src, int32_t srcLength,
152*0e209d39SAndroid Build Coastguard Worker icu::Edits *edits,
153*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
154*0e209d39SAndroid Build Coastguard Worker
155*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_BREAK_ITERATION
156*0e209d39SAndroid Build Coastguard Worker
157*0e209d39SAndroid Build Coastguard Worker /** Implements UStringCaseMapper. */
158*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t U_CALLCONV
159*0e209d39SAndroid Build Coastguard Worker ustrcase_internalToTitle(int32_t caseLocale, uint32_t options,
160*0e209d39SAndroid Build Coastguard Worker icu::BreakIterator *iter,
161*0e209d39SAndroid Build Coastguard Worker char16_t *dest, int32_t destCapacity,
162*0e209d39SAndroid Build Coastguard Worker const char16_t *src, int32_t srcLength,
163*0e209d39SAndroid Build Coastguard Worker icu::Edits *edits,
164*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
165*0e209d39SAndroid Build Coastguard Worker
166*0e209d39SAndroid Build Coastguard Worker #endif
167*0e209d39SAndroid Build Coastguard Worker
168*0e209d39SAndroid Build Coastguard Worker /** Implements UStringCaseMapper. */
169*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t U_CALLCONV
170*0e209d39SAndroid Build Coastguard Worker ustrcase_internalFold(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
171*0e209d39SAndroid Build Coastguard Worker char16_t *dest, int32_t destCapacity,
172*0e209d39SAndroid Build Coastguard Worker const char16_t *src, int32_t srcLength,
173*0e209d39SAndroid Build Coastguard Worker icu::Edits *edits,
174*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
175*0e209d39SAndroid Build Coastguard Worker
176*0e209d39SAndroid Build Coastguard Worker /**
177*0e209d39SAndroid Build Coastguard Worker * Common string case mapping implementation for ucasemap_toXyz() and UnicodeString::toXyz().
178*0e209d39SAndroid Build Coastguard Worker * Implements argument checking.
179*0e209d39SAndroid Build Coastguard Worker */
180*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t
181*0e209d39SAndroid Build Coastguard Worker ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
182*0e209d39SAndroid Build Coastguard Worker char16_t *dest, int32_t destCapacity,
183*0e209d39SAndroid Build Coastguard Worker const char16_t *src, int32_t srcLength,
184*0e209d39SAndroid Build Coastguard Worker UStringCaseMapper *stringCaseMapper,
185*0e209d39SAndroid Build Coastguard Worker icu::Edits *edits,
186*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
187*0e209d39SAndroid Build Coastguard Worker
188*0e209d39SAndroid Build Coastguard Worker /**
189*0e209d39SAndroid Build Coastguard Worker * Common string case mapping implementation for old-fashioned u_strToXyz() functions
190*0e209d39SAndroid Build Coastguard Worker * that allow the source string to overlap the destination buffer.
191*0e209d39SAndroid Build Coastguard Worker * Implements argument checking and internally works with an intermediate buffer if necessary.
192*0e209d39SAndroid Build Coastguard Worker */
193*0e209d39SAndroid Build Coastguard Worker U_CFUNC int32_t
194*0e209d39SAndroid Build Coastguard Worker ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
195*0e209d39SAndroid Build Coastguard Worker char16_t *dest, int32_t destCapacity,
196*0e209d39SAndroid Build Coastguard Worker const char16_t *src, int32_t srcLength,
197*0e209d39SAndroid Build Coastguard Worker UStringCaseMapper *stringCaseMapper,
198*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
199*0e209d39SAndroid Build Coastguard Worker
200*0e209d39SAndroid Build Coastguard Worker /**
201*0e209d39SAndroid Build Coastguard Worker * UTF-8 string case mapping function type, used by ucasemap_mapUTF8().
202*0e209d39SAndroid Build Coastguard Worker * UTF-8 version of UStringCaseMapper.
203*0e209d39SAndroid Build Coastguard Worker * All error checking must be done.
204*0e209d39SAndroid Build Coastguard Worker * The UCaseMap must be fully initialized, with locale and/or iter set as needed.
205*0e209d39SAndroid Build Coastguard Worker */
206*0e209d39SAndroid Build Coastguard Worker typedef void U_CALLCONV
207*0e209d39SAndroid Build Coastguard Worker UTF8CaseMapper(int32_t caseLocale, uint32_t options,
208*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_BREAK_ITERATION
209*0e209d39SAndroid Build Coastguard Worker icu::BreakIterator *iter,
210*0e209d39SAndroid Build Coastguard Worker #endif
211*0e209d39SAndroid Build Coastguard Worker const uint8_t *src, int32_t srcLength,
212*0e209d39SAndroid Build Coastguard Worker icu::ByteSink &sink, icu::Edits *edits,
213*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
214*0e209d39SAndroid Build Coastguard Worker
215*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_BREAK_ITERATION
216*0e209d39SAndroid Build Coastguard Worker
217*0e209d39SAndroid Build Coastguard Worker /** Implements UTF8CaseMapper. */
218*0e209d39SAndroid Build Coastguard Worker U_CFUNC void U_CALLCONV
219*0e209d39SAndroid Build Coastguard Worker ucasemap_internalUTF8ToTitle(int32_t caseLocale, uint32_t options,
220*0e209d39SAndroid Build Coastguard Worker icu::BreakIterator *iter,
221*0e209d39SAndroid Build Coastguard Worker const uint8_t *src, int32_t srcLength,
222*0e209d39SAndroid Build Coastguard Worker icu::ByteSink &sink, icu::Edits *edits,
223*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
224*0e209d39SAndroid Build Coastguard Worker
225*0e209d39SAndroid Build Coastguard Worker #endif
226*0e209d39SAndroid Build Coastguard Worker
227*0e209d39SAndroid Build Coastguard Worker void
228*0e209d39SAndroid Build Coastguard Worker ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
229*0e209d39SAndroid Build Coastguard Worker const char *src, int32_t srcLength,
230*0e209d39SAndroid Build Coastguard Worker UTF8CaseMapper *stringCaseMapper,
231*0e209d39SAndroid Build Coastguard Worker icu::ByteSink &sink, icu::Edits *edits,
232*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
233*0e209d39SAndroid Build Coastguard Worker
234*0e209d39SAndroid Build Coastguard Worker /**
235*0e209d39SAndroid Build Coastguard Worker * Implements argument checking and buffer handling
236*0e209d39SAndroid Build Coastguard Worker * for UTF-8 string case mapping as a common function.
237*0e209d39SAndroid Build Coastguard Worker */
238*0e209d39SAndroid Build Coastguard Worker int32_t
239*0e209d39SAndroid Build Coastguard Worker ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
240*0e209d39SAndroid Build Coastguard Worker char *dest, int32_t destCapacity,
241*0e209d39SAndroid Build Coastguard Worker const char *src, int32_t srcLength,
242*0e209d39SAndroid Build Coastguard Worker UTF8CaseMapper *stringCaseMapper,
243*0e209d39SAndroid Build Coastguard Worker icu::Edits *edits,
244*0e209d39SAndroid Build Coastguard Worker UErrorCode &errorCode);
245*0e209d39SAndroid Build Coastguard Worker
246*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN
247*0e209d39SAndroid Build Coastguard Worker namespace GreekUpper {
248*0e209d39SAndroid Build Coastguard Worker
249*0e209d39SAndroid Build Coastguard Worker // Data bits.
250*0e209d39SAndroid Build Coastguard Worker static const uint32_t UPPER_MASK = 0x3ff;
251*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_VOWEL = 0x1000;
252*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_YPOGEGRAMMENI = 0x2000;
253*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_ACCENT = 0x4000;
254*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_DIALYTIKA = 0x8000;
255*0e209d39SAndroid Build Coastguard Worker // Further bits during data building and processing, not stored in the data map.
256*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_COMBINING_DIALYTIKA = 0x10000;
257*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_OTHER_GREEK_DIACRITIC = 0x20000;
258*0e209d39SAndroid Build Coastguard Worker
259*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_VOWEL_AND_ACCENT = HAS_VOWEL | HAS_ACCENT;
260*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_VOWEL_AND_ACCENT_AND_DIALYTIKA =
261*0e209d39SAndroid Build Coastguard Worker HAS_VOWEL_AND_ACCENT | HAS_DIALYTIKA;
262*0e209d39SAndroid Build Coastguard Worker static const uint32_t HAS_EITHER_DIALYTIKA = HAS_DIALYTIKA | HAS_COMBINING_DIALYTIKA;
263*0e209d39SAndroid Build Coastguard Worker
264*0e209d39SAndroid Build Coastguard Worker // State bits.
265*0e209d39SAndroid Build Coastguard Worker static const uint32_t AFTER_CASED = 1;
266*0e209d39SAndroid Build Coastguard Worker static const uint32_t AFTER_VOWEL_WITH_COMBINING_ACCENT = 2;
267*0e209d39SAndroid Build Coastguard Worker static const uint32_t AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT = 4;
268*0e209d39SAndroid Build Coastguard Worker
269*0e209d39SAndroid Build Coastguard Worker uint32_t getLetterData(UChar32 c);
270*0e209d39SAndroid Build Coastguard Worker
271*0e209d39SAndroid Build Coastguard Worker /**
272*0e209d39SAndroid Build Coastguard Worker * Returns a non-zero value for each of the Greek combining diacritics
273*0e209d39SAndroid Build Coastguard Worker * listed in The Unicode Standard, version 8, chapter 7.2 Greek,
274*0e209d39SAndroid Build Coastguard Worker * plus some perispomeni look-alikes.
275*0e209d39SAndroid Build Coastguard Worker */
276*0e209d39SAndroid Build Coastguard Worker uint32_t getDiacriticData(UChar32 c);
277*0e209d39SAndroid Build Coastguard Worker
278*0e209d39SAndroid Build Coastguard Worker } // namespace GreekUpper
279*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END
280*0e209d39SAndroid Build Coastguard Worker
281*0e209d39SAndroid Build Coastguard Worker #endif // __cplusplus
282*0e209d39SAndroid Build Coastguard Worker
283*0e209d39SAndroid Build Coastguard Worker #endif // __UCASEMAP_IMP_H__
284