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
|
EXTERN inline
|
||||||
Int Yap_unify(Term t0, Term t1)
|
Int Yap_unify(Term t0, Term t1)
|
||||||
{
|
{
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 99090acf47044ad4a6dc78da634668bdc2bae485
|
Subproject commit 91ad6583a1387ad6c645c46f258fd671d92fe9fb
|
Reference in New Issue
Block a user