示例#1
0
ERL_NIF_TERM to_lower(ErlNifEnv* env, int argc, 
    const ERL_NIF_TERM argv[])
{
    ErlNifBinary in, out;
    int32_t ulen; 
    UErrorCode status = U_ZERO_ERROR;
    char locale[LOCALE_LEN];

    if (argc != 2)
        return enif_make_badarg(env);

    if (!(enif_get_atom(env, argv[0], locale, LOCALE_LEN, ERL_NIF_LATIN1)
       && enif_inspect_binary(env, argv[1], &in))) {
        return enif_make_badarg(env);
    }

    ulen = TO_ULEN(in.size);
    do_case(in, out, ulen, u_strToLower, (char*) locale, status);
    if (status == U_BUFFER_OVERFLOW_ERROR) {
        do_case(in, out, ulen, u_strToUpper, (char*) locale, status);
    }
    CHECK(env, status);
    return enif_make_binary(env, &out);
}
示例#2
0
static el_status_t case_cap_word(void)
{
    return do_case(TOcapitalize);
}
示例#3
0
static el_status_t case_up_word(void)
{
    return do_case(TOupper);
}
示例#4
0
static el_status_t case_down_word(void)
{
    return do_case(TOlower);
}