del_attrs/1 (for SWI compatibility).
This commit is contained in:
parent
9e5a25c61e
commit
8f41517e24
25
C/attvar.c
25
C/attvar.c
@ -357,6 +357,15 @@ DelAtts(attvar_record *attv, Term oatt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
DelAllAtts(attvar_record *attv)
|
||||||
|
{
|
||||||
|
if (RepAppl(attv->Atts) >= HB)
|
||||||
|
RESET_VARIABLE(&attv->Atts);
|
||||||
|
else
|
||||||
|
MaBind(&(attv->Atts), MkVarTerm());
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
PutAtt(Int pos, Term atts, Term att)
|
PutAtt(Int pos, Term atts, Term att)
|
||||||
{
|
{
|
||||||
@ -638,6 +647,21 @@ p_del_atts(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Int
|
||||||
|
p_del_all_atts(void) {
|
||||||
|
/* receive a variable in ARG1 */
|
||||||
|
Term inp = Deref(ARG1);
|
||||||
|
|
||||||
|
/* if this is unbound, ok */
|
||||||
|
if (IsVarTerm(inp) && IsAttachedTerm(inp)) {
|
||||||
|
attvar_record *attv;
|
||||||
|
|
||||||
|
attv = (attvar_record *)VarOfTerm(inp);
|
||||||
|
DelAllAtts(attv);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static Int
|
static Int
|
||||||
p_get_att(void) {
|
p_get_att(void) {
|
||||||
/* receive a variable in ARG1 */
|
/* receive a variable in ARG1 */
|
||||||
@ -1010,6 +1034,7 @@ void Yap_InitAttVarPreds(void)
|
|||||||
Yap_InitCPred("put_att_term", 2, p_put_att_term, 0);
|
Yap_InitCPred("put_att_term", 2, p_put_att_term, 0);
|
||||||
Yap_InitCPred("put_module_atts", 2, p_put_atts, 0);
|
Yap_InitCPred("put_module_atts", 2, p_put_atts, 0);
|
||||||
Yap_InitCPred("del_all_module_atts", 2, p_del_atts, 0);
|
Yap_InitCPred("del_all_module_atts", 2, p_del_atts, 0);
|
||||||
|
Yap_InitCPred("del_all_atts", 1, p_del_all_atts, 0);
|
||||||
Yap_InitCPred("rm_att", 4, p_rm_att, 0);
|
Yap_InitCPred("rm_att", 4, p_rm_att, 0);
|
||||||
Yap_InitCPred("bind_attvar", 1, p_bind_attvar, SafePredFlag);
|
Yap_InitCPred("bind_attvar", 1, p_bind_attvar, SafePredFlag);
|
||||||
Yap_InitCPred("unbind_attvar", 1, p_unbind_attvar, SafePredFlag);
|
Yap_InitCPred("unbind_attvar", 1, p_unbind_attvar, SafePredFlag);
|
||||||
|
@ -284,6 +284,9 @@ prolog:del_attr(Var, Mod) :-
|
|||||||
functor(AttTerm, Mod, 2),
|
functor(AttTerm, Mod, 2),
|
||||||
attributes:del_all_module_atts(Var, AttTerm).
|
attributes:del_all_module_atts(Var, AttTerm).
|
||||||
|
|
||||||
|
prolog:del_attrs(Var) :-
|
||||||
|
attributes:del_all_atts(Var).
|
||||||
|
|
||||||
prolog:get_attrs(AttVar, SWIAtts) :-
|
prolog:get_attrs(AttVar, SWIAtts) :-
|
||||||
get_all_swi_atts(AttVar,SWIAtts).
|
get_all_swi_atts(AttVar,SWIAtts).
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user