私は Erlang の NIF を使用しています。C 関数の結果は、3 つのポイントのタプルのリストの形式で erlang に送り返したい配列であり、それぞれが 2 つの double のタプルです。
この配列を作成するには、現在これを行っています:
ans = (ERL_NIF_TERM *)malloc(6*ntri*sizeof(ERL_NIF_TERM));
for (i=0;i<ntri;i++) {
ans[i] = enif_make_tuple3(env,
enif_make_tuple2(env,enif_make_double(env,x1[i]),enif_make_double(env,y1[i])),
enif_make_tuple2(env,enif_make_double(env,x2[i]),enif_make_double(env,y2[i])),
enif_make_tuple2(env,enif_make_double(env,x3[i]),enif_make_double(env,y3[i]))
);
}
これまでのところ、うまくいくようです。しかし、それは正しいですか?私の推論は、配列のすべてのセルにans
、サイズが の double が 6 つあるERL_NIF_TERM
ため、これに従って割り当てます。
しかし、それは本当ですか?
タプルを数えるべきですか?
一体、どのくらいのサイズERL_NIF_TERM
ですか?double insideERL_NIF_TERM
は int inside と同じサイズERL_NIF_TERM
でしょうか? 2 int のタプルもERL_NIF_TERM
同じサイズですか?