kzemek / etls

An alternative NIF-based implementation of Erlang ssl module.
Other
36 stars 2 forks source link

optimisation for getting a std::string from a ERL_NIF_TERM #5

Open silviucpp opened 7 years ago

silviucpp commented 7 years ago

Hello I was wonder why instead using enif_get_string and enif_get_list_length why you are not doing something like :

// std::string
inline int get(ErlNifEnv *env, ERL_NIF_TERM term, std::string &var)
{
    ErlNifBinary bin;
    int ret

    if(enif_is_binary(env, term))
        ret = enif_inspect_binary(env, term, &bin);
    else
        ret = enif_inspect_iolist_as_binary(env, term, &bin);

    if(!ret)
        return 0;

    var = std::string((const char*)bin.data, bin.size);
    return ret;
}

Kind regards, Silviu