- // case mapping
- buf_len = (size_t) icu_utf16_casemap((UChar *)buf, (int32_t) buf_cap,
- (const UChar *)buf, (int32_t) buf_len,
- locale, action);
-
- // converting buf to utf8
- buf = icu_utf16_to_utf8(buf, buf_cap, (size_t *) &buf_len,
- (const UChar *) buf, (int32_t) buf_len);
-
+ switch(action) {
+ case 'l':
+ dest16_len = u_strToLower(dest16->utf16, dest16->utf16_cap,
+ src16->utf16, src16->utf16_len,
+ locale, status);
+ break;
+ case 'u':
+ dest16_len = u_strToUpper(dest16->utf16, dest16->utf16_cap,
+ src16->utf16, src16->utf16_len,
+ locale, status);
+ break;
+ case 't':
+ dest16_len = u_strToTitle(dest16->utf16, dest16->utf16_cap,
+ src16->utf16, src16->utf16_len,
+ 0, locale, status);
+ break;
+ case 'f':
+ dest16_len = u_strFoldCase(dest16->utf16, dest16->utf16_cap,
+ src16->utf16, src16->utf16_len,
+ U_FOLD_CASE_DEFAULT, status);
+ break;
+
+ default:
+ return U_UNSUPPORTED_ERROR;
+ break;
+ }
+ }