give macros to reset and update chain of attvars in term copy.
This commit is contained in:
parent
cfc0a23953
commit
54c0209d3a
32
H/amiops.h
32
H/amiops.h
@ -436,6 +436,38 @@ reset_trail(tr_fr_ptr TR0) {
|
||||
}
|
||||
}
|
||||
|
||||
inline EXTERN void
|
||||
reset_attvars(CELL *dvarsmin, CELL *dvarsmax) {
|
||||
if (dvarsmin) {
|
||||
dvarsmin += 1;
|
||||
do {
|
||||
CELL *newv;
|
||||
newv = CellPtr(*dvarsmin);
|
||||
RESET_VARIABLE(dvarsmin+1);
|
||||
if (IsUnboundVar(dvarsmin))
|
||||
break;
|
||||
RESET_VARIABLE(dvarsmin);
|
||||
dvarsmin = newv;
|
||||
} while (TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
inline EXTERN void
|
||||
close_attvar_chain(CELL *dvarsmin, CELL *dvarsmax) {
|
||||
if (dvarsmin) {
|
||||
dvarsmin += 1;
|
||||
do {
|
||||
CELL *newv;
|
||||
Bind(dvarsmin+1, dvarsmin[1]);
|
||||
if (IsUnboundVar(dvarsmin))
|
||||
break;
|
||||
newv = CellPtr(*dvarsmin);
|
||||
RESET_VARIABLE(dvarsmin);
|
||||
dvarsmin = newv;
|
||||
} while (TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
EXTERN inline
|
||||
Int Yap_unify(Term t0, Term t1)
|
||||
{
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 99090acf47044ad4a6dc78da634668bdc2bae485
|
||||
Subproject commit 91ad6583a1387ad6c645c46f258fd671d92fe9fb
|
Reference in New Issue
Block a user