From 734d30f96e2390330234e10b0157d6d1e3741a7e Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Sun, 17 Jul 2011 18:38:33 +0200 Subject: Modernize basicnif template code --- priv/templates/basicnif.erl | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'priv/templates/basicnif.erl') diff --git a/priv/templates/basicnif.erl b/priv/templates/basicnif.erl index 5f1ce11..342a5d3 100644 --- a/priv/templates/basicnif.erl +++ b/priv/templates/basicnif.erl @@ -5,24 +5,30 @@ -on_load(init/0). +-define(nif_stub, nif_stub_error(?LINE)). +nif_stub_error(Line) -> + erlang:nif_error({nif_not_loaded,module,?MODULE,line,Line}). + -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). -endif. init() -> - case code:priv_dir({{module}}) of - {error, bad_name} -> - SoName = filename:join("../priv", {{module}}); - Dir -> - SoName = filename:join(Dir, {{module}}) - end, - erlang:load_nif(SoName, 0). + PrivDir = case code:priv_dir(?MODULE) of + {error, bad_name} -> + EbinDir = filename:dirname(code:which(?MODULE)), + AppPath = filename:dirname(EbinDir), + filename:join(AppPath, "priv"); + Path -> + Path + end, + erlang:load_nif(filename:join(PrivDir, ?MODULE), 0). new() -> - "NIF library not loaded". + ?nif_stub. myfunction(Ref) -> - "NIF library not loaded". + ?nif_stub. %% =================================================================== %% EUnit tests @@ -31,6 +37,6 @@ myfunction(Ref) -> basic_test() -> {ok, Ref} = new(), - ok = myfunction(Ref). + ?assertEqual(ok, myfunction(Ref)). -endif. -- cgit v1.1