some fixes in info
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@507 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
c80ac669de
commit
c5e66af5d1
@ -46,8 +46,7 @@ typedef struct PropEntryStruct *Prop;
|
||||
/* I can only define the structure after I define the actual atoms */
|
||||
|
||||
/* atom structure */
|
||||
typedef struct AtomEntryStruct
|
||||
{
|
||||
typedef struct AtomEntryStruct {
|
||||
Atom NextOfAE; /* used to build hash chains */
|
||||
Prop PropsOfAE; /* property list for this atom */
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
@ -79,12 +78,10 @@ AtomEntry;
|
||||
typedef SFLAGS PropFlags;
|
||||
|
||||
/* basic property entry structure */
|
||||
typedef struct PropEntryStruct
|
||||
{
|
||||
typedef struct PropEntryStruct {
|
||||
Prop NextOfPE; /* used to chain properties */
|
||||
PropFlags KindOfPE; /* kind of property */
|
||||
}
|
||||
PropEntry;
|
||||
} PropEntry;
|
||||
|
||||
/* ************************* Functors **********************************/
|
||||
|
||||
@ -100,8 +97,7 @@ PropEntry;
|
||||
#define FunctorProperty ((PropFlags)(0xbb00))
|
||||
|
||||
/* functor property */
|
||||
typedef struct FunctorEntryStruct
|
||||
{
|
||||
typedef struct FunctorEntryStruct {
|
||||
Prop NextOfPE; /* used to chain properties */
|
||||
PropFlags KindOfPE; /* kind of property */
|
||||
unsigned int ArityOfFE; /* arity of functor */
|
||||
@ -110,7 +106,7 @@ typedef struct FunctorEntryStruct
|
||||
#if defined(YAPOR) || defined(THREADS)
|
||||
rwlock_t FRWLock;
|
||||
#endif
|
||||
}
|
||||
FunctorEntry;
|
||||
} FunctorEntry;
|
||||
|
||||
typedef FunctorEntry *Functor;
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
* Last rev: December 90 *
|
||||
* mods: *
|
||||
* comments: Tag Scheme for machines with 24 bits adresses (m68000) *
|
||||
* version: $Id: Tags_24bits.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: Tags_24bits.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
/* Version for 24 bit addresses (68000)
|
||||
|
@ -18,7 +18,7 @@
|
||||
* Last rev: December 90 *
|
||||
* mods: *
|
||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
||||
* version: $Id: Tags_32LowTag.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: Tags_32LowTag.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#define TAG_LOW_BITS_32 1
|
||||
@ -72,10 +72,10 @@ property list
|
||||
#define NumberBits /* 0x0000000aL */ MKTAG(0x2,2)
|
||||
#define NumberMask /* 0x0000000bL */ MKTAG(0x2,3)
|
||||
|
||||
#define NonTagPart(V) (Unsigned(V)>>(SHIFT_LOW_TAG+SHIFT_HIGH_TAG))
|
||||
#define NonTagPart(V) ((Unsigned(V)>>1) & ~LowTagBits)
|
||||
#define TAGGED(TAG,V) (((Unsigned(V)<<(SHIFT_HIGH_TAG+SHIFT_LOW_TAG+1))>>1)|(TAG))
|
||||
#define NONTAGGED(TAG,V) ((Unsigned(V)<<(SHIFT_HIGH_TAG+SHIFT_LOW_TAG+1))>>1)
|
||||
#define TAGGEDA(TAG,V) ((Unsigned(V) << (SHIFT_HIGH_TAG+SHIFT_LOW_TAG))|(TAG))
|
||||
#define TAGGEDA(TAG,V) ((Unsigned(V) << 1)|(TAG))
|
||||
#define CHKTAG(t,Tag) ((Unsigned(t)&TagBits)==Tag)
|
||||
|
||||
/* bits that should not be used by anyone but us */
|
||||
|
@ -18,7 +18,7 @@
|
||||
* Last rev: December 90 *
|
||||
* mods: *
|
||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
||||
* version: $Id: Tags_32Ops.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: Tags_32Ops.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
/*
|
||||
|
@ -18,7 +18,7 @@
|
||||
* Last rev: December 90 *
|
||||
* mods: *
|
||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
||||
* version: $Id: Tags_32bits.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: Tags_32bits.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
/* Original version for 32 bit addresses machines,
|
||||
|
@ -18,7 +18,7 @@
|
||||
* Last rev: December 90 *
|
||||
* mods: *
|
||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
||||
* version: $Id: Tags_64bits.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: Tags_64bits.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#define TAG_64BITS 1
|
||||
|
@ -17,7 +17,7 @@
|
||||
* File: TermExt.h *
|
||||
* mods: *
|
||||
* comments: Extensions to standard terms for YAP *
|
||||
* version: $Id: TermExt.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: TermExt.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#if USE_OFFSETS
|
||||
|
304
VC/include/Yap.h
304
VC/include/Yap.h
@ -17,7 +17,7 @@
|
||||
* File: Yap.h.m4 *
|
||||
* mods: *
|
||||
* comments: main header file for YAP *
|
||||
* version: $Id: Yap.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ *
|
||||
* version: $Id: Yap.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
@ -239,7 +239,6 @@ extern char Option[20];
|
||||
#endif
|
||||
|
||||
#if !IN_SECOND_QUADRANT
|
||||
#define USE_OFFSETS 1
|
||||
#if __linux__ || __FreeBSD__ || __NetBSD__ || mips || __APPLE__
|
||||
#if defined(YAPOR) && defined(__alpha)
|
||||
#define MMAP_ADDR 0x40000000
|
||||
@ -250,18 +249,18 @@ extern char Option[20];
|
||||
#else
|
||||
#define MMAP_ADDR 0x09000000
|
||||
#endif
|
||||
#elif __svr4__
|
||||
#elif __svr4__ || defined(__SVR4)
|
||||
#define MMAP_ADDR 0x02000000
|
||||
#elif _WIN32
|
||||
#elif defined(_WIN32) || defined(__CYGWIN__)
|
||||
#define MMAP_ADDR 0x30000000L
|
||||
#endif
|
||||
#endif /* !IN_SECOND_QUADRANT */
|
||||
|
||||
#if defined(MMAP_ADDR) && (HAVE_MMAP || HAVE_SHMAT || _WIN32) && !__simplescalar__
|
||||
#if defined(MMAP_ADDR) && (USE_MMAP || USE_SHMAT || _WIN32) && !__simplescalar__
|
||||
#define HEAP_INIT_BASE (MMAP_ADDR)
|
||||
#define AtomBase ((char *)MMAP_ADDR)
|
||||
#else
|
||||
#define HEAP_INIT_BASE (HeapBase)
|
||||
#define HEAP_INIT_BASE ((CELL)HeapBase)
|
||||
#define AtomBase (HeapBase)
|
||||
#endif
|
||||
|
||||
@ -393,9 +392,8 @@ extern sigjmp_buf RestartEnv; /* used to restart after an abort */
|
||||
/************ variables concerned with Error Handling *************/
|
||||
|
||||
/* Types of Errors */
|
||||
typedef enum
|
||||
{
|
||||
NO_ERROR,
|
||||
typedef enum {
|
||||
YAP_NO_ERROR,
|
||||
FATAL_ERROR,
|
||||
INTERNAL_ERROR,
|
||||
PURE_ABORT,
|
||||
@ -469,15 +467,13 @@ typedef enum
|
||||
TYPE_ERROR_UBYTE,
|
||||
TYPE_ERROR_VARIABLE,
|
||||
UNKNOWN_ERROR
|
||||
}
|
||||
yap_error_number;
|
||||
} yap_error_number;
|
||||
|
||||
extern char *ErrorMessage; /* used to pass error messages */
|
||||
extern Term Error_Term; /* used to pass error terms */
|
||||
extern yap_error_number Error_TYPE; /* used to pass the error */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
typedef enum {
|
||||
YAP_INT_BOUNDED_FLAG = 0,
|
||||
MAX_ARITY_FLAG = 1,
|
||||
INTEGER_ROUNDING_FLAG = 2,
|
||||
@ -495,8 +491,7 @@ typedef enum
|
||||
ALLOW_ASSERTING_STATIC_FLAG = 14,
|
||||
HALT_AFTER_CONSULT_FLAG = 15,
|
||||
FAST_BOOT_FLAG = 16
|
||||
}
|
||||
yap_flags;
|
||||
} yap_flags;
|
||||
|
||||
#define STRING_AS_CHARS 0
|
||||
#define STRING_AS_ATOM 2
|
||||
@ -524,46 +519,46 @@ yap_flags;
|
||||
/***********************************************************************/
|
||||
|
||||
/*
|
||||
absrectype Term = Int + Float + Atom + Pair + Appl + Ref + Var
|
||||
absrectype Term = Int + Float + Atom + Pair + Appl + Ref + Var
|
||||
|
||||
with AbsAppl(t) : *CELL -> Term
|
||||
and RepAppl(t) : Term -> *CELL
|
||||
with AbsAppl(t) : *CELL -> Term
|
||||
and RepAppl(t) : Term -> *CELL
|
||||
|
||||
and AbsPair(t) : *CELL -> Term
|
||||
and RepPair(t) : Term -> *CELL
|
||||
and AbsPair(t) : *CELL -> Term
|
||||
and RepPair(t) : Term -> *CELL
|
||||
|
||||
and IsIntTerm(t) = ...
|
||||
and IsAtomTerm(t) = ...
|
||||
and IsVarTerm(t) = ...
|
||||
and IsPairTerm(t) = ...
|
||||
and IsApplTerm(t) = ...
|
||||
and IsFloatTerm(t) = ...
|
||||
and IsRefTerm(t) = ...
|
||||
and IsNonVarTerm(t) = ! IsVar(t)
|
||||
and IsNumterm(t) = IsIntTerm(t) || IsFloatTerm(t)
|
||||
and IsAtomicTerm(t) = IsNumTerm(t) || IsAtomTerm(t)
|
||||
and IsPrimitiveTerm(t) = IsAtomicTerm(t) || IsRefTerm(t)
|
||||
and IsIntTerm(t) = ...
|
||||
and IsAtomTerm(t) = ...
|
||||
and IsVarTerm(t) = ...
|
||||
and IsPairTerm(t) = ...
|
||||
and IsApplTerm(t) = ...
|
||||
and IsFloatTerm(t) = ...
|
||||
and IsRefTerm(t) = ...
|
||||
and IsNonVarTerm(t) = ! IsVar(t)
|
||||
and IsNumterm(t) = IsIntTerm(t) || IsFloatTerm(t)
|
||||
and IsAtomicTerm(t) = IsNumTerm(t) || IsAtomTerm(t)
|
||||
and IsPrimitiveTerm(t) = IsAtomicTerm(t) || IsRefTerm(t)
|
||||
|
||||
and MkIntTerm(n) = ...
|
||||
and MkFloatTerm(f) = ...
|
||||
and MkAtomTerm(a) = ...
|
||||
and MkVarTerm(r) = ...
|
||||
and MkApplTerm(f,n,args) = ...
|
||||
and MkPairTerm(hd,tl) = ...
|
||||
and MkRefTerm(R) = ...
|
||||
and MkIntTerm(n) = ...
|
||||
and MkFloatTerm(f) = ...
|
||||
and MkAtomTerm(a) = ...
|
||||
and MkVarTerm(r) = ...
|
||||
and MkApplTerm(f,n,args) = ...
|
||||
and MkPairTerm(hd,tl) = ...
|
||||
and MkRefTerm(R) = ...
|
||||
|
||||
and PtrOfTerm(t) : Term -> CELL * = ...
|
||||
and IntOfTerm(t) : Term -> int = ...
|
||||
and FloatOfTerm(t) : Term -> flt = ...
|
||||
and AtomOfTerm(t) : Term -> Atom = ...
|
||||
and VarOfTerm(t) : Term -> *Term = ....
|
||||
and HeadOfTerm(t) : Term -> Term = ...
|
||||
and TailOfTerm(t) : Term -> Term = ...
|
||||
and FunctorOfTerm(t) : Term -> Functor = ...
|
||||
and ArgOfTerm(i,t) : Term -> Term= ...
|
||||
and RefOfTerm(t) : Term -> DBRef = ...
|
||||
and PtrOfTerm(t) : Term -> CELL * = ...
|
||||
and IntOfTerm(t) : Term -> int = ...
|
||||
and FloatOfTerm(t) : Term -> flt = ...
|
||||
and AtomOfTerm(t) : Term -> Atom = ...
|
||||
and VarOfTerm(t) : Term -> *Term = ....
|
||||
and HeadOfTerm(t) : Term -> Term = ...
|
||||
and TailOfTerm(t) : Term -> Term = ...
|
||||
and FunctorOfTerm(t) : Term -> Functor = ...
|
||||
and ArgOfTerm(i,t) : Term -> Term= ...
|
||||
and RefOfTerm(t) : Term -> DBRef = ...
|
||||
|
||||
*/
|
||||
*/
|
||||
|
||||
/*
|
||||
YAP can use several different tag schemes, according to the kind of
|
||||
@ -628,12 +623,20 @@ yap_flags;
|
||||
|
||||
#define TermSize sizeof(Term)
|
||||
|
||||
/************* variables related to memory allocation *******************/
|
||||
/* must be before TermExt.h */
|
||||
extern ADDR HeapBase,
|
||||
LocalBase,
|
||||
GlobalBase,
|
||||
TrailBase, TrailTop,
|
||||
ForeignCodeBase, ForeignCodeTop, ForeignCodeMax;
|
||||
|
||||
|
||||
/* applies to unbound variables */
|
||||
|
||||
inline EXTERN Term *VarOfTerm (Term t);
|
||||
inline EXTERN Term * VarOfTerm(Term t);
|
||||
|
||||
inline EXTERN Term *
|
||||
VarOfTerm (Term t)
|
||||
inline EXTERN Term * VarOfTerm(Term t)
|
||||
{
|
||||
return (Term *) (t);
|
||||
}
|
||||
@ -641,20 +644,18 @@ VarOfTerm (Term t)
|
||||
|
||||
#if SBA
|
||||
|
||||
inline EXTERN Term MkVarTerm (void);
|
||||
inline EXTERN Term MkVarTerm(void);
|
||||
|
||||
inline EXTERN Term
|
||||
MkVarTerm ()
|
||||
inline EXTERN Term MkVarTerm()
|
||||
{
|
||||
return (Term) ((*H = 0, H++));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN int IsUnboundVar (Term);
|
||||
inline EXTERN int IsUnboundVar(Term);
|
||||
|
||||
inline EXTERN int
|
||||
IsUnboundVar (Term t)
|
||||
inline EXTERN int IsUnboundVar(Term t)
|
||||
{
|
||||
return (int) (t == 0);
|
||||
}
|
||||
@ -662,108 +663,77 @@ IsUnboundVar (Term t)
|
||||
|
||||
#else
|
||||
|
||||
inline EXTERN Term MkVarTerm (void);
|
||||
inline EXTERN Term MkVarTerm(void);
|
||||
|
||||
inline EXTERN Term
|
||||
MkVarTerm ()
|
||||
inline EXTERN Term MkVarTerm()
|
||||
{
|
||||
return (Term) ((*H = (CELL) H, H++));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN int IsUnboundVar (Term);
|
||||
inline EXTERN int IsUnboundVar(Term);
|
||||
|
||||
inline EXTERN int
|
||||
IsUnboundVar (Term t)
|
||||
inline EXTERN int IsUnboundVar(Term t)
|
||||
{
|
||||
return (int) (*VarOfTerm (t) == (t));
|
||||
return (int) (*VarOfTerm(t) == (t));
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
inline EXTERN CELL *PtrOfTerm (Term);
|
||||
inline EXTERN CELL * PtrOfTerm(Term);
|
||||
|
||||
inline EXTERN CELL *
|
||||
PtrOfTerm (Term t)
|
||||
inline EXTERN CELL * PtrOfTerm(Term t)
|
||||
{
|
||||
return (CELL *) (*(CELL *) (t));
|
||||
return (CELL *) (*(CELL *)(t));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline EXTERN Functor FunctorOfTerm (Term);
|
||||
inline EXTERN Functor FunctorOfTerm(Term);
|
||||
|
||||
inline EXTERN Functor
|
||||
FunctorOfTerm (Term t)
|
||||
inline EXTERN Functor FunctorOfTerm(Term t)
|
||||
{
|
||||
return (Functor) (*RepAppl (t));
|
||||
}
|
||||
|
||||
|
||||
#if IN_SECOND_QUADRANT
|
||||
|
||||
inline EXTERN Term MkAtomTerm (Atom);
|
||||
|
||||
inline EXTERN Term
|
||||
MkAtomTerm (Atom a)
|
||||
{
|
||||
return (Term) (TAGGEDA (AtomTag, (CELL *) (a) - (CELL *) HEAP_INIT_BASE));
|
||||
return (Functor) (*RepAppl(t));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Atom AtomOfTerm (Term t);
|
||||
inline EXTERN Term MkAtomTerm(Atom);
|
||||
|
||||
inline EXTERN Atom
|
||||
AtomOfTerm (Term t)
|
||||
inline EXTERN Term MkAtomTerm(Atom a)
|
||||
{
|
||||
return (Atom) ((CELL *) HEAP_INIT_BASE + NonTagPart (t));
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
inline EXTERN Term MkAtomTerm (Atom);
|
||||
|
||||
inline EXTERN Term
|
||||
MkAtomTerm (Atom a)
|
||||
{
|
||||
return (Term) (TAGGEDA (AtomTag, (a)));
|
||||
return (Term) (TAGGEDA(AtomTag, (CELL)(a)-HEAP_INIT_BASE));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Atom AtomOfTerm (Term t);
|
||||
inline EXTERN Atom AtomOfTerm(Term t);
|
||||
|
||||
inline EXTERN Atom
|
||||
AtomOfTerm (Term t)
|
||||
inline EXTERN Atom AtomOfTerm(Term t)
|
||||
{
|
||||
return (Atom) (NonTagPart (t));
|
||||
return (Atom) (HEAP_INIT_BASE+NonTagPart(t));
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
inline EXTERN int IsAtomTerm (Term);
|
||||
inline EXTERN int IsAtomTerm(Term);
|
||||
|
||||
inline EXTERN int
|
||||
IsAtomTerm (Term t)
|
||||
inline EXTERN int IsAtomTerm(Term t)
|
||||
{
|
||||
return (int) (CHKTAG ((t), AtomTag));
|
||||
return (int) (CHKTAG((t), AtomTag));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term MkIntTerm (Int);
|
||||
inline EXTERN Term MkIntTerm(Int);
|
||||
|
||||
inline EXTERN Term
|
||||
MkIntTerm (Int n)
|
||||
inline EXTERN Term MkIntTerm(Int n)
|
||||
{
|
||||
return (Term) (TAGGED (NumberTag, (n)));
|
||||
return (Term) (TAGGED(NumberTag, (n)));
|
||||
}
|
||||
|
||||
|
||||
@ -772,22 +742,20 @@ MkIntTerm (Int n)
|
||||
overflow problems are possible
|
||||
*/
|
||||
|
||||
inline EXTERN Term MkIntConstant (Int);
|
||||
inline EXTERN Term MkIntConstant(Int);
|
||||
|
||||
inline EXTERN Term
|
||||
MkIntConstant (Int n)
|
||||
inline EXTERN Term MkIntConstant(Int n)
|
||||
{
|
||||
return (Term) (NONTAGGED (NumberTag, (n)));
|
||||
return (Term) (NONTAGGED(NumberTag, (n)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN int IsIntTerm (Term);
|
||||
inline EXTERN int IsIntTerm(Term);
|
||||
|
||||
inline EXTERN int
|
||||
IsIntTerm (Term t)
|
||||
inline EXTERN int IsIntTerm(Term t)
|
||||
{
|
||||
return (int) (CHKTAG ((t), NumberTag));
|
||||
return (int) (CHKTAG((t), NumberTag));
|
||||
}
|
||||
|
||||
|
||||
@ -812,14 +780,6 @@ IsIntTerm (Term t)
|
||||
#endif
|
||||
|
||||
|
||||
/************* variables related to memory allocation *******************/
|
||||
/* must be before TermExt.h */
|
||||
extern ADDR HeapBase,
|
||||
LocalBase,
|
||||
GlobalBase,
|
||||
TrailBase, TrailTop, ForeignCodeBase, ForeignCodeTop, ForeignCodeMax;
|
||||
|
||||
|
||||
/*
|
||||
There are two types of functors:
|
||||
|
||||
@ -835,32 +795,29 @@ extern ADDR HeapBase,
|
||||
#define IsAccessFunc(func) ((func) == FunctorAccess)
|
||||
|
||||
|
||||
inline EXTERN Term MkIntegerTerm (Int);
|
||||
inline EXTERN Term MkIntegerTerm(Int);
|
||||
|
||||
inline EXTERN Term
|
||||
MkIntegerTerm (Int n)
|
||||
inline EXTERN Term MkIntegerTerm(Int n)
|
||||
{
|
||||
return (Term) (IntInBnd (n) ? MkIntTerm (n) : MkLongIntTerm (n));
|
||||
return (Term) (IntInBnd(n) ? MkIntTerm(n) : MkLongIntTerm(n));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN int IsIntegerTerm (Term);
|
||||
inline EXTERN int IsIntegerTerm(Term);
|
||||
|
||||
inline EXTERN int
|
||||
IsIntegerTerm (Term t)
|
||||
inline EXTERN int IsIntegerTerm(Term t)
|
||||
{
|
||||
return (int) (IsIntTerm (t) || IsLongIntTerm (t));
|
||||
return (int) (IsIntTerm(t) || IsLongIntTerm(t));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Int IntegerOfTerm (Term);
|
||||
inline EXTERN Int IntegerOfTerm(Term);
|
||||
|
||||
inline EXTERN Int
|
||||
IntegerOfTerm (Term t)
|
||||
inline EXTERN Int IntegerOfTerm(Term t)
|
||||
{
|
||||
return (Int) (IsIntTerm (t) ? IntOfTerm (t) : LongIntOfTerm (t));
|
||||
return (Int) (IsIntTerm(t) ? IntOfTerm(t) : LongIntOfTerm(t));
|
||||
}
|
||||
|
||||
|
||||
@ -877,63 +834,57 @@ IntegerOfTerm (Term t)
|
||||
/*************** High level macros to access arguments ******************/
|
||||
|
||||
|
||||
inline EXTERN Term ArgOfTerm (int i, Term t);
|
||||
inline EXTERN Term ArgOfTerm(int i, Term t);
|
||||
|
||||
inline EXTERN Term
|
||||
ArgOfTerm (int i, Term t)
|
||||
inline EXTERN Term ArgOfTerm(int i, Term t)
|
||||
{
|
||||
return (Term) (Derefa (RepAppl (t) + (i)));
|
||||
return (Term) (Derefa(RepAppl(t) + (i)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term HeadOfTerm (Term);
|
||||
inline EXTERN Term HeadOfTerm(Term);
|
||||
|
||||
inline EXTERN Term
|
||||
HeadOfTerm (Term t)
|
||||
inline EXTERN Term HeadOfTerm(Term t)
|
||||
{
|
||||
return (Term) (Derefa (RepPair (t)));
|
||||
return (Term) (Derefa(RepPair(t)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term TailOfTerm (Term);
|
||||
inline EXTERN Term TailOfTerm(Term);
|
||||
|
||||
inline EXTERN Term
|
||||
TailOfTerm (Term t)
|
||||
inline EXTERN Term TailOfTerm(Term t)
|
||||
{
|
||||
return (Term) (Derefa (RepPair (t) + 1));
|
||||
return (Term) (Derefa(RepPair(t) + 1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term ArgOfTermCell (int i, Term t);
|
||||
inline EXTERN Term ArgOfTermCell(int i, Term t);
|
||||
|
||||
inline EXTERN Term
|
||||
ArgOfTermCell (int i, Term t)
|
||||
inline EXTERN Term ArgOfTermCell(int i, Term t)
|
||||
{
|
||||
return (Term) ((CELL) (RepAppl (t) + (i)));
|
||||
return (Term) ((CELL)(RepAppl(t) + (i)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term HeadOfTermCell (Term);
|
||||
inline EXTERN Term HeadOfTermCell(Term);
|
||||
|
||||
inline EXTERN Term
|
||||
HeadOfTermCell (Term t)
|
||||
inline EXTERN Term HeadOfTermCell(Term t)
|
||||
{
|
||||
return (Term) ((CELL) (RepPair (t)));
|
||||
return (Term) ((CELL)(RepPair(t)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term TailOfTermCell (Term);
|
||||
inline EXTERN Term TailOfTermCell(Term);
|
||||
|
||||
inline EXTERN Term
|
||||
TailOfTermCell (Term t)
|
||||
inline EXTERN Term TailOfTermCell(Term t)
|
||||
{
|
||||
return (Term) ((CELL) (RepPair (t) + 1));
|
||||
return (Term) ((CELL)(RepPair(t) + 1));
|
||||
}
|
||||
|
||||
|
||||
@ -968,12 +919,10 @@ extern char version_number[];
|
||||
#if USE_THREADED_CODE
|
||||
|
||||
/************ reverse lookup of instructions *****************/
|
||||
typedef struct opcode_tab_entry
|
||||
{
|
||||
typedef struct opcode_tab_entry {
|
||||
OPCODE opc;
|
||||
op_numbers opnum;
|
||||
}
|
||||
opentry;
|
||||
} opentry;
|
||||
|
||||
#endif
|
||||
|
||||
@ -989,16 +938,15 @@ extern int CurFileNo;
|
||||
|
||||
/********* Prolog may be in several modes *******************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
typedef enum {
|
||||
BootMode = 1, /* if booting or restoring */
|
||||
UserMode = 2, /* Normal mode */
|
||||
CritMode = 4, /* If we are meddling with the heap */
|
||||
AbortMode = 8, /* expecting to abort */
|
||||
InterruptMode = 16, /* under an interrupt */
|
||||
InErrorMode = 32 /* under an interrupt */
|
||||
}
|
||||
prolog_exec_mode;
|
||||
InErrorMode = 32, /* under an interrupt */
|
||||
ConsoleGetcMode = 64 /* blocked reading from console */
|
||||
} prolog_exec_mode;
|
||||
|
||||
extern prolog_exec_mode PrologMode;
|
||||
extern int CritLocks;
|
||||
@ -1008,6 +956,9 @@ extern int CritLocks;
|
||||
extern char **yap_args;
|
||||
extern int yap_argc;
|
||||
|
||||
/******************* controlling debugging ****************************/
|
||||
extern int creep_on;
|
||||
|
||||
#ifdef YAPOR
|
||||
#define YAPEnterCriticalSection() \
|
||||
{ \
|
||||
@ -1070,12 +1021,10 @@ extern int compile_arrays;
|
||||
|
||||
/* I assume that the size of this structure is a multiple of the size
|
||||
of CELL!!! */
|
||||
typedef struct TIMED_MAVAR
|
||||
{
|
||||
typedef struct TIMED_MAVAR{
|
||||
CELL value;
|
||||
CELL clock;
|
||||
}
|
||||
timed_var;
|
||||
} timed_var;
|
||||
|
||||
/********* while debugging you may need some info ***********************/
|
||||
|
||||
@ -1100,3 +1049,4 @@ extern int snoozing;
|
||||
#if SBA
|
||||
#include "sbaunify.h"
|
||||
#endif
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -228,15 +228,6 @@ inline EXTERN Atom AtomAdjust(Atom at)
|
||||
|
||||
|
||||
|
||||
inline EXTERN Term AtomTermAdjust(Term);
|
||||
|
||||
inline EXTERN Term AtomTermAdjust(Term at)
|
||||
{
|
||||
return (Term) ((at) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN Prop PropAdjust(Prop);
|
||||
|
||||
inline EXTERN Prop PropAdjust(Prop p)
|
||||
@ -251,11 +242,20 @@ inline EXTERN Atom AtomAdjust(Atom);
|
||||
|
||||
inline EXTERN Atom AtomAdjust(Atom at)
|
||||
{
|
||||
return (Atom) ((Atom)(CharP(at)+HDiff) );
|
||||
return (Atom) ((at == NULL ? (at) : (Atom)(CharP(at)+HDiff) ));
|
||||
}
|
||||
|
||||
|
||||
#if MMAP_ADDR >= 0x40000000
|
||||
|
||||
inline EXTERN Prop PropAdjust(Prop);
|
||||
|
||||
inline EXTERN Prop PropAdjust(Prop p)
|
||||
{
|
||||
return (Prop) ((p == NULL ? (p) : (Prop)(CharP(p)+HDiff)) );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
inline EXTERN Term AtomTermAdjust(Term);
|
||||
|
||||
@ -265,27 +265,6 @@ inline EXTERN Term AtomTermAdjust(Term at)
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
inline EXTERN Term AtomTermAdjust(Term);
|
||||
|
||||
inline EXTERN Term AtomTermAdjust(Term at)
|
||||
{
|
||||
return (Term) (MkAtomTerm((Atom)(CharP(AtomOfTerm(at)+HDiff))) );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
inline EXTERN Prop PropAdjust(Prop);
|
||||
|
||||
inline EXTERN Prop PropAdjust(Prop p)
|
||||
{
|
||||
return (Prop) ((Prop)(CharP(p)+HDiff) );
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
#if TAGS_FAST_OPS
|
||||
|
||||
inline EXTERN Term BlobTermAdjust(Term);
|
||||
@ -393,7 +372,16 @@ inline EXTERN PredEntry * PtoPredAdjust(PredEntry *);
|
||||
|
||||
inline EXTERN PredEntry * PtoPredAdjust(PredEntry * ptr)
|
||||
{
|
||||
return (PredEntry *) (((CELL *)(CharP(ptr) + HDiff)) );
|
||||
return (PredEntry *) (((PredEntry *)(CharP(ptr) + HDiff)) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline EXTERN ArrayEntry * PtoArrayEAdjust(ArrayEntry *);
|
||||
|
||||
inline EXTERN ArrayEntry * PtoArrayEAdjust(ArrayEntry * ptr)
|
||||
{
|
||||
return (ArrayEntry *) (((ArrayEntry *)(CharP(ptr) + HDiff)) );
|
||||
}
|
||||
|
||||
|
||||
|
@ -12,7 +12,13 @@ cd ../OPTYap
|
||||
splat
|
||||
cd ../VC
|
||||
splat
|
||||
cd include
|
||||
cd ../LGPL
|
||||
splat
|
||||
cd pillow
|
||||
splat
|
||||
cd examples
|
||||
splat
|
||||
cd ../../../include
|
||||
splat
|
||||
/bin/cp config.h config.h.mine
|
||||
/bin/cp ../../../bins/cyg/*.h .
|
||||
|
16
docs/yap.tex
16
docs/yap.tex
@ -847,7 +847,7 @@ CC="cc -64" $YAP_SRC_PATH/configure --...
|
||||
@cindex booting
|
||||
We next describe how to invoke Yap in Unix systems.
|
||||
|
||||
@node Running Yap Interactively,Running Prolog Files, ,Run
|
||||
@node Running Yap Interactively, ,Running Prolog Files,Run
|
||||
@section Running Yap Interactively
|
||||
|
||||
Most often you will want to use Yap in interactive mode. Assuming that
|
||||
@ -924,7 +924,7 @@ YAP will try to find library files from the YAPSHAREDIR/library
|
||||
directory.
|
||||
@end itemize
|
||||
|
||||
@node Running Prolog Files, ,Interactive Mode, Run
|
||||
@node Running Prolog Files, Running Yap Interactively, , Run
|
||||
@section Running Prolog Files
|
||||
|
||||
YAP can also be used to run Prolog files as scripts, at least in
|
||||
@ -2473,9 +2473,9 @@ be @code{unknown}, and the second argument should be either
|
||||
@code{error}, @code{warning}, @code{fail}, or a goal.
|
||||
|
||||
@item user:unknown_predicate_handler(+G,+M,?NG)
|
||||
@findex user:unknown_predicate_handler/3
|
||||
@syindex user:unknown_predicate_handler/3
|
||||
@cnindex user:unknown_predicate_handler/3
|
||||
@findex unknown_predicate_handler/3
|
||||
@syindex unknown_predicate_handler/3
|
||||
@cnindex unknown_predicate_handler/3
|
||||
The user may also define clauses for
|
||||
@code{user:unknown_predicate_handler/3} hook predicate. This
|
||||
user-defined procedure is called before any system processing for the
|
||||
@ -5312,9 +5312,9 @@ for DCG rules is applied, together with the arithmetic optimizer
|
||||
whenever the compilation of arithmetic expressions is in progress.
|
||||
|
||||
@item user:goal_expansion(+@var{G},+@var{M},-@var{NG})
|
||||
@findex user:goal_expansion/3
|
||||
@snindex user:goal_expansion/3
|
||||
@cnindex user:goal_expansion/3
|
||||
@findex goal_expansion/3
|
||||
@snindex goal_expansion/3
|
||||
@cnindex goal_expansion/3
|
||||
Yap now supports @code{goal_expansion/3}. This is an user-defined
|
||||
procedure that is called after term expansion when compiling or
|
||||
asserting goals for each sub-goal in a clause. The first argument is
|
||||
|
Reference in New Issue
Block a user