20#ifndef YAPCOMPOUNDTERM_H
22#define YAPCOMPOUNDTERM_H 1
24#include "inline-only.h"
26EXTERN
bool Yap_unify(Term a, Term b);
28INLINE_ONLY Term Deref(Term a);
30INLINE_ONLY Term Deref(Term a) {
31 while (IsVarTerm(a)) {
42INLINE_ONLY CELL *GetTermAdress(Term a);
45INLINE_ONLY Term Derefa(CELL *b) {
50 }
else if (a == (CELL)b) {
59INLINE_ONLY Term ArgOfTerm(
int i, Term t);
61INLINE_ONLY Term ArgOfTerm(
int i, Term t)
64 return (Term)(Derefa(RepAppl(t) + (i)));
67INLINE_ONLY Term HeadOfTerm(Term);
69INLINE_ONLY Term HeadOfTerm(Term t) {
70 return (Term)(Derefa(RepPair(t)));
73INLINE_ONLY Term TailOfTerm(Term);
75INLINE_ONLY Term TailOfTerm(Term t) {
76 return (Term)(Derefa(RepPair(t) + 1));
79INLINE_ONLY Term ArgOfTermCell(
int i, Term t);
81INLINE_ONLY Term ArgOfTermCell(
int i, Term t) {
82 return (Term)((CELL)(RepAppl(t) + (i)));
85INLINE_ONLY Term HeadOfTermCell(Term);
87INLINE_ONLY Term HeadOfTermCell(Term t) {
88 return (Term)((CELL)(RepPair(t)));
91INLINE_ONLY Term TailOfTermCell(Term);
93INLINE_ONLY Term TailOfTermCell(Term t) {
94 return (Term)((CELL)(RepPair(t) + 1));