Hans Nilsson R
Tue Dec 8 17:50:12 CET 2009
I have been playing with the NIF facility in R13B03 and I have some
comments. The implementation is very stable, as usual with experimental
code from Erlang/OTP! And very fast....
I have a large binary which I pass into a nif, which processes a part of
it and returns the result and the unprocessed part of the binary. The
unprocessed part is then input to the nif again and so on.
Now, in the nif, to make a copy of the unprocessed part and make a new
binary is time consuming, so some function enif_make_sub_binary(env,
bin, from, to) would be useful.
When the nif shall return a part of the binary as a string or a binary,
the functions enif_make_atom and enif_make_string assumes that the part
is zero-terminated. It is of course possible to save the character,
write a zero, call the enif-function and then write back the original
character, but it is of course dangerous to modify in place in a
binary... The alternative of copying the characters to a buffer is slow.
Therefore I'd like to have some enif_make_string_n(env, char *p, int
length) as well, analogous to the c-library functions strcpy and strncpy.
More information about the erlang-questions