This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/CHR/chr/getval.pl

53 lines
910 B
Perl
Raw Normal View History

%
% We use macros because because the
% bb operations are module specific.
% Thus the names are relative to the module
% loading this file
%
:- module( getval, []).
:- multifile
user:goal_expansion/3.
:- dynamic
user:goal_expansion/3.
user:goal_expansion( setval(Name,Value), _, bb_put(Name,Value)).
user:goal_expansion( getval(Name,Value), _, bb_get(Name,Value)).
user:goal_expansion( incval(Name,New), _, Exp) :-
Exp = (
bb_get( Name, Old),
New is Old+1,
bb_put( Name, New)
).
user:goal_expansion( decval(Name,New), _, Exp) :-
Exp = (
bb_get( Name, Old),
New is Old-1,
bb_put( Name, New)
).
end_of_file.
setval( Name, Value) :- bb_put( Name, Value).
getval( Name, Value) :- bb_get( Name, Value).
%
% ++i
%
incval( Name, New) :-
bb_get( Name, O),
New is O+1,
bb_put( Name, New).
%
% --i
%
decval( Name, New) :-
bb_get( Name, O),
New is O-1,
bb_put( Name, New).