Move nif functions to geef_nif
This commit is contained in:
@@ -140,4 +140,4 @@ static ErlNifFunc geef_funcs[] =
|
|||||||
{"revwalk_reset", 1, geef_revwalk_reset},
|
{"revwalk_reset", 1, geef_revwalk_reset},
|
||||||
};
|
};
|
||||||
|
|
||||||
ERL_NIF_INIT(geef, geef_funcs, load, NULL, upgrade, unload)
|
ERL_NIF_INIT(geef_nif, geef_funcs, load, NULL, upgrade, unload)
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ id(Obj = #object{type=blob}) ->
|
|||||||
geef_object:id(Obj).
|
geef_object:id(Obj).
|
||||||
|
|
||||||
size(#object{type=blob, handle=Handle}) ->
|
size(#object{type=blob, handle=Handle}) ->
|
||||||
geef:blob_size(Handle).
|
geef_nif:blob_size(Handle).
|
||||||
|
|
||||||
content(#object{type=blob, handle=Handle}) ->
|
content(#object{type=blob, handle=Handle}) ->
|
||||||
{ok, Content} = geef:blob_content(Handle),
|
{ok, Content} = geef_nif:blob_content(Handle),
|
||||||
Content.
|
Content.
|
||||||
|
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ content(#object{type=blob, handle=Handle}) ->
|
|||||||
|
|
||||||
blob_size_test() ->
|
blob_size_test() ->
|
||||||
{ok, Repo} = geef_repo:open(".."),
|
{ok, Repo} = geef_repo:open(".."),
|
||||||
Blob = lookup(Repo, "80d5c15a040c93a4f98f4496a05ebf30cdd58650"),
|
{ok, Blob} = lookup(Repo, "80d5c15a040c93a4f98f4496a05ebf30cdd58650"),
|
||||||
?assertMatch(889, ?MODULE:size(Blob)),
|
?assertMatch(889, ?MODULE:size(Blob)),
|
||||||
?assertMatch(889, erlang:size(content(Blob))).
|
?assertMatch(889, erlang:size(content(Blob))).
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
-spec tree_id(object()) -> oid().
|
-spec tree_id(object()) -> oid().
|
||||||
tree_id(#object{type=commit,handle=Handle}) ->
|
tree_id(#object{type=commit,handle=Handle}) ->
|
||||||
Oid = geef:commit_tree_id(Handle),
|
Oid = geef_nif:commit_tree_id(Handle),
|
||||||
#oid{oid=Oid}.
|
#oid{oid=Oid}.
|
||||||
|
|
||||||
tree(#object{type=commit,handle=Handle}) ->
|
tree(#object{type=commit,handle=Handle}) ->
|
||||||
case geef:commit_tree(Handle) of
|
case geef_nif:commit_tree(Handle) of
|
||||||
{ok, Type, Handle} ->
|
{ok, Type, Handle} ->
|
||||||
{ok, #object{type=Type, handle=Handle}};
|
{ok, #object{type=Type, handle=Handle}};
|
||||||
Other ->
|
Other ->
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
%%% @private
|
%%% @private
|
||||||
%%% NIF functions, not to be used directly.
|
%%% NIF functions, not to be used directly.
|
||||||
|
|
||||||
-module(geef).
|
-module(geef_nif).
|
||||||
-export([reference_list/1,
|
-export([reference_list/1,
|
||||||
reference_to_id/2, reference_glob/2, reference_lookup/2, reference_resolve/1,
|
reference_to_id/2, reference_glob/2, reference_lookup/2, reference_resolve/1,
|
||||||
reference_target/1, reference_type/1, odb_object_exists/2, odb_write/3]).
|
reference_target/1, reference_type/1, odb_object_exists/2, odb_write/3]).
|
||||||
@@ -10,13 +10,13 @@
|
|||||||
|
|
||||||
-spec exists(odb(), oid() | iolist()) -> boolean().
|
-spec exists(odb(), oid() | iolist()) -> boolean().
|
||||||
exists(#odb{handle=Handle}, #oid{oid=Oid}) ->
|
exists(#odb{handle=Handle}, #oid{oid=Oid}) ->
|
||||||
geef:odb_object_exists(Handle, Oid);
|
geef_nif:odb_object_exists(Handle, Oid);
|
||||||
exists(Odb = #odb{}, Sha) ->
|
exists(Odb = #odb{}, Sha) ->
|
||||||
exists(Odb, geef_oid:parse(Sha)).
|
exists(Odb, geef_oid:parse(Sha)).
|
||||||
|
|
||||||
-spec write(odb(), iolist(), atom()) -> {ok, oid()} | {error, term}.
|
-spec write(odb(), iolist(), atom()) -> {ok, oid()} | {error, term}.
|
||||||
write(#odb{handle=Handle}, Contents, Type) ->
|
write(#odb{handle=Handle}, Contents, Type) ->
|
||||||
case geef:odb_write(Handle, Contents, Type) of
|
case geef_nif:odb_write(Handle, Contents, Type) of
|
||||||
{ok, Oid} ->
|
{ok, Oid} ->
|
||||||
{ok, #oid{oid=Oid}};
|
{ok, #oid{oid=Oid}};
|
||||||
Other ->
|
Other ->
|
||||||
|
|||||||
@@ -12,12 +12,12 @@
|
|||||||
%% @doc Get the hex-encoded hash
|
%% @doc Get the hex-encoded hash
|
||||||
-spec fmt(oid()) -> binary().
|
-spec fmt(oid()) -> binary().
|
||||||
fmt(#oid{oid=Oid}) ->
|
fmt(#oid{oid=Oid}) ->
|
||||||
geef:oid_fmt(Oid).
|
geef_nif:oid_fmt(Oid).
|
||||||
|
|
||||||
%% @doc Parse an iolist as a hash
|
%% @doc Parse an iolist as a hash
|
||||||
-spec parse(iolist()) -> oid().
|
-spec parse(iolist()) -> oid().
|
||||||
parse(Sha) ->
|
parse(Sha) ->
|
||||||
Oid = geef:oid_parse(Sha),
|
Oid = geef_nif:oid_parse(Sha),
|
||||||
#oid{oid=Oid}.
|
#oid{oid=Oid}.
|
||||||
|
|
||||||
-ifdef(TEST).
|
-ifdef(TEST).
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
-spec new(term()) -> ref().
|
-spec new(term()) -> ref().
|
||||||
new(Handle) ->
|
new(Handle) ->
|
||||||
Type = geef:reference_type(Handle),
|
Type = geef_nif:reference_type(Handle),
|
||||||
#ref{handle=Handle, type=Type}.
|
#ref{handle=Handle, type=Type}.
|
||||||
|
|
||||||
-spec lookup(pid(), iolist()) -> {ok, ref()} | {error, term()}.
|
-spec lookup(pid(), iolist()) -> {ok, ref()} | {error, term()}.
|
||||||
@@ -29,14 +29,14 @@ resolve(#ref{handle=Handle}) ->
|
|||||||
|
|
||||||
-spec target(ref()) -> binary() | oid().
|
-spec target(ref()) -> binary() | oid().
|
||||||
target(#ref{handle=Handle,type=symbolic}) ->
|
target(#ref{handle=Handle,type=symbolic}) ->
|
||||||
geef:reference_target(Handle);
|
geef_nif:reference_target(Handle);
|
||||||
target(#ref{handle=Handle,type=oid}) ->
|
target(#ref{handle=Handle,type=oid}) ->
|
||||||
Oid = geef:reference_target(Handle),
|
Oid = geef_nif:reference_target(Handle),
|
||||||
#oid{oid=Oid}.
|
#oid{oid=Oid}.
|
||||||
|
|
||||||
-spec name_to_id(repo(), iolist()) -> {ok, oid()} | {error, binary()}.
|
-spec name_to_id(repo(), iolist()) -> {ok, oid()} | {error, binary()}.
|
||||||
name_to_id(#repo{handle=Handle}, Name) ->
|
name_to_id(#repo{handle=Handle}, Name) ->
|
||||||
case geef:reference_to_id(Handle, Name) of
|
case geef_nif:reference_to_id(Handle, Name) of
|
||||||
{ok, Oid} ->
|
{ok, Oid} ->
|
||||||
{ok, #oid{oid=Oid}};
|
{ok, #oid{oid=Oid}};
|
||||||
Other ->
|
Other ->
|
||||||
|
|||||||
@@ -29,13 +29,13 @@
|
|||||||
%% @doc Discover a repository's path from a path contained inside it
|
%% @doc Discover a repository's path from a path contained inside it
|
||||||
-spec discover(iolist()) -> {ok, binary()} | error | {error, term()}.
|
-spec discover(iolist()) -> {ok, binary()} | error | {error, term()}.
|
||||||
discover(Path) ->
|
discover(Path) ->
|
||||||
geef:repository_discover(Path).
|
geef_nif:repository_discover(Path).
|
||||||
|
|
||||||
%% @doc Open an existing repository. Path must point to the git-dir or
|
%% @doc Open an existing repository. Path must point to the git-dir or
|
||||||
%% worktree
|
%% worktree
|
||||||
-spec open(iolist()) -> {ok, repo()} | {error, term()}.
|
-spec open(iolist()) -> {ok, repo()} | {error, term()}.
|
||||||
open(Path) ->
|
open(Path) ->
|
||||||
case geef:repository_open(Path) of
|
case geef_nif:repository_open(Path) of
|
||||||
{ok, Handle} ->
|
{ok, Handle} ->
|
||||||
start_link(Handle);
|
start_link(Handle);
|
||||||
Other ->
|
Other ->
|
||||||
@@ -45,7 +45,7 @@ open(Path) ->
|
|||||||
%% @doc Initialize a new repository
|
%% @doc Initialize a new repository
|
||||||
-spec init(iolist(), boolean()) -> {ok, pid()} | {error, term()}.
|
-spec init(iolist(), boolean()) -> {ok, pid()} | {error, term()}.
|
||||||
init(Path, Bare) ->
|
init(Path, Bare) ->
|
||||||
case geef:repository_init(Path, Bare) of
|
case geef_nif:repository_init(Path, Bare) of
|
||||||
{ok, Handle} ->
|
{ok, Handle} ->
|
||||||
start_link(Handle);
|
start_link(Handle);
|
||||||
Other ->
|
Other ->
|
||||||
@@ -102,25 +102,25 @@ init(Handle) ->
|
|||||||
|
|
||||||
%% @private
|
%% @private
|
||||||
handle_call(path, _From, State = #state{handle=Handle}) ->
|
handle_call(path, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:repository_get_path(Handle),
|
Reply = geef_nif:repository_get_path(Handle),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call(workdir, _From, State = #state{handle=Handle}) ->
|
handle_call(workdir, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:repository_get_workdir(Handle),
|
Reply = geef_nif:repository_get_workdir(Handle),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call(odb, _From, State = #state{handle=Handle}) ->
|
handle_call(odb, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = handle_odb(Handle),
|
Reply = handle_odb(Handle),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call(bare, _From, State = #state{handle=Handle}) ->
|
handle_call(bare, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:repository_is_bare(Handle),
|
Reply = geef_nif:repository_is_bare(Handle),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call(refs, _From, State = #state{handle=Handle}) ->
|
handle_call(refs, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:reference_list(Handle),
|
Reply = geef_nif:reference_list(Handle),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call({lookup_object, Oid}, _From, State = #state{handle=Handle}) ->
|
handle_call({lookup_object, Oid}, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:object_lookup(Handle, Oid),
|
Reply = geef_nif:object_lookup(Handle, Oid),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call({lookup_reference, Name}, _From, State = #state{handle=Handle}) ->
|
handle_call({lookup_reference, Name}, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:reference_lookup(Handle, Name),
|
Reply = geef_nif:reference_lookup(Handle, Name),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call(stop, _From, State) ->
|
handle_call(stop, _From, State) ->
|
||||||
{stop, normal, ok, State};
|
{stop, normal, ok, State};
|
||||||
@@ -163,7 +163,7 @@ start_link(Handle) ->
|
|||||||
gen_server:start_link(?MODULE, Handle, []).
|
gen_server:start_link(?MODULE, Handle, []).
|
||||||
|
|
||||||
handle_odb(Handle) ->
|
handle_odb(Handle) ->
|
||||||
case geef:repository_get_odb(Handle) of
|
case geef_nif:repository_get_odb(Handle) of
|
||||||
{ok, OdbHandle} ->
|
{ok, OdbHandle} ->
|
||||||
{ok, #odb{handle=OdbHandle}};
|
{ok, #odb{handle=OdbHandle}};
|
||||||
Other ->
|
Other ->
|
||||||
@@ -171,7 +171,7 @@ handle_odb(Handle) ->
|
|||||||
end.
|
end.
|
||||||
|
|
||||||
handle_revwalk(Handle) ->
|
handle_revwalk(Handle) ->
|
||||||
case geef:revwalk_new(Handle) of
|
case geef_nif:revwalk_new(Handle) of
|
||||||
{ok, WalkHandle} ->
|
{ok, WalkHandle} ->
|
||||||
geef_revwalk:start_link(WalkHandle);
|
geef_revwalk:start_link(WalkHandle);
|
||||||
Error ->
|
Error ->
|
||||||
|
|||||||
@@ -73,13 +73,13 @@ init(Handle) ->
|
|||||||
|
|
||||||
%% @private
|
%% @private
|
||||||
handle_call({sort, Opts}, _From, State = #state{handle=Handle}) ->
|
handle_call({sort, Opts}, _From, State = #state{handle=Handle}) ->
|
||||||
geef:revwalk_sorting(Handle, Opts),
|
geef_nif:revwalk_sorting(Handle, Opts),
|
||||||
{reply, ok, State};
|
{reply, ok, State};
|
||||||
handle_call({push, Oid}, _From, State = #state{handle=Handle}) ->
|
handle_call({push, Oid}, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:revwalk_push(Handle, Oid, false),
|
Reply = geef_nif:revwalk_push(Handle, Oid, false),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call({hide, Oid}, _From, State = #state{handle=Handle}) ->
|
handle_call({hide, Oid}, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = geef:revwalk_push(Handle, Oid, true),
|
Reply = geef_nif:revwalk_push(Handle, Oid, true),
|
||||||
{reply, Reply, State};
|
{reply, Reply, State};
|
||||||
handle_call(next, _From, State = #state{handle=Handle}) ->
|
handle_call(next, _From, State = #state{handle=Handle}) ->
|
||||||
Reply = handle_next(Handle),
|
Reply = handle_next(Handle),
|
||||||
@@ -108,7 +108,7 @@ code_change(_OldVsn, State, _Extra) ->
|
|||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
|
|
||||||
handle_next(Handle) ->
|
handle_next(Handle) ->
|
||||||
case geef:revwalk_next(Handle) of
|
case geef_nif:revwalk_next(Handle) of
|
||||||
{ok, Oid} ->
|
{ok, Oid} ->
|
||||||
{ok, #oid{oid=Oid}};
|
{ok, #oid{oid=Oid}};
|
||||||
Other ->
|
Other ->
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
-include("geef_records.hrl").
|
-include("geef_records.hrl").
|
||||||
|
|
||||||
bypath(#object{type=tree,handle=Handle}, Path) ->
|
bypath(#object{type=tree,handle=Handle}, Path) ->
|
||||||
case geef:tree_bypath(Handle, Path) of
|
case geef_nif:tree_bypath(Handle, Path) of
|
||||||
{ok, Mode, Type, Oid, Name} ->
|
{ok, Mode, Type, Oid, Name} ->
|
||||||
{ok, Mode, Type, #oid{oid=Oid}, Name};
|
{ok, Mode, Type, #oid{oid=Oid}, Name};
|
||||||
Other ->
|
Other ->
|
||||||
|
|||||||
Reference in New Issue
Block a user