Current section

Files

Jump to
epqueue src epqueue_nif.erl
Raw

src/epqueue_nif.erl

-module(epqueue_nif).
-define(NOT_LOADED, not_loaded(?LINE)).
-on_load(load_nif/0).
-export([
new/1,
size/1,
insert/3,
remove/2,
pop/1,
peek/1,
rank/2
]).
load_nif() ->
SoName = get_priv_path(?MODULE),
io:format(<<"Loading library: ~p ~n">>, [SoName]),
ok = erlang:load_nif(SoName, 0).
new(_Options) ->
?NOT_LOADED.
size(_QueueRef) ->
?NOT_LOADED.
insert(_QueueRef, _Data, _Priority) ->
?NOT_LOADED.
remove(_QueueRef, _Ref) ->
?NOT_LOADED.
pop(_QueueRef) ->
?NOT_LOADED.
peek(_QueueRef) ->
?NOT_LOADED.
rank(_QueueRef, _ItemRef) ->
?NOT_LOADED.
% internals
get_priv_path(File) ->
case code:priv_dir(epqueue) of
{error, bad_name} ->
Ebin = filename:dirname(code:which(?MODULE)),
filename:join([filename:dirname(Ebin), "priv", File]);
Dir ->
filename:join(Dir, File)
end.
not_loaded(Line) ->
erlang:nif_error({not_loaded, [{module, ?MODULE}, {line, Line}]}).