-module(nifArray).
|
|
|
|
-on_load(init/0).
|
|
|
|
-export([
|
|
new/1
|
|
, get/2
|
|
, put/3
|
|
, test/1
|
|
, test1/1
|
|
]).
|
|
|
|
-type nifArray() :: reference().
|
|
|
|
init() ->
|
|
SoName =
|
|
case code:priv_dir(?MODULE) of
|
|
{error, _} ->
|
|
case code:which(?MODULE) of
|
|
Filename when is_list(Filename) ->
|
|
filename:join([filename:dirname(Filename), "../priv", "nifArray"]);
|
|
_ ->
|
|
filename:join("../priv", "nifArray")
|
|
end;
|
|
Dir ->
|
|
filename:join(Dir, "nifArray")
|
|
end,
|
|
erlang:load_nif(SoName, 0).
|
|
|
|
-spec new(Size :: integer()) -> nifArray().
|
|
new(_Size) ->
|
|
erlang:nif_error({nif_not_loaded, module, ?MODULE, line, ?LINE}).
|
|
|
|
-spec get(Ref :: nifArray(), Index :: integer()) -> term().
|
|
get(_Ref, _Index) ->
|
|
erlang:nif_error({nif_not_loaded, module, ?MODULE, line, ?LINE}).
|
|
|
|
-spec put(Ref :: nifArray(), Index :: integer(), Value :: term()) -> term().
|
|
put(_Ref, _Index, _Value) ->
|
|
erlang:nif_error({nif_not_loaded, module, ?MODULE, line, ?LINE}).
|
|
|
|
test(Value) ->
|
|
erlang:nif_error({nif_not_loaded, module, ?MODULE, line, ?LINE}).
|
|
|
|
test1(Value) ->
|
|
Bin = term_to_binary(Value),
|
|
Term = binary_to_term(Bin).
|
|
|
|
|