I understand that Example
structure can be used on elixir thanks to the following code.
#include <erl_nif.h>
typedef struct{
int data;
} Example;
Example func_a(){
Example ex;
ex.data = 1;
return ex;
}
ErlNifResourceType* RES_TYPE;
static int load(ErlNifEnv* env){
int flags = ERL_NIF_RT_CREATE | ERL_NIF_RT_TAKEOVER;
RES_TYPE = enif_open_resource_type(env, "Elixir.Mod", "Example", NULL, flags, NULL);
}
ERL_NIF_TERM nif_func_a(ErlNifEnv* env,int argc,const ERL_NIF_TERM argv[]){
Example* res_ex;
ERL_NIF_TERM ret;
res_ex = enif_alloc_resource(RES_TYPE,sizeof(Example));
ret = enif_make_resource(env,res_ex);
enif_release_resource(res_ex);
*res_ex = func_a();
return ret;
}
static ErlNifFunc nif_funcs[] = {
{"func_a",0,"nif_func_a"}
};
ERL_NIF_INIT(Elixir.Mod, nif_funcs, &load,NULL,NULL,NULL);
I have a question. If func_a() changed as follows, how should I write NIF function ?
const Example* func_a(){
...
}
Thanks