Packages

An erlang library for SVM classification and regression based on libsvm.

Current section

Files

Jump to
esvm src esvm_nif.erl
Raw

src/esvm_nif.erl

-module(esvm_nif).
-define(NOT_LOADED, not_loaded(?LINE)).
-on_load(load_nif/0).
-export([
model_create/3,
model_load/1,
model_save/2,
model_predict/2
]).
% nif functions
load_nif() ->
ok = erlang:load_nif(get_priv_path(?MODULE), 0).
not_loaded(Line) ->
erlang:nif_error({not_loaded, [{module, ?MODULE}, {line, Line}]}).
model_create(_Features, _EstimatedFeatureLength, _TrainingParams) ->
?NOT_LOADED.
model_load(_FilePath) ->
?NOT_LOADED.
model_save(_ModelRef, _FilePath) ->
?NOT_LOADED.
model_predict(_ModelRef, _Features) ->
?NOT_LOADED.
% internals
get_priv_path(File) ->
get_priv_path(esvm, ?MODULE, File).
get_priv_path(AppName, Module, File) ->
case code:priv_dir(AppName) of
{error, bad_name} ->
Ebin = filename:dirname(code:which(Module)),
filename:join([filename:dirname(Ebin), "priv", File]);
Dir ->
filename:join(Dir, File)
end.