:- use_module(library(error), [can_be/2,domain_error/3]).
+
+:- meta_predicate call_cleanup(0, 0).
+
+:- meta_predicate setup_call_cleanup(0, 0, 0).
+
+
forall(Generate, Test) :-
\+ (Generate, \+ Test).
bb_b_put(Key, NewValue) :-
( '$bb_get_with_offset'(Key, OldValue, OldOffset) ->
- call_cleanup((iso_ext:store_global_var_with_offset(Key, NewValue) ; false),
+ call_cleanup((store_global_var_with_offset(Key, NewValue) ; false),
reset_global_var_at_offset(Key, OldValue, OldOffset))
- ; call_cleanup((iso_ext:store_global_var_with_offset(Key, NewValue) ; false),
+ ; call_cleanup((store_global_var_with_offset(Key, NewValue) ; false),
reset_global_var_at_key(Key))
).
bb_get(Key, _) :- throw(error(type_error(atom, Key), bb_get/2)).
-:- meta_predicate call_cleanup(0, 0).
-
call_cleanup(G, C) :- setup_call_cleanup(true, G, C).
% setup_call_cleanup.
-:- meta_predicate setup_call_cleanup(0, 0, 0).
-
setup_call_cleanup(S, G, C) :-
'$get_b_value'(B),
call(S),