current_predicate

This commit is contained in:
Vítor Santos Costa
2016-01-08 03:18:36 +00:00
parent bdb2f0562a
commit 1a23e47316
5 changed files with 37 additions and 59 deletions

View File

@@ -878,13 +878,20 @@ static Int
}
static bool valid_prop(Prop p, Term task) {
if (RepPredProp(p)->OpcodeOfPred == UNDEF_OPCODE)
if ((RepPredProp(p)->PredFlags & HiddenPredFlag) ||
(RepPredProp(p)->OpcodeOfPred == UNDEF_OPCODE) ){
return false;
if ((RepPredProp(p)->PredFlags & (HiddenPredFlag | StandardPredFlag))) {
return (task == SYSTEM_MODULE || task == TermTrue || IsVarTerm(task));
} else {
return (task == USER_MODULE || task == TermTrue || IsVarTerm(task));
}
if(task == TermSystem || task == TermProlog) {
return RepPredProp(p)->PredFlags & StandardPredFlag;
}
if(task == TermUser) {
return !(RepPredProp(p)->PredFlags & StandardPredFlag);
}
if (IsVarTerm(task)) {
return true;
}
return false;
}
static PropEntry *followLinkedListOfProps(PropEntry *p, Term task) {