give macros to reset and update chain of attvars in term copy.

This commit is contained in:
Vitor Santos Costa
2010-03-15 14:19:45 +00:00
parent cfc0a23953
commit 54c0209d3a
2 changed files with 33 additions and 1 deletions

View File

@@ -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)
{