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