From 112f74cac14659da1e57a8d302a59a811dd845b6 Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Tue, 19 Jul 2011 17:31:04 +0200 Subject: [PATCH] Adapt basicnif template to OTP changes --- priv/templates/basicnif.c | 34 ++++++++++++++++++++-------------- priv/templates/basicnif.erl | 2 +- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/priv/templates/basicnif.c b/priv/templates/basicnif.c index 36bf938..a4a65be 100644 --- a/priv/templates/basicnif.c +++ b/priv/templates/basicnif.c @@ -1,4 +1,3 @@ - #include "erl_nif.h" static ErlNifResourceType* {{module}}_RESOURCE; @@ -8,8 +7,10 @@ typedef struct } {{module}}_handle; // Prototypes -ERL_NIF_TERM {{module}}_new(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); -ERL_NIF_TERM {{module}}_myfunction(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM {{module}}_new(ErlNifEnv* env, int argc, + const ERL_NIF_TERM argv[]); +static ERL_NIF_TERM {{module}}_myfunction(ErlNifEnv* env, int argc, + const ERL_NIF_TERM argv[]); static ErlNifFunc nif_funcs[] = { @@ -17,34 +18,39 @@ static ErlNifFunc nif_funcs[] = {"myfunction", 1, {{module}}_myfunction} }; -ERL_NIF_TERM {{module}}_new(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM {{module}}_new(ErlNifEnv* env, int argc, + const ERL_NIF_TERM argv[]) { - {{module}}_handle* handle = enif_alloc_resource(env, - {{module}}_RESOURCE, + {{module}}_handle* handle = enif_alloc_resource({{module}}_RESOURCE, sizeof({{module}}_handle)); ERL_NIF_TERM result = enif_make_resource(env, handle); - enif_release_resource(env, handle); + enif_release_resource(handle); return enif_make_tuple2(env, enif_make_atom(env, "ok"), result); } -ERL_NIF_TERM {{module}}_myfunction(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +static ERL_NIF_TERM {{module}}_myfunction(ErlNifEnv* env, int argc, + const ERL_NIF_TERM argv[]) { return enif_make_atom(env, "ok"); } static void {{module}}_resource_cleanup(ErlNifEnv* env, void* arg) { - // Delete any dynamically allocated memory stored in {{module}}_handle - // {{module}}_handle* handle = ({{module}}_handle*)arg; + /* Delete any dynamically allocated memory stored in {{module}}_handle */ + /* {{module}}_handle* handle = ({{module}}_handle*)arg; */ } static int on_load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) { - {{module}}_RESOURCE = enif_open_resource_type(env, "{{module}}_resource", - &{{module}}_resource_cleanup, - ERL_NIF_RT_CREATE | ERL_NIF_RT_TAKEOVER, - 0); + ErlNifResourceFlags flags = ERL_NIF_RT_CREATE | ERL_NIF_RT_TAKEOVER; + ErlNifResourceType* rt = enif_open_resource_type(env, NULL, + "{{module}}_resource", + &{{module}}_resource_cleanup, + flags, NULL); + if (rt == NULL) + return -1; + return 0; } diff --git a/priv/templates/basicnif.erl b/priv/templates/basicnif.erl index 342a5d3..e1f4143 100644 --- a/priv/templates/basicnif.erl +++ b/priv/templates/basicnif.erl @@ -27,7 +27,7 @@ init() -> new() -> ?nif_stub. -myfunction(Ref) -> +myfunction(_Ref) -> ?nif_stub. %% ===================================================================