| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | src/ataxic.erl | 31 | 
1 files changed, 14 insertions, 17 deletions
| diff --git a/src/ataxic.erl b/src/ataxic.erl index 7dda875..5c5698b 100644 --- a/src/ataxic.erl +++ b/src/ataxic.erl @@ -7,6 +7,7 @@  %%%% BASIC OP %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%% Select  -record(field, {ix :: non_neg_integer(), op :: basic()}). +-record(upfield, {ix :: non_neg_integer(), op :: basic()}).  %%%% Sequence of instructions  -record(seq, {ops :: list(basic())}). @@ -57,7 +58,8 @@  -export  (     [ -      on_field/2, +      update_field/2, +      field/2,        apply_function/3,        sequence/1,        constant/1, @@ -89,8 +91,10 @@  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -spec basic_apply_to (basic(), any()) -> any(). -basic_apply_to (#field{ ix = IX, op = OP}, Val) -> +basic_apply_to (#upfield{ ix = IX, op = OP}, Val) ->     setelement(IX, Val, basic_apply_to(OP, element(IX, Val))); +basic_apply_to (#field{ ix = IX, op = OP}, Val) -> +   basic_apply_to(OP, element(IX, Val));  basic_apply_to (#apply_fun{ module = M, function = F, params = P }, Val) ->     erlang:apply     ( @@ -130,8 +134,11 @@ basic_apply_to (#neg{ param = V }, _Val) ->  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec on_field (non_neg_integer(), basic()) -> basic(). -on_field (IX, OP) -> #field{ ix = IX, op = OP }. +-spec update_field (non_neg_integer(), basic()) -> basic(). +update_field (IX, OP) -> #upfield{ ix = IX, op = OP }. + +-spec field (non_neg_integer(), basic()) -> basic(). +field (IX, OP) -> #field{ ix = IX, op = OP }.  -spec sequence (list(basic())) -> basic().  sequence (List) -> #seq{ ops = List }. @@ -207,19 +214,9 @@ apply_to (#value{ op = OP }, Entry) ->  apply_to (#mseq { ops = List }, Entry) ->     lists:foldl(fun apply_to/2, Entry, List). --spec matches (meta(), ataxia_entry:type()) -> boolean(). -matches (#read_perm{ op = OP }, Entry) -> -   case basic_apply_to(OP, ataxia_entry:get_read_permission(Entry)) of -      true -> true; -      _ -> false -   end; -matches (#write_perm{ op = OP }, Entry) -> -   case basic_apply_to(OP, ataxia_entry:get_write_permission(Entry)) of -      true -> true; -      _ -> false -   end; -matches (#value{ op = OP }, Entry) -> -   case basic_apply_to(OP, ataxia_entry:get_value(Entry)) of +-spec matches (basic(), ataxia_entry:type()) -> boolean(). +matches (OP, Entry) -> +   case basic_apply_to(OP, Entry) of        true -> true;        _ -> false     end. | 


