Merge pull request #37 from a13x/master

Fixing the building of hanoidb for R18
This commit is contained in:
Kresten Krab Thorup 2016-03-26 02:03:12 +01:00
commit 68333fa51a
5 changed files with 39 additions and 7 deletions

View file

@ -3,5 +3,6 @@ otp_release:
- R16B03 - R16B03
- R15B03 - R15B03
- 17.0 - 17.0
- 18.0

View file

@ -21,11 +21,12 @@
warn_untyped_record, warn_untyped_record,
% warn_missing_spec, % warn_missing_spec,
% strict_validation, % strict_validation,
{platform_define, "^R|17", pre18},
debug_info]}. debug_info]}.
{xref_checks, [undefined_function_calls]}. {xref_checks, [undefined_function_calls]}.
{deps, [ {sext, ".*", {git, "git://github.com/esl/sext", {branch, "master"}}} {deps, [ {sext, ".*", {git, "git://github.com/uwiger/sext", {branch, "master"}}}
, {lager, ".*", {git, "git://github.com/basho/lager", {branch, "master"}}} , {lager, ".*", {git, "git://github.com/basho/lager", {branch, "master"}}}
, {snappy, "1.*", {git, "git://github.com/fdmanana/snappy-erlang-nif.git", {branch, "master"}}} , {snappy, "1.*", {git, "git://github.com/fdmanana/snappy-erlang-nif.git", {branch, "master"}}}
, {plain_fsm, "1.*", {git, "git://github.com/gburd/plain_fsm", {branch, "master"}}} , {plain_fsm, "1.*", {git, "git://github.com/gburd/plain_fsm", {branch, "master"}}}
@ -33,7 +34,7 @@
, {ebloom, ".*", {git, "git://github.com/basho/ebloom", {branch, "master"}}} , {ebloom, ".*", {git, "git://github.com/basho/ebloom", {branch, "master"}}}
, {triq, ".*", {git, "git://github.com/krestenkrab/triq", {branch, "master"}}} , {triq, ".*", {git, "git://github.com/krestenkrab/triq", {branch, "master"}}}
, {lz4, ".*", {git, "git://github.com/krestenkrab/erlang-lz4.git", {branch, "master"}}} , {lz4, ".*", {git, "git://github.com/krestenkrab/erlang-lz4.git", {branch, "master"}}}
% , {edown, "0.3.*", {git, "git://github.com/esl/edown.git", {branch, "master"}}} % , {edown, "0.3.*", {git, "git://github.com/uwiger/edown.git", {branch, "master"}}}
% , {asciiedoc, "0.1.*", {git, "git://github.com/norton/asciiedoc.git", {branch, "master"}}} % , {asciiedoc, "0.1.*", {git, "git://github.com/norton/asciiedoc.git", {branch, "master"}}}
% , {triq, ".*", {git, "git://github.com/krestenkrab/triq.git", {branch, "master"}}} % , {triq, ".*", {git, "git://github.com/krestenkrab/triq.git", {branch, "master"}}}
% , {proper, ".*", {git, "git://github.com/manopapad/proper.git", {branch, "master"}}} % , {proper, ".*", {git, "git://github.com/manopapad/proper.git", {branch, "master"}}}

View file

@ -48,12 +48,19 @@
-define(KEY_IN_RANGE(Key,Range), -define(KEY_IN_RANGE(Key,Range),
(?KEY_IN_FROM_RANGE(Key,Range) andalso ?KEY_IN_TO_RANGE(Key,Range))). (?KEY_IN_FROM_RANGE(Key,Range) andalso ?KEY_IN_TO_RANGE(Key,Range))).
-ifdef(pre18).
-define(TIMESTAMP, now()).
-else.
-define(TIMESTAMP, erlang:timestamp()).
-endif.
-record(nursery, { log_file :: file:fd(), -record(nursery, { log_file :: file:fd(),
dir :: string(), dir :: string(),
cache :: gb_trees:tree(binary(), binary()), cache :: gb_trees:tree(binary(), binary()),
total_size=0 :: integer(), total_size=0 :: integer(),
count=0 :: integer(), count=0 :: integer(),
last_sync=now() :: erlang:timestamp(), last_sync=?TIMESTAMP :: erlang:timestamp(),
min_level :: integer(), min_level :: integer(),
max_level :: integer(), max_level :: integer(),
config=[] :: [{atom(), term()}], config=[] :: [{atom(), term()}],

View file

@ -1,4 +1,4 @@
%% The contents of this file are subject to the Erlang Public License, Version % The contents of this file are subject to the Erlang Public License, Version
%% 1.1, (the "License"); you may not use this file except in compliance with %% 1.1, (the "License"); you may not use this file except in compliance with
%% the License. You should have received a copy of the Erlang Public License %% the License. You should have received a copy of the Erlang Public License
%% along with this software. If not, it can be retrieved via the world wide web %% along with this software. If not, it can be retrieved via the world wide web
@ -41,7 +41,11 @@
-define(W, 27). -define(W, 27).
-ifdef(pre18).
-type bitmask() :: array() | any(). -type bitmask() :: array() | any().
-else.
-type bitmask() :: arrays:array() | any().
-endif.
-record(bloom, { -record(bloom, {
e :: float(), % error probability e :: float(), % error probability
@ -216,7 +220,11 @@ bitmask_get(I, BM) ->
dense_bitmap -> hanoidb_dense_bitmap:member(I, BM) dense_bitmap -> hanoidb_dense_bitmap:member(I, BM)
end. end.
-ifdef(pre18).
-spec as_array(bitmask()) -> array(). -spec as_array(bitmask()) -> array().
-else.
-spec as_array(bitmask()) -> arrays:array().
-endif.
as_array(BM) -> as_array(BM) ->
case array:is_array(BM) of case array:is_array(BM) of
true -> BM true -> BM
@ -225,7 +233,12 @@ as_array(BM) ->
%%%========== Bitarray representation - suitable for sparse arrays ========== %%%========== Bitarray representation - suitable for sparse arrays ==========
bitarray_new(N) -> array:new((N-1) div ?W + 1, {default, 0}). bitarray_new(N) -> array:new((N-1) div ?W + 1, {default, 0}).
-ifdef(pre18).
-spec bitarray_set( non_neg_integer(), array() ) -> array(). -spec bitarray_set( non_neg_integer(), array() ) -> array().
-else.
-spec bitarray_set( non_neg_integer(), arrays:array() ) -> arrays:array().
-endif.
bitarray_set(I, A1) -> bitarray_set(I, A1) ->
A = as_array(A1), A = as_array(A1),
AI = I div ?W, AI = I div ?W,
@ -235,7 +248,11 @@ bitarray_set(I, A1) ->
true -> array:set(AI, V1, A) true -> array:set(AI, V1, A)
end. end.
-ifdef(pre18).
-spec bitarray_get( non_neg_integer(), array() ) -> boolean(). -spec bitarray_get( non_neg_integer(), array() ) -> boolean().
-else.
-spec bitarray_get( non_neg_integer(), arrays:array() ) -> boolean().
-endif.
bitarray_get(I, A) -> bitarray_get(I, A) ->
AI = I div ?W, AI = I div ?W,
V = array:get(AI, A), V = array:get(AI, A),

View file

@ -47,9 +47,15 @@
next_state/3, postcondition/3, next_state/3, postcondition/3,
precondition/2]). precondition/2]).
-record(tree, { elements = dict:new() :: dict() }). -ifdef(pre18).
-record(state, { open = dict:new() :: dict(), -define(OTP_DICT, dict()).
closed = dict:new() :: dict()}). -else.
-define(OTP_DICT, dict:dict()).
-endif.
-record(tree, { elements = dict:new() :: ?OTP_DICT }).
-record(state, { open = dict:new() :: ?OTP_DICT,
closed = dict:new() :: ?OTP_DICT}).
-define(SERVER, hanoidb_drv). -define(SERVER, hanoidb_drv).
full_test_() -> full_test_() ->