#include "structures.h" extern SystemCallDescriptor sys_preds[]; extern int SysCount; /* ============================================================ | GetSysDescriptor() | |----------------------------------------------------------| | Params : 1)a functor | | | | Returns: The pointer to the descriptor of the system | | predicate, if functor is a system predicate. | | NULL otherwise | |==========================================================| */ SystemCallDescriptor *GetSysDescriptor(int functor) { int k,i=0,j=SysCount; SystemCallDescriptor *res=NULL; while(j-i>0 && res==NULL) { k=i+(j-i)/2; if(sys_preds[k].functor==functor) res=&sys_preds[k]; else if (sys_preds[k].functorargument_array[0], vars); struct list *result=NULL; struct term *res=(d->funct)(input); if(res!=NULL) { var_array *local_vars=create_vars(vars->length); int match_status; g->garbage_vars=cons(local_vars,g->garbage_vars); copy_vars(vars,local_vars); match_status=match(res, call_t->argument_array[call_t->arity-1], local_vars); if (match_status==SUCCESS) result=g_cons(local_vars,NULL,g); else result=NULL; } else result=NULL; free(input); return result; }