52 icu::UnicodeSet special_add;
53 icu::UnicodeSet ignore;
54 UErrorCode status = U_ZERO_ERROR;
55 icu::UnicodeSet upper(
"[\\p{Lu}]", status);
56 CHECK(U_SUCCESS(status));
65 current.closeOver(USET_CASE_INSENSITIVE);
70 UChar32 canonical = RegExpCaseFolding::Canonicalize(
i);
71 bool class_has_matching_canonical_char =
false;
72 bool class_has_non_matching_canonical_char =
false;
73 for (int32_t j = 0; j < current.getRangeCount(); j++) {
74 for (UChar32 c = current.getRangeStart(j); c <= current.getRangeEnd(j);
79 UChar32 other_canonical = RegExpCaseFolding::Canonicalize(c);
80 if (canonical == other_canonical) {
81 class_has_matching_canonical_char =
true;
83 class_has_non_matching_canonical_char =
true;
93 if (class_has_non_matching_canonical_char) {
94 if (class_has_matching_canonical_char) {
109 for (int32_t
i = 0;
i < special_add.getRangeCount();
i++) {
110 for (UChar32 c = special_add.getRangeStart(
i);
111 c <= special_add.getRangeEnd(
i); c++) {
112 UChar32 canonical = RegExpCaseFolding::Canonicalize(c);
114 current.closeOver(USET_CASE_INSENSITIVE);
115 current.removeAll(ignore);
116 for (int32_t j = 0; j < current.getRangeCount(); j++) {
117 for (UChar32 c2 = current.getRangeStart(j);
118 c2 <= current.getRangeEnd(j); c2++) {
119 CHECK_EQ(canonical, RegExpCaseFolding::Canonicalize(c2));
126 PrintSet(out,
"SpecialAddSet", special_add);