static int iso_8859_1_mbc_to_normalize(OnigAmbigType flag, const UChar** pp, const UChar* end, UChar* lower) { const UChar* p = *pp; if (end > p + 1 && (flag & ONIGENC_AMBIGUOUS_MATCH_COMPOUND) != 0) { if ((*p == 's' && *(p+1) == 's') || ((flag & ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE) != 0 && (*p == 'S' && *(p+1) == 'S'))) { *lower = 0xdf; (*pp) += 2; return 1; } } if (((flag & ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE) != 0 && ONIGENC_IS_MBC_ASCII(p)) || ((flag & ONIGENC_AMBIGUOUS_MATCH_NONASCII_CASE) != 0 && !ONIGENC_IS_MBC_ASCII(p))) { *lower = ONIGENC_ISO_8859_1_TO_LOWER_CASE(*p); } else { *lower = *p; } (*pp)++; return 1; /* return byte length of converted char to lower */ }
static int utf32be_mbc_to_normalize(OnigAmbigType flag, const UChar** pp, const UChar* end, UChar* lower) { const UChar* p = *pp; if (*(p+2) == 0 && *(p+1) == 0 && *p == 0) { p += 3; if (end > p + 4 && (flag & ONIGENC_AMBIGUOUS_MATCH_COMPOUND) != 0 && ((*p == 's' && *(p+4) == 's') || ((flag & ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE) != 0 && (*p == 'S' && *(p+4) == 'S'))) && *(p+3) == 0 && *(p+2) == 0 && *(p+1) == 0) { *lower++ = '\0'; *lower++ = '\0'; *lower++ = '\0'; *lower = 0xdf; (*pp) += 8; return 4; } *lower++ = '\0'; *lower++ = '\0'; *lower++ = '\0'; if (((flag & ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE) != 0 && ONIGENC_IS_MBC_ASCII(p)) || ((flag & ONIGENC_AMBIGUOUS_MATCH_NONASCII_CASE) != 0 && !ONIGENC_IS_MBC_ASCII(p))) { *lower = ONIGENC_ISO_8859_1_TO_LOWER_CASE(*p); } else { *lower = *p; } (*pp) += 4; return 4; /* return byte length of converted char to lower */ } else { int len = 4; if (lower != p) { int i; for (i = 0; i < len; i++) { *lower++ = *p++; } } (*pp) += len; return len; /* return byte length of converted char to lower */ } }
static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* lower, OnigEncoding enc) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ONIGENC_ISO_8859_1_TO_LOWER_CASE(*p); (*pp)++; return 1; }