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 */
|
/* I can only define the structure after I define the actual atoms */
|
||||||
|
|
||||||
/* atom structure */
|
/* atom structure */
|
||||||
typedef struct AtomEntryStruct
|
typedef struct AtomEntryStruct {
|
||||||
{
|
|
||||||
Atom NextOfAE; /* used to build hash chains */
|
Atom NextOfAE; /* used to build hash chains */
|
||||||
Prop PropsOfAE; /* property list for this atom */
|
Prop PropsOfAE; /* property list for this atom */
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
@ -79,12 +78,10 @@ AtomEntry;
|
|||||||
typedef SFLAGS PropFlags;
|
typedef SFLAGS PropFlags;
|
||||||
|
|
||||||
/* basic property entry structure */
|
/* basic property entry structure */
|
||||||
typedef struct PropEntryStruct
|
typedef struct PropEntryStruct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
}
|
} PropEntry;
|
||||||
PropEntry;
|
|
||||||
|
|
||||||
/* ************************* Functors **********************************/
|
/* ************************* Functors **********************************/
|
||||||
|
|
||||||
@ -100,8 +97,7 @@ PropEntry;
|
|||||||
#define FunctorProperty ((PropFlags)(0xbb00))
|
#define FunctorProperty ((PropFlags)(0xbb00))
|
||||||
|
|
||||||
/* functor property */
|
/* functor property */
|
||||||
typedef struct FunctorEntryStruct
|
typedef struct FunctorEntryStruct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
unsigned int ArityOfFE; /* arity of functor */
|
unsigned int ArityOfFE; /* arity of functor */
|
||||||
@ -110,7 +106,7 @@ typedef struct FunctorEntryStruct
|
|||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
rwlock_t FRWLock;
|
rwlock_t FRWLock;
|
||||||
#endif
|
#endif
|
||||||
}
|
} FunctorEntry;
|
||||||
FunctorEntry;
|
|
||||||
|
|
||||||
typedef FunctorEntry *Functor;
|
typedef FunctorEntry *Functor;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
* Last rev: December 90 *
|
* Last rev: December 90 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Tag Scheme for machines with 24 bits adresses (m68000) *
|
* 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)
|
/* Version for 24 bit addresses (68000)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
* Last rev: December 90 *
|
* Last rev: December 90 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
* 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
|
#define TAG_LOW_BITS_32 1
|
||||||
@ -72,10 +72,10 @@ property list
|
|||||||
#define NumberBits /* 0x0000000aL */ MKTAG(0x2,2)
|
#define NumberBits /* 0x0000000aL */ MKTAG(0x2,2)
|
||||||
#define NumberMask /* 0x0000000bL */ MKTAG(0x2,3)
|
#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 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 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)
|
#define CHKTAG(t,Tag) ((Unsigned(t)&TagBits)==Tag)
|
||||||
|
|
||||||
/* bits that should not be used by anyone but us */
|
/* bits that should not be used by anyone but us */
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
* Last rev: December 90 *
|
* Last rev: December 90 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
* 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 *
|
* Last rev: December 90 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
* 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,
|
/* Original version for 32 bit addresses machines,
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
* Last rev: December 90 *
|
* Last rev: December 90 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
* 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
|
#define TAG_64BITS 1
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
* File: TermExt.h *
|
* File: TermExt.h *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Extensions to standard terms for YAP *
|
* 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
|
#if USE_OFFSETS
|
||||||
|
160
VC/include/Yap.h
160
VC/include/Yap.h
@ -17,7 +17,7 @@
|
|||||||
* File: Yap.h.m4 *
|
* File: Yap.h.m4 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: main header file for YAP *
|
* 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"
|
#include "config.h"
|
||||||
@ -239,7 +239,6 @@ extern char Option[20];
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !IN_SECOND_QUADRANT
|
#if !IN_SECOND_QUADRANT
|
||||||
#define USE_OFFSETS 1
|
|
||||||
#if __linux__ || __FreeBSD__ || __NetBSD__ || mips || __APPLE__
|
#if __linux__ || __FreeBSD__ || __NetBSD__ || mips || __APPLE__
|
||||||
#if defined(YAPOR) && defined(__alpha)
|
#if defined(YAPOR) && defined(__alpha)
|
||||||
#define MMAP_ADDR 0x40000000
|
#define MMAP_ADDR 0x40000000
|
||||||
@ -250,18 +249,18 @@ extern char Option[20];
|
|||||||
#else
|
#else
|
||||||
#define MMAP_ADDR 0x09000000
|
#define MMAP_ADDR 0x09000000
|
||||||
#endif
|
#endif
|
||||||
#elif __svr4__
|
#elif __svr4__ || defined(__SVR4)
|
||||||
#define MMAP_ADDR 0x02000000
|
#define MMAP_ADDR 0x02000000
|
||||||
#elif _WIN32
|
#elif defined(_WIN32) || defined(__CYGWIN__)
|
||||||
#define MMAP_ADDR 0x30000000L
|
#define MMAP_ADDR 0x30000000L
|
||||||
#endif
|
#endif
|
||||||
#endif /* !IN_SECOND_QUADRANT */
|
#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 HEAP_INIT_BASE (MMAP_ADDR)
|
||||||
#define AtomBase ((char *)MMAP_ADDR)
|
#define AtomBase ((char *)MMAP_ADDR)
|
||||||
#else
|
#else
|
||||||
#define HEAP_INIT_BASE (HeapBase)
|
#define HEAP_INIT_BASE ((CELL)HeapBase)
|
||||||
#define AtomBase (HeapBase)
|
#define AtomBase (HeapBase)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -393,9 +392,8 @@ extern sigjmp_buf RestartEnv; /* used to restart after an abort */
|
|||||||
/************ variables concerned with Error Handling *************/
|
/************ variables concerned with Error Handling *************/
|
||||||
|
|
||||||
/* Types of Errors */
|
/* Types of Errors */
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
YAP_NO_ERROR,
|
||||||
NO_ERROR,
|
|
||||||
FATAL_ERROR,
|
FATAL_ERROR,
|
||||||
INTERNAL_ERROR,
|
INTERNAL_ERROR,
|
||||||
PURE_ABORT,
|
PURE_ABORT,
|
||||||
@ -469,15 +467,13 @@ typedef enum
|
|||||||
TYPE_ERROR_UBYTE,
|
TYPE_ERROR_UBYTE,
|
||||||
TYPE_ERROR_VARIABLE,
|
TYPE_ERROR_VARIABLE,
|
||||||
UNKNOWN_ERROR
|
UNKNOWN_ERROR
|
||||||
}
|
} yap_error_number;
|
||||||
yap_error_number;
|
|
||||||
|
|
||||||
extern char *ErrorMessage; /* used to pass error messages */
|
extern char *ErrorMessage; /* used to pass error messages */
|
||||||
extern Term Error_Term; /* used to pass error terms */
|
extern Term Error_Term; /* used to pass error terms */
|
||||||
extern yap_error_number Error_TYPE; /* used to pass the error */
|
extern yap_error_number Error_TYPE; /* used to pass the error */
|
||||||
|
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
|
||||||
YAP_INT_BOUNDED_FLAG = 0,
|
YAP_INT_BOUNDED_FLAG = 0,
|
||||||
MAX_ARITY_FLAG = 1,
|
MAX_ARITY_FLAG = 1,
|
||||||
INTEGER_ROUNDING_FLAG = 2,
|
INTEGER_ROUNDING_FLAG = 2,
|
||||||
@ -495,8 +491,7 @@ typedef enum
|
|||||||
ALLOW_ASSERTING_STATIC_FLAG = 14,
|
ALLOW_ASSERTING_STATIC_FLAG = 14,
|
||||||
HALT_AFTER_CONSULT_FLAG = 15,
|
HALT_AFTER_CONSULT_FLAG = 15,
|
||||||
FAST_BOOT_FLAG = 16
|
FAST_BOOT_FLAG = 16
|
||||||
}
|
} yap_flags;
|
||||||
yap_flags;
|
|
||||||
|
|
||||||
#define STRING_AS_CHARS 0
|
#define STRING_AS_CHARS 0
|
||||||
#define STRING_AS_ATOM 2
|
#define STRING_AS_ATOM 2
|
||||||
@ -628,12 +623,20 @@ yap_flags;
|
|||||||
|
|
||||||
#define TermSize sizeof(Term)
|
#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 */
|
/* applies to unbound variables */
|
||||||
|
|
||||||
inline EXTERN Term * VarOfTerm(Term t);
|
inline EXTERN Term * VarOfTerm(Term t);
|
||||||
|
|
||||||
inline EXTERN Term *
|
inline EXTERN Term * VarOfTerm(Term t)
|
||||||
VarOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (Term *) (t);
|
return (Term *) (t);
|
||||||
}
|
}
|
||||||
@ -643,8 +646,7 @@ VarOfTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term MkVarTerm(void);
|
inline EXTERN Term MkVarTerm(void);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkVarTerm()
|
||||||
MkVarTerm ()
|
|
||||||
{
|
{
|
||||||
return (Term) ((*H = 0, H++));
|
return (Term) ((*H = 0, H++));
|
||||||
}
|
}
|
||||||
@ -653,8 +655,7 @@ MkVarTerm ()
|
|||||||
|
|
||||||
inline EXTERN int IsUnboundVar(Term);
|
inline EXTERN int IsUnboundVar(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsUnboundVar(Term t)
|
||||||
IsUnboundVar (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (t == 0);
|
return (int) (t == 0);
|
||||||
}
|
}
|
||||||
@ -664,8 +665,7 @@ IsUnboundVar (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term MkVarTerm(void);
|
inline EXTERN Term MkVarTerm(void);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkVarTerm()
|
||||||
MkVarTerm ()
|
|
||||||
{
|
{
|
||||||
return (Term) ((*H = (CELL) H, H++));
|
return (Term) ((*H = (CELL) H, H++));
|
||||||
}
|
}
|
||||||
@ -674,8 +674,7 @@ MkVarTerm ()
|
|||||||
|
|
||||||
inline EXTERN int IsUnboundVar(Term);
|
inline EXTERN int IsUnboundVar(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsUnboundVar(Term t)
|
||||||
IsUnboundVar (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (*VarOfTerm(t) == (t));
|
return (int) (*VarOfTerm(t) == (t));
|
||||||
}
|
}
|
||||||
@ -685,8 +684,7 @@ IsUnboundVar (Term t)
|
|||||||
|
|
||||||
inline EXTERN CELL * PtrOfTerm(Term);
|
inline EXTERN CELL * PtrOfTerm(Term);
|
||||||
|
|
||||||
inline EXTERN CELL *
|
inline EXTERN CELL * PtrOfTerm(Term t)
|
||||||
PtrOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (CELL *) (*(CELL *)(t));
|
return (CELL *) (*(CELL *)(t));
|
||||||
}
|
}
|
||||||
@ -696,61 +694,34 @@ PtrOfTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Functor FunctorOfTerm(Term);
|
inline EXTERN Functor FunctorOfTerm(Term);
|
||||||
|
|
||||||
inline EXTERN Functor
|
inline EXTERN Functor FunctorOfTerm(Term t)
|
||||||
FunctorOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (Functor) (*RepAppl(t));
|
return (Functor) (*RepAppl(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if IN_SECOND_QUADRANT
|
|
||||||
|
|
||||||
inline EXTERN Term MkAtomTerm(Atom);
|
inline EXTERN Term MkAtomTerm(Atom);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkAtomTerm(Atom a)
|
||||||
MkAtomTerm (Atom a)
|
|
||||||
{
|
{
|
||||||
return (Term) (TAGGEDA (AtomTag, (CELL *) (a) - (CELL *) HEAP_INIT_BASE));
|
return (Term) (TAGGEDA(AtomTag, (CELL)(a)-HEAP_INIT_BASE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline EXTERN Atom AtomOfTerm(Term t);
|
inline EXTERN Atom AtomOfTerm(Term t);
|
||||||
|
|
||||||
inline EXTERN Atom
|
inline EXTERN Atom AtomOfTerm(Term t)
|
||||||
AtomOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (Atom) ((CELL *) HEAP_INIT_BASE + NonTagPart (t));
|
return (Atom) (HEAP_INIT_BASE+NonTagPart(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
inline EXTERN Term MkAtomTerm (Atom);
|
|
||||||
|
|
||||||
inline EXTERN Term
|
|
||||||
MkAtomTerm (Atom a)
|
|
||||||
{
|
|
||||||
return (Term) (TAGGEDA (AtomTag, (a)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline EXTERN Atom AtomOfTerm (Term t);
|
|
||||||
|
|
||||||
inline EXTERN Atom
|
|
||||||
AtomOfTerm (Term t)
|
|
||||||
{
|
|
||||||
return (Atom) (NonTagPart (t));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline EXTERN int IsAtomTerm(Term);
|
inline EXTERN int IsAtomTerm(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsAtomTerm(Term t)
|
||||||
IsAtomTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (CHKTAG((t), AtomTag));
|
return (int) (CHKTAG((t), AtomTag));
|
||||||
}
|
}
|
||||||
@ -760,8 +731,7 @@ IsAtomTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term MkIntTerm(Int);
|
inline EXTERN Term MkIntTerm(Int);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkIntTerm(Int n)
|
||||||
MkIntTerm (Int n)
|
|
||||||
{
|
{
|
||||||
return (Term) (TAGGED(NumberTag, (n)));
|
return (Term) (TAGGED(NumberTag, (n)));
|
||||||
}
|
}
|
||||||
@ -774,8 +744,7 @@ MkIntTerm (Int n)
|
|||||||
|
|
||||||
inline EXTERN Term MkIntConstant(Int);
|
inline EXTERN Term MkIntConstant(Int);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkIntConstant(Int n)
|
||||||
MkIntConstant (Int n)
|
|
||||||
{
|
{
|
||||||
return (Term) (NONTAGGED(NumberTag, (n)));
|
return (Term) (NONTAGGED(NumberTag, (n)));
|
||||||
}
|
}
|
||||||
@ -784,8 +753,7 @@ MkIntConstant (Int n)
|
|||||||
|
|
||||||
inline EXTERN int IsIntTerm(Term);
|
inline EXTERN int IsIntTerm(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsIntTerm(Term t)
|
||||||
IsIntTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (CHKTAG((t), NumberTag));
|
return (int) (CHKTAG((t), NumberTag));
|
||||||
}
|
}
|
||||||
@ -812,14 +780,6 @@ IsIntTerm (Term t)
|
|||||||
#endif
|
#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:
|
There are two types of functors:
|
||||||
|
|
||||||
@ -837,8 +797,7 @@ extern ADDR HeapBase,
|
|||||||
|
|
||||||
inline EXTERN Term MkIntegerTerm(Int);
|
inline EXTERN Term MkIntegerTerm(Int);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkIntegerTerm(Int n)
|
||||||
MkIntegerTerm (Int n)
|
|
||||||
{
|
{
|
||||||
return (Term) (IntInBnd(n) ? MkIntTerm(n) : MkLongIntTerm(n));
|
return (Term) (IntInBnd(n) ? MkIntTerm(n) : MkLongIntTerm(n));
|
||||||
}
|
}
|
||||||
@ -847,8 +806,7 @@ MkIntegerTerm (Int n)
|
|||||||
|
|
||||||
inline EXTERN int IsIntegerTerm(Term);
|
inline EXTERN int IsIntegerTerm(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsIntegerTerm(Term t)
|
||||||
IsIntegerTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (IsIntTerm(t) || IsLongIntTerm(t));
|
return (int) (IsIntTerm(t) || IsLongIntTerm(t));
|
||||||
}
|
}
|
||||||
@ -857,8 +815,7 @@ IsIntegerTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Int IntegerOfTerm(Term);
|
inline EXTERN Int IntegerOfTerm(Term);
|
||||||
|
|
||||||
inline EXTERN Int
|
inline EXTERN Int IntegerOfTerm(Term t)
|
||||||
IntegerOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (Int) (IsIntTerm(t) ? IntOfTerm(t) : LongIntOfTerm(t));
|
return (Int) (IsIntTerm(t) ? IntOfTerm(t) : LongIntOfTerm(t));
|
||||||
}
|
}
|
||||||
@ -879,8 +836,7 @@ IntegerOfTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term ArgOfTerm(int i, Term t);
|
inline EXTERN Term ArgOfTerm(int i, Term t);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term ArgOfTerm(int i, Term t)
|
||||||
ArgOfTerm (int i, Term t)
|
|
||||||
{
|
{
|
||||||
return (Term) (Derefa(RepAppl(t) + (i)));
|
return (Term) (Derefa(RepAppl(t) + (i)));
|
||||||
}
|
}
|
||||||
@ -889,8 +845,7 @@ ArgOfTerm (int i, Term t)
|
|||||||
|
|
||||||
inline EXTERN Term HeadOfTerm(Term);
|
inline EXTERN Term HeadOfTerm(Term);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term HeadOfTerm(Term t)
|
||||||
HeadOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (Term) (Derefa(RepPair(t)));
|
return (Term) (Derefa(RepPair(t)));
|
||||||
}
|
}
|
||||||
@ -899,8 +854,7 @@ HeadOfTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term TailOfTerm(Term);
|
inline EXTERN Term TailOfTerm(Term);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term TailOfTerm(Term t)
|
||||||
TailOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (Term) (Derefa(RepPair(t) + 1));
|
return (Term) (Derefa(RepPair(t) + 1));
|
||||||
}
|
}
|
||||||
@ -910,8 +864,7 @@ TailOfTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term ArgOfTermCell(int i, Term t);
|
inline EXTERN Term ArgOfTermCell(int i, Term t);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term ArgOfTermCell(int i, Term t)
|
||||||
ArgOfTermCell (int i, Term t)
|
|
||||||
{
|
{
|
||||||
return (Term) ((CELL)(RepAppl(t) + (i)));
|
return (Term) ((CELL)(RepAppl(t) + (i)));
|
||||||
}
|
}
|
||||||
@ -920,8 +873,7 @@ ArgOfTermCell (int i, Term t)
|
|||||||
|
|
||||||
inline EXTERN Term HeadOfTermCell(Term);
|
inline EXTERN Term HeadOfTermCell(Term);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term HeadOfTermCell(Term t)
|
||||||
HeadOfTermCell (Term t)
|
|
||||||
{
|
{
|
||||||
return (Term) ((CELL)(RepPair(t)));
|
return (Term) ((CELL)(RepPair(t)));
|
||||||
}
|
}
|
||||||
@ -930,8 +882,7 @@ HeadOfTermCell (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term TailOfTermCell(Term);
|
inline EXTERN Term TailOfTermCell(Term);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term TailOfTermCell(Term t)
|
||||||
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
|
#if USE_THREADED_CODE
|
||||||
|
|
||||||
/************ reverse lookup of instructions *****************/
|
/************ reverse lookup of instructions *****************/
|
||||||
typedef struct opcode_tab_entry
|
typedef struct opcode_tab_entry {
|
||||||
{
|
|
||||||
OPCODE opc;
|
OPCODE opc;
|
||||||
op_numbers opnum;
|
op_numbers opnum;
|
||||||
}
|
} opentry;
|
||||||
opentry;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -989,16 +938,15 @@ extern int CurFileNo;
|
|||||||
|
|
||||||
/********* Prolog may be in several modes *******************************/
|
/********* Prolog may be in several modes *******************************/
|
||||||
|
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
|
||||||
BootMode = 1, /* if booting or restoring */
|
BootMode = 1, /* if booting or restoring */
|
||||||
UserMode = 2, /* Normal mode */
|
UserMode = 2, /* Normal mode */
|
||||||
CritMode = 4, /* If we are meddling with the heap */
|
CritMode = 4, /* If we are meddling with the heap */
|
||||||
AbortMode = 8, /* expecting to abort */
|
AbortMode = 8, /* expecting to abort */
|
||||||
InterruptMode = 16, /* under an interrupt */
|
InterruptMode = 16, /* under an interrupt */
|
||||||
InErrorMode = 32 /* under an interrupt */
|
InErrorMode = 32, /* under an interrupt */
|
||||||
}
|
ConsoleGetcMode = 64 /* blocked reading from console */
|
||||||
prolog_exec_mode;
|
} prolog_exec_mode;
|
||||||
|
|
||||||
extern prolog_exec_mode PrologMode;
|
extern prolog_exec_mode PrologMode;
|
||||||
extern int CritLocks;
|
extern int CritLocks;
|
||||||
@ -1008,6 +956,9 @@ extern int CritLocks;
|
|||||||
extern char **yap_args;
|
extern char **yap_args;
|
||||||
extern int yap_argc;
|
extern int yap_argc;
|
||||||
|
|
||||||
|
/******************* controlling debugging ****************************/
|
||||||
|
extern int creep_on;
|
||||||
|
|
||||||
#ifdef YAPOR
|
#ifdef YAPOR
|
||||||
#define YAPEnterCriticalSection() \
|
#define YAPEnterCriticalSection() \
|
||||||
{ \
|
{ \
|
||||||
@ -1070,12 +1021,10 @@ extern int compile_arrays;
|
|||||||
|
|
||||||
/* I assume that the size of this structure is a multiple of the size
|
/* I assume that the size of this structure is a multiple of the size
|
||||||
of CELL!!! */
|
of CELL!!! */
|
||||||
typedef struct TIMED_MAVAR
|
typedef struct TIMED_MAVAR{
|
||||||
{
|
|
||||||
CELL value;
|
CELL value;
|
||||||
CELL clock;
|
CELL clock;
|
||||||
}
|
} timed_var;
|
||||||
timed_var;
|
|
||||||
|
|
||||||
/********* while debugging you may need some info ***********************/
|
/********* while debugging you may need some info ***********************/
|
||||||
|
|
||||||
@ -1100,3 +1049,4 @@ extern int snoozing;
|
|||||||
#if SBA
|
#if SBA
|
||||||
#include "sbaunify.h"
|
#include "sbaunify.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -28,8 +28,7 @@
|
|||||||
|
|
||||||
inline EXTERN Atom AbsAtom(AtomEntry * p);
|
inline EXTERN Atom AbsAtom(AtomEntry * p);
|
||||||
|
|
||||||
inline EXTERN Atom
|
inline EXTERN Atom AbsAtom(AtomEntry * p)
|
||||||
AbsAtom (AtomEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Atom) (Addr(p) - AtomBase);
|
return (Atom) (Addr(p) - AtomBase);
|
||||||
}
|
}
|
||||||
@ -38,8 +37,7 @@ AbsAtom (AtomEntry * p)
|
|||||||
|
|
||||||
inline EXTERN AtomEntry * RepAtom(Atom a);
|
inline EXTERN AtomEntry * RepAtom(Atom a);
|
||||||
|
|
||||||
inline EXTERN AtomEntry *
|
inline EXTERN AtomEntry * RepAtom(Atom a)
|
||||||
RepAtom (Atom a)
|
|
||||||
{
|
{
|
||||||
return (AtomEntry *) (AtomBase + Unsigned(a));
|
return (AtomEntry *) (AtomBase + Unsigned(a));
|
||||||
}
|
}
|
||||||
@ -49,8 +47,7 @@ RepAtom (Atom a)
|
|||||||
|
|
||||||
inline EXTERN Atom AbsAtom(AtomEntry * p);
|
inline EXTERN Atom AbsAtom(AtomEntry * p);
|
||||||
|
|
||||||
inline EXTERN Atom
|
inline EXTERN Atom AbsAtom(AtomEntry * p)
|
||||||
AbsAtom (AtomEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Atom) (p);
|
return (Atom) (p);
|
||||||
}
|
}
|
||||||
@ -59,8 +56,7 @@ AbsAtom (AtomEntry * p)
|
|||||||
|
|
||||||
inline EXTERN AtomEntry * RepAtom(Atom a);
|
inline EXTERN AtomEntry * RepAtom(Atom a);
|
||||||
|
|
||||||
inline EXTERN AtomEntry *
|
inline EXTERN AtomEntry * RepAtom(Atom a)
|
||||||
RepAtom (Atom a)
|
|
||||||
{
|
{
|
||||||
return (AtomEntry *) (a);
|
return (AtomEntry *) (a);
|
||||||
}
|
}
|
||||||
@ -72,8 +68,7 @@ RepAtom (Atom a)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsProp(PropEntry * p);
|
inline EXTERN Prop AbsProp(PropEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsProp(PropEntry * p)
|
||||||
AbsProp (PropEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -82,8 +77,7 @@ AbsProp (PropEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropEntry * RepProp(Prop p);
|
inline EXTERN PropEntry * RepProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN PropEntry *
|
inline EXTERN PropEntry * RepProp(Prop p)
|
||||||
RepProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (PropEntry *) (AtomBase+Unsigned(p));
|
return (PropEntry *) (AtomBase+Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -93,8 +87,7 @@ RepProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsProp(PropEntry * p);
|
inline EXTERN Prop AbsProp(PropEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsProp(PropEntry * p)
|
||||||
AbsProp (PropEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -103,8 +96,7 @@ AbsProp (PropEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropEntry * RepProp(Prop p);
|
inline EXTERN PropEntry * RepProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN PropEntry *
|
inline EXTERN PropEntry * RepProp(Prop p)
|
||||||
RepProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (PropEntry *) (p);
|
return (PropEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -116,8 +108,7 @@ RepProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN FunctorEntry * RepFunctorProp(Prop p);
|
inline EXTERN FunctorEntry * RepFunctorProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN FunctorEntry *
|
inline EXTERN FunctorEntry * RepFunctorProp(Prop p)
|
||||||
RepFunctorProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (FunctorEntry *) (AtomBase + Unsigned(p));
|
return (FunctorEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -126,8 +117,7 @@ RepFunctorProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsFunctorProp(FunctorEntry * p);
|
inline EXTERN Prop AbsFunctorProp(FunctorEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsFunctorProp(FunctorEntry * p)
|
||||||
AbsFunctorProp (FunctorEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -137,8 +127,7 @@ AbsFunctorProp (FunctorEntry * p)
|
|||||||
|
|
||||||
inline EXTERN FunctorEntry * RepFunctorProp(Prop p);
|
inline EXTERN FunctorEntry * RepFunctorProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN FunctorEntry *
|
inline EXTERN FunctorEntry * RepFunctorProp(Prop p)
|
||||||
RepFunctorProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (FunctorEntry *) (p);
|
return (FunctorEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -147,8 +136,7 @@ RepFunctorProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsFunctorProp(FunctorEntry * p);
|
inline EXTERN Prop AbsFunctorProp(FunctorEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsFunctorProp(FunctorEntry * p)
|
||||||
AbsFunctorProp (FunctorEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -159,8 +147,7 @@ AbsFunctorProp (FunctorEntry * p)
|
|||||||
|
|
||||||
inline EXTERN Int ArityOfFunctor(Functor);
|
inline EXTERN Int ArityOfFunctor(Functor);
|
||||||
|
|
||||||
inline EXTERN Int
|
inline EXTERN Int ArityOfFunctor(Functor Fun)
|
||||||
ArityOfFunctor (Functor Fun)
|
|
||||||
{
|
{
|
||||||
return (Int) (((FunctorEntry *)Fun)->ArityOfFE);
|
return (Int) (((FunctorEntry *)Fun)->ArityOfFE);
|
||||||
}
|
}
|
||||||
@ -169,8 +156,7 @@ ArityOfFunctor (Functor Fun)
|
|||||||
|
|
||||||
inline EXTERN Atom NameOfFunctor(Functor);
|
inline EXTERN Atom NameOfFunctor(Functor);
|
||||||
|
|
||||||
inline EXTERN Atom
|
inline EXTERN Atom NameOfFunctor(Functor Fun)
|
||||||
NameOfFunctor (Functor Fun)
|
|
||||||
{
|
{
|
||||||
return (Atom) (((FunctorEntry *)Fun)->NameOfFE);
|
return (Atom) (((FunctorEntry *)Fun)->NameOfFE);
|
||||||
}
|
}
|
||||||
@ -180,8 +166,7 @@ NameOfFunctor (Functor Fun)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsFunctorProperty(int);
|
inline EXTERN PropFlags IsFunctorProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsFunctorProperty(int flags)
|
||||||
IsFunctorProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == FunctorProperty) );
|
return (PropFlags) ((flags == FunctorProperty) );
|
||||||
}
|
}
|
||||||
@ -203,20 +188,17 @@ IsFunctorProperty (int flags)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Module property */
|
/* Module property */
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
SMALLUNSGN IndexOfMod; /* indec in module table */
|
SMALLUNSGN IndexOfMod; /* indec in module table */
|
||||||
}
|
} ModEntry;
|
||||||
ModEntry;
|
|
||||||
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN ModEntry * RepModProp(Prop p);
|
inline EXTERN ModEntry * RepModProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ModEntry *
|
inline EXTERN ModEntry * RepModProp(Prop p)
|
||||||
RepModProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ModEntry *) (AtomBase + Unsigned(p));
|
return (ModEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -225,8 +207,7 @@ RepModProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsModProp(ModEntry * p);
|
inline EXTERN Prop AbsModProp(ModEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsModProp(ModEntry * p)
|
||||||
AbsModProp (ModEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -236,8 +217,7 @@ AbsModProp (ModEntry * p)
|
|||||||
|
|
||||||
inline EXTERN ModEntry * RepModProp(Prop p);
|
inline EXTERN ModEntry * RepModProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ModEntry *
|
inline EXTERN ModEntry * RepModProp(Prop p)
|
||||||
RepModProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ModEntry *) (p);
|
return (ModEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -246,8 +226,7 @@ RepModProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsModProp(ModEntry * p);
|
inline EXTERN Prop AbsModProp(ModEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsModProp(ModEntry * p)
|
||||||
AbsModProp (ModEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -260,8 +239,7 @@ AbsModProp (ModEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsModProperty(int);
|
inline EXTERN PropFlags IsModProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsModProperty(int flags)
|
||||||
IsModProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == ModProperty));
|
return (PropFlags) ((flags == ModProperty));
|
||||||
}
|
}
|
||||||
@ -269,22 +247,19 @@ IsModProperty (int flags)
|
|||||||
|
|
||||||
|
|
||||||
/* operator property entry structure */
|
/* operator property entry structure */
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
rwlock_t OpRWLock; /* a read-write lock to protect the entry */
|
rwlock_t OpRWLock; /* a read-write lock to protect the entry */
|
||||||
#endif
|
#endif
|
||||||
BITS16 Prefix, Infix, Posfix; /* precedences */
|
BITS16 Prefix, Infix, Posfix; /* precedences */
|
||||||
}
|
} OpEntry;
|
||||||
OpEntry;
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN OpEntry * RepOpProp(Prop p);
|
inline EXTERN OpEntry * RepOpProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN OpEntry *
|
inline EXTERN OpEntry * RepOpProp(Prop p)
|
||||||
RepOpProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (OpEntry *) (AtomBase + Unsigned(p));
|
return (OpEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -293,8 +268,7 @@ RepOpProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsOpProp(OpEntry * p);
|
inline EXTERN Prop AbsOpProp(OpEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsOpProp(OpEntry * p)
|
||||||
AbsOpProp (OpEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -304,8 +278,7 @@ AbsOpProp (OpEntry * p)
|
|||||||
|
|
||||||
inline EXTERN OpEntry * RepOpProp(Prop p);
|
inline EXTERN OpEntry * RepOpProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN OpEntry *
|
inline EXTERN OpEntry * RepOpProp(Prop p)
|
||||||
RepOpProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (OpEntry *) (p);
|
return (OpEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -314,8 +287,7 @@ RepOpProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsOpProp(OpEntry * p);
|
inline EXTERN Prop AbsOpProp(OpEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsOpProp(OpEntry * p)
|
||||||
AbsOpProp (OpEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -327,8 +299,7 @@ AbsOpProp (OpEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsOpProperty(int);
|
inline EXTERN PropFlags IsOpProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsOpProperty(int flags)
|
||||||
IsOpProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == OpProperty) );
|
return (PropFlags) ((flags == OpProperty) );
|
||||||
}
|
}
|
||||||
@ -343,29 +314,24 @@ IsOpProperty (int flags)
|
|||||||
typedef union arith_ret *eval_ret;
|
typedef union arith_ret *eval_ret;
|
||||||
|
|
||||||
/* expression property entry structure */
|
/* expression property entry structure */
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
unsigned int ArityOfEE;
|
unsigned int ArityOfEE;
|
||||||
BITS16 ENoOfEE;
|
BITS16 ENoOfEE;
|
||||||
BITS16 FlagsOfEE;
|
BITS16 FlagsOfEE;
|
||||||
/* operations that implement the expression */
|
/* operations that implement the expression */
|
||||||
union
|
union {
|
||||||
{
|
|
||||||
blob_type (*constant)(eval_ret);
|
blob_type (*constant)(eval_ret);
|
||||||
blob_type (*unary)(Term, eval_ret);
|
blob_type (*unary)(Term, eval_ret);
|
||||||
blob_type (*binary)(Term, Term, eval_ret);
|
blob_type (*binary)(Term, Term, eval_ret);
|
||||||
}
|
} FOfEE;
|
||||||
FOfEE;
|
} ExpEntry;
|
||||||
}
|
|
||||||
ExpEntry;
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN ExpEntry * RepExpProp(Prop p);
|
inline EXTERN ExpEntry * RepExpProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ExpEntry *
|
inline EXTERN ExpEntry * RepExpProp(Prop p)
|
||||||
RepExpProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ExpEntry *) (AtomBase + Unsigned(p));
|
return (ExpEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -374,8 +340,7 @@ RepExpProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsExpProp(ExpEntry * p);
|
inline EXTERN Prop AbsExpProp(ExpEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsExpProp(ExpEntry * p)
|
||||||
AbsExpProp (ExpEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -385,8 +350,7 @@ AbsExpProp (ExpEntry * p)
|
|||||||
|
|
||||||
inline EXTERN ExpEntry * RepExpProp(Prop p);
|
inline EXTERN ExpEntry * RepExpProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ExpEntry *
|
inline EXTERN ExpEntry * RepExpProp(Prop p)
|
||||||
RepExpProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ExpEntry *) (p);
|
return (ExpEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -395,8 +359,7 @@ RepExpProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsExpProp(ExpEntry * p);
|
inline EXTERN Prop AbsExpProp(ExpEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsExpProp(ExpEntry * p)
|
||||||
AbsExpProp (ExpEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -409,8 +372,7 @@ AbsExpProp (ExpEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsExpProperty(int);
|
inline EXTERN PropFlags IsExpProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsExpProperty(int flags)
|
||||||
IsExpProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == ExpProperty) );
|
return (PropFlags) ((flags == ExpProperty) );
|
||||||
}
|
}
|
||||||
@ -419,22 +381,19 @@ IsExpProperty (int flags)
|
|||||||
|
|
||||||
|
|
||||||
/* value property entry structure */
|
/* value property entry structure */
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
rwlock_t VRWLock; /* a read-write lock to protect the entry */
|
rwlock_t VRWLock; /* a read-write lock to protect the entry */
|
||||||
#endif
|
#endif
|
||||||
Term ValueOfVE; /* (atomic) value associated with the atom */
|
Term ValueOfVE; /* (atomic) value associated with the atom */
|
||||||
}
|
} ValEntry;
|
||||||
ValEntry;
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN ValEntry * RepValProp(Prop p);
|
inline EXTERN ValEntry * RepValProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ValEntry *
|
inline EXTERN ValEntry * RepValProp(Prop p)
|
||||||
RepValProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ValEntry *) (AtomBase + Unsigned(p));
|
return (ValEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -443,8 +402,7 @@ RepValProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsValProp(ValEntry * p);
|
inline EXTERN Prop AbsValProp(ValEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsValProp(ValEntry * p)
|
||||||
AbsValProp (ValEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -454,8 +412,7 @@ AbsValProp (ValEntry * p)
|
|||||||
|
|
||||||
inline EXTERN ValEntry * RepValProp(Prop p);
|
inline EXTERN ValEntry * RepValProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ValEntry *
|
inline EXTERN ValEntry * RepValProp(Prop p)
|
||||||
RepValProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ValEntry *) (p);
|
return (ValEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -464,8 +421,7 @@ RepValProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsValProp(ValEntry * p);
|
inline EXTERN Prop AbsValProp(ValEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsValProp(ValEntry * p)
|
||||||
AbsValProp (ValEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -477,8 +433,7 @@ AbsValProp (ValEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsValProperty(int);
|
inline EXTERN PropFlags IsValProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsValProperty(int flags)
|
||||||
IsValProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == ValProperty) );
|
return (PropFlags) ((flags == ValProperty) );
|
||||||
}
|
}
|
||||||
@ -486,15 +441,15 @@ IsValProperty (int flags)
|
|||||||
|
|
||||||
|
|
||||||
/* predicate property entry structure */
|
/* predicate property entry structure */
|
||||||
/* BasicPreds are things like var, nonvar, atom ...which are implemented
|
/* AsmPreds are things like var, nonvar, atom ...which are implemented
|
||||||
through dedicated machine instructions. In this case the 8 lower
|
through dedicated machine instructions. In this case the 8 lower
|
||||||
bits of PredFlags are used to hold the machine instruction code
|
bits of PredFlags are used to hold the machine instruction code
|
||||||
for the pred.
|
for the pred.
|
||||||
C_Preds are things write, read, ... implemented in C. In this case
|
C_Preds are things write, read, ... implemented in C. In this case
|
||||||
CodeOfPred holds the address of the correspondent C-function.
|
CodeOfPred holds the address of the correspondent C-function.
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
CArgsPredFlag = 0x1000000L, /* ! should ! across */
|
||||||
CutTransparentPredFlag = 0x800000L, /* ! should ! across */
|
CutTransparentPredFlag = 0x800000L, /* ! should ! across */
|
||||||
SourcePredFlag = 0x400000L, /* static predicate with source declaration */
|
SourcePredFlag = 0x400000L, /* static predicate with source declaration */
|
||||||
MetaPredFlag = 0x200000L, /* predicate subject to a meta declaration */
|
MetaPredFlag = 0x200000L, /* predicate subject to a meta declaration */
|
||||||
@ -503,7 +458,7 @@ typedef enum
|
|||||||
MultiFileFlag = 0x040000L, /* is multi-file */
|
MultiFileFlag = 0x040000L, /* is multi-file */
|
||||||
FastPredFlag = 0x020000L, /* is "compiled" */
|
FastPredFlag = 0x020000L, /* is "compiled" */
|
||||||
TestPredFlag = 0x010000L, /* is a test (optim. comit) */
|
TestPredFlag = 0x010000L, /* is a test (optim. comit) */
|
||||||
BasicPredFlag = 0x008000L, /* inline */
|
AsmPredFlag = 0x008000L, /* inline */
|
||||||
StandardPredFlag= 0x004000L, /* system predicate */
|
StandardPredFlag= 0x004000L, /* system predicate */
|
||||||
DynamicPredFlag= 0x002000L, /* dynamic predicate */
|
DynamicPredFlag= 0x002000L, /* dynamic predicate */
|
||||||
CPredFlag = 0x001000L, /* written in C */
|
CPredFlag = 0x001000L, /* written in C */
|
||||||
@ -520,12 +475,10 @@ typedef enum
|
|||||||
#endif /* YAPOR */
|
#endif /* YAPOR */
|
||||||
ProfiledPredFlag = 0x000010L, /* pred is being profiled */
|
ProfiledPredFlag = 0x000010L, /* pred is being profiled */
|
||||||
LogUpdatePredFlag= 0x000008L /* dynamic predicate with log. upd. sem.*/
|
LogUpdatePredFlag= 0x000008L /* dynamic predicate with log. upd. sem.*/
|
||||||
}
|
} pred_flag;
|
||||||
pred_flag;
|
|
||||||
|
|
||||||
/* profile data */
|
/* profile data */
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
lockvar lock; /* a simple lock to protect this entry */
|
lockvar lock; /* a simple lock to protect this entry */
|
||||||
#endif
|
#endif
|
||||||
@ -533,11 +486,9 @@ typedef struct
|
|||||||
Int NOfHeadSuccesses; /* nbr of times head unification succeeded*/
|
Int NOfHeadSuccesses; /* nbr of times head unification succeeded*/
|
||||||
Int NOfRetries; /* nbr of times a clause for the pred
|
Int NOfRetries; /* nbr of times a clause for the pred
|
||||||
was retried */
|
was retried */
|
||||||
}
|
} profile_data;
|
||||||
profile_data;
|
|
||||||
|
|
||||||
typedef struct pred_entry
|
typedef struct pred_entry {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
unsigned int ArityOfPE; /* arity of property */
|
unsigned int ArityOfPE; /* arity of property */
|
||||||
@ -558,16 +509,14 @@ typedef struct pred_entry
|
|||||||
OPCODE OpcodeOfPred; /* undefcode, indexcode, spycode, .... */
|
OPCODE OpcodeOfPred; /* undefcode, indexcode, spycode, .... */
|
||||||
profile_data StatisticsForPred; /* enable profiling for predicate */
|
profile_data StatisticsForPred; /* enable profiling for predicate */
|
||||||
SMALLUNSGN StateOfPred; /* actual state of predicate */
|
SMALLUNSGN StateOfPred; /* actual state of predicate */
|
||||||
}
|
} PredEntry;
|
||||||
PredEntry;
|
|
||||||
#define PEProp ((PropFlags)(0x0000))
|
#define PEProp ((PropFlags)(0x0000))
|
||||||
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN PredEntry * RepPredProp(Prop p);
|
inline EXTERN PredEntry * RepPredProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN PredEntry *
|
inline EXTERN PredEntry * RepPredProp(Prop p)
|
||||||
RepPredProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (PredEntry *) (AtomBase + Unsigned(p));
|
return (PredEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -576,8 +525,7 @@ RepPredProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsPredProp(PredEntry * p);
|
inline EXTERN Prop AbsPredProp(PredEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsPredProp(PredEntry * p)
|
||||||
AbsPredProp (PredEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -587,8 +535,7 @@ AbsPredProp (PredEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PredEntry * RepPredProp(Prop p);
|
inline EXTERN PredEntry * RepPredProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN PredEntry *
|
inline EXTERN PredEntry * RepPredProp(Prop p)
|
||||||
RepPredProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (PredEntry *) (p);
|
return (PredEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -597,8 +544,7 @@ RepPredProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsPredProp(PredEntry * p);
|
inline EXTERN Prop AbsPredProp(PredEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsPredProp(PredEntry * p)
|
||||||
AbsPredProp (PredEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -609,8 +555,7 @@ AbsPredProp (PredEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsPredProperty(int);
|
inline EXTERN PropFlags IsPredProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsPredProperty(int flags)
|
||||||
IsPredProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == PEProp) );
|
return (PropFlags) ((flags == PEProp) );
|
||||||
}
|
}
|
||||||
@ -622,12 +567,10 @@ IsPredProperty (int flags)
|
|||||||
#define MAX_C_PREDS 360
|
#define MAX_C_PREDS 360
|
||||||
#define MAX_CMP_FUNCS 20
|
#define MAX_CMP_FUNCS 20
|
||||||
|
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
PredEntry *p;
|
PredEntry *p;
|
||||||
CmpPredicate f;
|
CmpPredicate f;
|
||||||
}
|
} cmp_entry;
|
||||||
cmp_entry;
|
|
||||||
|
|
||||||
extern CPredicate c_predicates[MAX_C_PREDS];
|
extern CPredicate c_predicates[MAX_C_PREDS];
|
||||||
extern cmp_entry cmp_funcs[MAX_CMP_FUNCS];
|
extern cmp_entry cmp_funcs[MAX_CMP_FUNCS];
|
||||||
@ -635,8 +578,7 @@ extern cmp_entry cmp_funcs[MAX_CMP_FUNCS];
|
|||||||
|
|
||||||
/* Flags for code or dbase entry */
|
/* Flags for code or dbase entry */
|
||||||
/* There are several flags for code and data base entries */
|
/* There are several flags for code and data base entries */
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
|
||||||
GcFoundMask = 0x10000, /* informs this is a dynamic predicate */
|
GcFoundMask = 0x10000, /* informs this is a dynamic predicate */
|
||||||
DynamicMask = 0x8000, /* informs this is a dynamic predicate */
|
DynamicMask = 0x8000, /* informs this is a dynamic predicate */
|
||||||
InUseMask = 0x4000, /* informs this block is being used */
|
InUseMask = 0x4000, /* informs this block is being used */
|
||||||
@ -648,15 +590,13 @@ typedef enum
|
|||||||
StaticMask = 0x0100, /* dealing with static predicates */
|
StaticMask = 0x0100, /* dealing with static predicates */
|
||||||
SpiedMask = 0x0080 /* this predicate is being spied */
|
SpiedMask = 0x0080 /* this predicate is being spied */
|
||||||
/* other flags belong to DB */
|
/* other flags belong to DB */
|
||||||
}
|
} dbentry_flags;
|
||||||
dbentry_flags;
|
|
||||||
|
|
||||||
/* *********************** DBrefs **************************************/
|
/* *********************** DBrefs **************************************/
|
||||||
|
|
||||||
#define KEEP_ENTRY_AGE 1
|
#define KEEP_ENTRY_AGE 1
|
||||||
|
|
||||||
typedef struct DB_STRUCT
|
typedef struct DB_STRUCT {
|
||||||
{
|
|
||||||
Functor id; /* allow pointers to this struct to id */
|
Functor id; /* allow pointers to this struct to id */
|
||||||
/* as dbref */
|
/* as dbref */
|
||||||
Term EntryTerm; /* cell bound to itself */
|
Term EntryTerm; /* cell bound to itself */
|
||||||
@ -684,8 +624,7 @@ typedef struct DB_STRUCT
|
|||||||
CELL NOfCells; /* Size of Term */
|
CELL NOfCells; /* Size of Term */
|
||||||
CELL Entry; /* entry point */
|
CELL Entry; /* entry point */
|
||||||
Term Contents[MIN_ARRAY]; /* stored term */
|
Term Contents[MIN_ARRAY]; /* stored term */
|
||||||
}
|
} DBStruct;
|
||||||
DBStruct;
|
|
||||||
|
|
||||||
#define DBStructFlagsToDBStruct(X) ((DBRef)((X) - (CELL) &(((DBRef) NIL)->Flags)))
|
#define DBStructFlagsToDBStruct(X) ((DBRef)((X) - (CELL) &(((DBRef) NIL)->Flags)))
|
||||||
|
|
||||||
@ -707,8 +646,7 @@ typedef DBStruct *DBRef;
|
|||||||
|
|
||||||
inline EXTERN int IsDBRefTerm(Term);
|
inline EXTERN int IsDBRefTerm(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsDBRefTerm(Term t)
|
||||||
IsDBRefTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (IsApplTerm(t) && FunctorOfTerm(t) == FunctorDBRef);
|
return (int) (IsApplTerm(t) && FunctorOfTerm(t) == FunctorDBRef);
|
||||||
}
|
}
|
||||||
@ -717,8 +655,7 @@ IsDBRefTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN Term MkDBRefTerm(DBRef);
|
inline EXTERN Term MkDBRefTerm(DBRef);
|
||||||
|
|
||||||
inline EXTERN Term
|
inline EXTERN Term MkDBRefTerm(DBRef p)
|
||||||
MkDBRefTerm (DBRef p)
|
|
||||||
{
|
{
|
||||||
return (Term) ((AbsAppl(((CELL *)(p)))));
|
return (Term) ((AbsAppl(((CELL *)(p)))));
|
||||||
}
|
}
|
||||||
@ -727,8 +664,7 @@ MkDBRefTerm (DBRef p)
|
|||||||
|
|
||||||
inline EXTERN DBRef DBRefOfTerm(Term t);
|
inline EXTERN DBRef DBRefOfTerm(Term t);
|
||||||
|
|
||||||
inline EXTERN DBRef
|
inline EXTERN DBRef DBRefOfTerm(Term t)
|
||||||
DBRefOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (DBRef) (((DBRef)(RepAppl(t))));
|
return (DBRef) (((DBRef)(RepAppl(t))));
|
||||||
}
|
}
|
||||||
@ -738,8 +674,7 @@ DBRefOfTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN int IsRefTerm(Term);
|
inline EXTERN int IsRefTerm(Term);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int IsRefTerm(Term t)
|
||||||
IsRefTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (int) (IsApplTerm(t) && FunctorOfTerm(t) == FunctorDBRef);
|
return (int) (IsApplTerm(t) && FunctorOfTerm(t) == FunctorDBRef);
|
||||||
}
|
}
|
||||||
@ -748,16 +683,14 @@ IsRefTerm (Term t)
|
|||||||
|
|
||||||
inline EXTERN CODEADDR RefOfTerm(Term t);
|
inline EXTERN CODEADDR RefOfTerm(Term t);
|
||||||
|
|
||||||
inline EXTERN CODEADDR
|
inline EXTERN CODEADDR RefOfTerm(Term t)
|
||||||
RefOfTerm (Term t)
|
|
||||||
{
|
{
|
||||||
return (CODEADDR) (DBRefOfTerm(t));
|
return (CODEADDR) (DBRefOfTerm(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct struct_dbentry
|
typedef struct struct_dbentry {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
unsigned int ArityOfDB; /* kind of property */
|
unsigned int ArityOfDB; /* kind of property */
|
||||||
@ -773,13 +706,11 @@ typedef struct struct_dbentry
|
|||||||
#else
|
#else
|
||||||
DBRef FirstNEr; /* first non-erased DBase entry */
|
DBRef FirstNEr; /* first non-erased DBase entry */
|
||||||
#endif /* KEEP_ENTRY_AGE */
|
#endif /* KEEP_ENTRY_AGE */
|
||||||
}
|
} DBEntry;
|
||||||
DBEntry;
|
|
||||||
typedef DBEntry *DBProp;
|
typedef DBEntry *DBProp;
|
||||||
#define DBProperty ((PropFlags)0x8000)
|
#define DBProperty ((PropFlags)0x8000)
|
||||||
|
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
unsigned int ArityOfDB; /* kind of property */
|
unsigned int ArityOfDB; /* kind of property */
|
||||||
@ -792,8 +723,7 @@ typedef struct
|
|||||||
SMALLUNSGN ModuleOfDB; /* module for this definition */
|
SMALLUNSGN ModuleOfDB; /* module for this definition */
|
||||||
Int NOfEntries; /* age counter */
|
Int NOfEntries; /* age counter */
|
||||||
DBRef Index; /* age counter */
|
DBRef Index; /* age counter */
|
||||||
}
|
} LogUpdDBEntry;
|
||||||
LogUpdDBEntry;
|
|
||||||
typedef LogUpdDBEntry *LogUpdDBProp;
|
typedef LogUpdDBEntry *LogUpdDBProp;
|
||||||
#define LogUpdDBBit 0x1
|
#define LogUpdDBBit 0x1
|
||||||
#define CodeDBBit 0x2
|
#define CodeDBBit 0x2
|
||||||
@ -805,8 +735,7 @@ typedef LogUpdDBEntry *LogUpdDBProp;
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsDBProperty(int);
|
inline EXTERN PropFlags IsDBProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsDBProperty(int flags)
|
||||||
IsDBProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) (((flags & ~(LogUpdDBBit|CodeDBBit)) == DBProperty) );
|
return (PropFlags) (((flags & ~(LogUpdDBBit|CodeDBBit)) == DBProperty) );
|
||||||
}
|
}
|
||||||
@ -817,8 +746,7 @@ IsDBProperty (int flags)
|
|||||||
|
|
||||||
inline EXTERN DBProp RepDBProp(Prop p);
|
inline EXTERN DBProp RepDBProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN DBProp
|
inline EXTERN DBProp RepDBProp(Prop p)
|
||||||
RepDBProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (DBProp) (AtomBase + Unsigned(p));
|
return (DBProp) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -827,8 +755,7 @@ RepDBProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsDBProp(DBProp p);
|
inline EXTERN Prop AbsDBProp(DBProp p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsDBProp(DBProp p)
|
||||||
AbsDBProp (DBProp p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -838,8 +765,7 @@ AbsDBProp (DBProp p)
|
|||||||
|
|
||||||
inline EXTERN DBProp RepDBProp(Prop p);
|
inline EXTERN DBProp RepDBProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN DBProp
|
inline EXTERN DBProp RepDBProp(Prop p)
|
||||||
RepDBProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (DBProp) (p);
|
return (DBProp) (p);
|
||||||
}
|
}
|
||||||
@ -848,8 +774,7 @@ RepDBProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsDBProp(DBProp p);
|
inline EXTERN Prop AbsDBProp(DBProp p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsDBProp(DBProp p)
|
||||||
AbsDBProp (DBProp p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -859,8 +784,7 @@ AbsDBProp (DBProp p)
|
|||||||
|
|
||||||
|
|
||||||
/* These are the actual flags for DataBase terms */
|
/* These are the actual flags for DataBase terms */
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
|
||||||
DBAtomic = 0x1,
|
DBAtomic = 0x1,
|
||||||
DBVar = 0x2,
|
DBVar = 0x2,
|
||||||
DBNoVars = 0x4,
|
DBNoVars = 0x4,
|
||||||
@ -868,13 +792,11 @@ typedef enum
|
|||||||
DBCode = 0x10,
|
DBCode = 0x10,
|
||||||
DBNoCode = 0x20,
|
DBNoCode = 0x20,
|
||||||
DBWithRefs = 0x40
|
DBWithRefs = 0x40
|
||||||
}
|
} db_term_flags;
|
||||||
db_term_flags;
|
|
||||||
|
|
||||||
#define MaxModules 255
|
#define MaxModules 256
|
||||||
|
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
Atom KeyOfBB; /* functor for this property */
|
Atom KeyOfBB; /* functor for this property */
|
||||||
@ -883,16 +805,14 @@ typedef struct
|
|||||||
rwlock_t BBRWLock; /* a read-write lock to protect the entry */
|
rwlock_t BBRWLock; /* a read-write lock to protect the entry */
|
||||||
#endif
|
#endif
|
||||||
SMALLUNSGN ModuleOfBB; /* module for this definition */
|
SMALLUNSGN ModuleOfBB; /* module for this definition */
|
||||||
}
|
} BlackBoardEntry;
|
||||||
BlackBoardEntry;
|
|
||||||
typedef BlackBoardEntry *BBProp;
|
typedef BlackBoardEntry *BBProp;
|
||||||
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN BlackBoardEntry * RepBBProp(Prop p);
|
inline EXTERN BlackBoardEntry * RepBBProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN BlackBoardEntry *
|
inline EXTERN BlackBoardEntry * RepBBProp(Prop p)
|
||||||
RepBBProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (BlackBoardEntry *) (AtomBase + Unsigned(p));
|
return (BlackBoardEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -901,8 +821,7 @@ RepBBProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsBBProp(BlackBoardEntry * p);
|
inline EXTERN Prop AbsBBProp(BlackBoardEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsBBProp(BlackBoardEntry * p)
|
||||||
AbsBBProp (BlackBoardEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -912,8 +831,7 @@ AbsBBProp (BlackBoardEntry * p)
|
|||||||
|
|
||||||
inline EXTERN BlackBoardEntry * RepBBProp(Prop p);
|
inline EXTERN BlackBoardEntry * RepBBProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN BlackBoardEntry *
|
inline EXTERN BlackBoardEntry * RepBBProp(Prop p)
|
||||||
RepBBProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (BlackBoardEntry *) (p);
|
return (BlackBoardEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -922,8 +840,7 @@ RepBBProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsBBProp(BlackBoardEntry * p);
|
inline EXTERN Prop AbsBBProp(BlackBoardEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsBBProp(BlackBoardEntry * p)
|
||||||
AbsBBProp (BlackBoardEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -936,8 +853,7 @@ AbsBBProp (BlackBoardEntry * p)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsBBProperty(int);
|
inline EXTERN PropFlags IsBBProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsBBProperty(int flags)
|
||||||
IsBBProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == BBProperty));
|
return (PropFlags) ((flags == BBProperty));
|
||||||
}
|
}
|
||||||
@ -947,23 +863,21 @@ IsBBProperty (int flags)
|
|||||||
|
|
||||||
/* array property entry structure */
|
/* array property entry structure */
|
||||||
/* first case is for dynamic arrays */
|
/* first case is for dynamic arrays */
|
||||||
typedef struct
|
typedef struct array_entry {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
Int ArrayEArity; /* Arity of Array (positive) */
|
Int ArrayEArity; /* Arity of Array (positive) */
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
rwlock_t ArRWLock; /* a read-write lock to protect the entry */
|
rwlock_t ArRWLock; /* a read-write lock to protect the entry */
|
||||||
#endif
|
#endif
|
||||||
|
struct array_entry *NextArrayE; /* Pointer to the actual array */
|
||||||
Term ValueOfVE; /* Pointer to the actual array */
|
Term ValueOfVE; /* Pointer to the actual array */
|
||||||
}
|
} ArrayEntry;
|
||||||
ArrayEntry;
|
|
||||||
|
|
||||||
/* second case is for static arrays */
|
/* second case is for static arrays */
|
||||||
|
|
||||||
/* first, the valid types */
|
/* first, the valid types */
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
|
||||||
array_of_ints,
|
array_of_ints,
|
||||||
array_of_chars,
|
array_of_chars,
|
||||||
array_of_uchars,
|
array_of_uchars,
|
||||||
@ -972,11 +886,9 @@ typedef enum
|
|||||||
array_of_atoms,
|
array_of_atoms,
|
||||||
array_of_dbrefs,
|
array_of_dbrefs,
|
||||||
array_of_terms
|
array_of_terms
|
||||||
}
|
} static_array_types;
|
||||||
static_array_types;
|
|
||||||
|
|
||||||
typedef union
|
typedef union {
|
||||||
{
|
|
||||||
Int *ints;
|
Int *ints;
|
||||||
char *chars;
|
char *chars;
|
||||||
unsigned char *uchars;
|
unsigned char *uchars;
|
||||||
@ -985,12 +897,10 @@ typedef union
|
|||||||
Term *atoms;
|
Term *atoms;
|
||||||
Term *dbrefs;
|
Term *dbrefs;
|
||||||
DBRef *terms;
|
DBRef *terms;
|
||||||
}
|
} statarray_elements;
|
||||||
statarray_elements;
|
|
||||||
|
|
||||||
/* next, the actual data structure */
|
/* next, the actual data structure */
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
|
||||||
Prop NextOfPE; /* used to chain properties */
|
Prop NextOfPE; /* used to chain properties */
|
||||||
PropFlags KindOfPE; /* kind of property */
|
PropFlags KindOfPE; /* kind of property */
|
||||||
Int ArrayEArity; /* Arity of Array (negative) */
|
Int ArrayEArity; /* Arity of Array (negative) */
|
||||||
@ -999,16 +909,14 @@ typedef struct
|
|||||||
#endif
|
#endif
|
||||||
static_array_types ArrayType; /* Type of Array Elements. */
|
static_array_types ArrayType; /* Type of Array Elements. */
|
||||||
statarray_elements ValueOfVE; /* Pointer to the Array itself */
|
statarray_elements ValueOfVE; /* Pointer to the Array itself */
|
||||||
}
|
} StaticArrayEntry;
|
||||||
StaticArrayEntry;
|
|
||||||
|
|
||||||
|
|
||||||
#if USE_OFFSETS_IN_PROPS
|
#if USE_OFFSETS_IN_PROPS
|
||||||
|
|
||||||
inline EXTERN ArrayEntry * RepArrayProp(Prop p);
|
inline EXTERN ArrayEntry * RepArrayProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ArrayEntry *
|
inline EXTERN ArrayEntry * RepArrayProp(Prop p)
|
||||||
RepArrayProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ArrayEntry *) (AtomBase + Unsigned(p));
|
return (ArrayEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -1017,8 +925,7 @@ RepArrayProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsArrayProp(ArrayEntry * p);
|
inline EXTERN Prop AbsArrayProp(ArrayEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsArrayProp(ArrayEntry * p)
|
||||||
AbsArrayProp (ArrayEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -1027,8 +934,7 @@ AbsArrayProp (ArrayEntry * p)
|
|||||||
|
|
||||||
inline EXTERN StaticArrayEntry * RepStaticArrayProp(Prop p);
|
inline EXTERN StaticArrayEntry * RepStaticArrayProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN StaticArrayEntry *
|
inline EXTERN StaticArrayEntry * RepStaticArrayProp(Prop p)
|
||||||
RepStaticArrayProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (StaticArrayEntry *) (AtomBase + Unsigned(p));
|
return (StaticArrayEntry *) (AtomBase + Unsigned(p));
|
||||||
}
|
}
|
||||||
@ -1037,8 +943,7 @@ RepStaticArrayProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsStaticArrayProp(StaticArrayEntry * p);
|
inline EXTERN Prop AbsStaticArrayProp(StaticArrayEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsStaticArrayProp(StaticArrayEntry * p)
|
||||||
AbsStaticArrayProp (StaticArrayEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (Addr(p)-AtomBase);
|
return (Prop) (Addr(p)-AtomBase);
|
||||||
}
|
}
|
||||||
@ -1048,8 +953,7 @@ AbsStaticArrayProp (StaticArrayEntry * p)
|
|||||||
|
|
||||||
inline EXTERN ArrayEntry * RepArrayProp(Prop p);
|
inline EXTERN ArrayEntry * RepArrayProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN ArrayEntry *
|
inline EXTERN ArrayEntry * RepArrayProp(Prop p)
|
||||||
RepArrayProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (ArrayEntry *) (p);
|
return (ArrayEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -1058,8 +962,7 @@ RepArrayProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsArrayProp(ArrayEntry * p);
|
inline EXTERN Prop AbsArrayProp(ArrayEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsArrayProp(ArrayEntry * p)
|
||||||
AbsArrayProp (ArrayEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -1068,8 +971,7 @@ AbsArrayProp (ArrayEntry * p)
|
|||||||
|
|
||||||
inline EXTERN StaticArrayEntry * RepStaticArrayProp(Prop p);
|
inline EXTERN StaticArrayEntry * RepStaticArrayProp(Prop p);
|
||||||
|
|
||||||
inline EXTERN StaticArrayEntry *
|
inline EXTERN StaticArrayEntry * RepStaticArrayProp(Prop p)
|
||||||
RepStaticArrayProp (Prop p)
|
|
||||||
{
|
{
|
||||||
return (StaticArrayEntry *) (p);
|
return (StaticArrayEntry *) (p);
|
||||||
}
|
}
|
||||||
@ -1078,8 +980,7 @@ RepStaticArrayProp (Prop p)
|
|||||||
|
|
||||||
inline EXTERN Prop AbsStaticArrayProp(StaticArrayEntry * p);
|
inline EXTERN Prop AbsStaticArrayProp(StaticArrayEntry * p);
|
||||||
|
|
||||||
inline EXTERN Prop
|
inline EXTERN Prop AbsStaticArrayProp(StaticArrayEntry * p)
|
||||||
AbsStaticArrayProp (StaticArrayEntry * p)
|
|
||||||
{
|
{
|
||||||
return (Prop) (p);
|
return (Prop) (p);
|
||||||
}
|
}
|
||||||
@ -1091,8 +992,7 @@ AbsStaticArrayProp (StaticArrayEntry * p)
|
|||||||
|
|
||||||
inline EXTERN int ArrayIsDynamic(ArrayEntry *);
|
inline EXTERN int ArrayIsDynamic(ArrayEntry *);
|
||||||
|
|
||||||
inline EXTERN int
|
inline EXTERN int ArrayIsDynamic(ArrayEntry * are)
|
||||||
ArrayIsDynamic (ArrayEntry * are)
|
|
||||||
{
|
{
|
||||||
return (int) (((are)->ArrayEArity > 0 ));
|
return (int) (((are)->ArrayEArity > 0 ));
|
||||||
}
|
}
|
||||||
@ -1102,8 +1002,7 @@ ArrayIsDynamic (ArrayEntry * are)
|
|||||||
|
|
||||||
inline EXTERN PropFlags IsArrayProperty(int);
|
inline EXTERN PropFlags IsArrayProperty(int);
|
||||||
|
|
||||||
inline EXTERN PropFlags
|
inline EXTERN PropFlags IsArrayProperty(int flags)
|
||||||
IsArrayProperty (int flags)
|
|
||||||
{
|
{
|
||||||
return (PropFlags) ((flags == ArrayProperty) );
|
return (PropFlags) ((flags == ArrayProperty) );
|
||||||
}
|
}
|
||||||
@ -1117,7 +1016,7 @@ int STD_PROTO (RemoveIndexation, (PredEntry *));
|
|||||||
|
|
||||||
/* dbase.c */
|
/* dbase.c */
|
||||||
void STD_PROTO(ErDBE,(DBRef));
|
void STD_PROTO(ErDBE,(DBRef));
|
||||||
DBRef STD_PROTO (StoreTermInDB, (Term, int));
|
DBRef STD_PROTO(StoreTermInDB,(int,int));
|
||||||
Term STD_PROTO(FetchTermFromDB,(DBRef,int));
|
Term STD_PROTO(FetchTermFromDB,(DBRef,int));
|
||||||
void STD_PROTO(ReleaseTermFromDB,(DBRef));
|
void STD_PROTO(ReleaseTermFromDB,(DBRef));
|
||||||
|
|
||||||
@ -1140,12 +1039,10 @@ PredPropByFunc (Functor f, SMALLUNSGN cur_mod)
|
|||||||
|
|
||||||
WRITE_LOCK(fe->FRWLock);
|
WRITE_LOCK(fe->FRWLock);
|
||||||
p0 = fe->PropsOfFE;
|
p0 = fe->PropsOfFE;
|
||||||
while (p0)
|
while (p0) {
|
||||||
{
|
|
||||||
PredEntry *p = RepPredProp(p0);
|
PredEntry *p = RepPredProp(p0);
|
||||||
if (/* p->KindOfPE != 0 || only props */
|
if (/* p->KindOfPE != 0 || only props */
|
||||||
(p->ModuleOfPred == cur_mod || !(p->ModuleOfPred)))
|
(p->ModuleOfPred == cur_mod || !(p->ModuleOfPred))) {
|
||||||
{
|
|
||||||
WRITE_UNLOCK(f->FRWLock);
|
WRITE_UNLOCK(f->FRWLock);
|
||||||
return (p0);
|
return (p0);
|
||||||
}
|
}
|
||||||
@ -1163,12 +1060,10 @@ PredPropByAtom (Atom at, SMALLUNSGN cur_mod)
|
|||||||
|
|
||||||
WRITE_LOCK(ae->ARWLock);
|
WRITE_LOCK(ae->ARWLock);
|
||||||
p0 = ae->PropsOfAE;
|
p0 = ae->PropsOfAE;
|
||||||
while (p0)
|
while (p0) {
|
||||||
{
|
|
||||||
PredEntry *pe = RepPredProp(p0);
|
PredEntry *pe = RepPredProp(p0);
|
||||||
if ( pe->KindOfPE == PEProp &&
|
if ( pe->KindOfPE == PEProp &&
|
||||||
(pe->ModuleOfPred == cur_mod || !pe->ModuleOfPred))
|
(pe->ModuleOfPred == cur_mod || !pe->ModuleOfPred)) {
|
||||||
{
|
|
||||||
WRITE_UNLOCK(ae->ARWLock);
|
WRITE_UNLOCK(ae->ARWLock);
|
||||||
return(p0);
|
return(p0);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
inline EXTERN Prop PropAdjust(Prop p)
|
inline EXTERN Prop PropAdjust(Prop p)
|
||||||
@ -251,11 +242,20 @@ inline EXTERN Atom AtomAdjust(Atom);
|
|||||||
|
|
||||||
inline EXTERN Atom AtomAdjust(Atom at)
|
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);
|
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
|
#if TAGS_FAST_OPS
|
||||||
|
|
||||||
inline EXTERN Term BlobTermAdjust(Term);
|
inline EXTERN Term BlobTermAdjust(Term);
|
||||||
@ -393,7 +372,16 @@ inline EXTERN PredEntry * PtoPredAdjust(PredEntry *);
|
|||||||
|
|
||||||
inline EXTERN PredEntry * PtoPredAdjust(PredEntry * ptr)
|
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
|
splat
|
||||||
cd ../VC
|
cd ../VC
|
||||||
splat
|
splat
|
||||||
cd include
|
cd ../LGPL
|
||||||
|
splat
|
||||||
|
cd pillow
|
||||||
|
splat
|
||||||
|
cd examples
|
||||||
|
splat
|
||||||
|
cd ../../../include
|
||||||
splat
|
splat
|
||||||
/bin/cp config.h config.h.mine
|
/bin/cp config.h config.h.mine
|
||||||
/bin/cp ../../../bins/cyg/*.h .
|
/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
|
@cindex booting
|
||||||
We next describe how to invoke Yap in Unix systems.
|
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
|
@section Running Yap Interactively
|
||||||
|
|
||||||
Most often you will want to use Yap in interactive mode. Assuming that
|
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.
|
directory.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node Running Prolog Files, ,Interactive Mode, Run
|
@node Running Prolog Files, Running Yap Interactively, , Run
|
||||||
@section Running Prolog Files
|
@section Running Prolog Files
|
||||||
|
|
||||||
YAP can also be used to run Prolog files as scripts, at least in
|
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.
|
@code{error}, @code{warning}, @code{fail}, or a goal.
|
||||||
|
|
||||||
@item user:unknown_predicate_handler(+G,+M,?NG)
|
@item user:unknown_predicate_handler(+G,+M,?NG)
|
||||||
@findex user:unknown_predicate_handler/3
|
@findex unknown_predicate_handler/3
|
||||||
@syindex user:unknown_predicate_handler/3
|
@syindex unknown_predicate_handler/3
|
||||||
@cnindex user:unknown_predicate_handler/3
|
@cnindex unknown_predicate_handler/3
|
||||||
The user may also define clauses for
|
The user may also define clauses for
|
||||||
@code{user:unknown_predicate_handler/3} hook predicate. This
|
@code{user:unknown_predicate_handler/3} hook predicate. This
|
||||||
user-defined procedure is called before any system processing for the
|
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.
|
whenever the compilation of arithmetic expressions is in progress.
|
||||||
|
|
||||||
@item user:goal_expansion(+@var{G},+@var{M},-@var{NG})
|
@item user:goal_expansion(+@var{G},+@var{M},-@var{NG})
|
||||||
@findex user:goal_expansion/3
|
@findex goal_expansion/3
|
||||||
@snindex user:goal_expansion/3
|
@snindex goal_expansion/3
|
||||||
@cnindex user:goal_expansion/3
|
@cnindex goal_expansion/3
|
||||||
Yap now supports @code{goal_expansion/3}. This is an user-defined
|
Yap now supports @code{goal_expansion/3}. This is an user-defined
|
||||||
procedure that is called after term expansion when compiling or
|
procedure that is called after term expansion when compiling or
|
||||||
asserting goals for each sub-goal in a clause. The first argument is
|
asserting goals for each sub-goal in a clause. The first argument is
|
||||||
|
Reference in New Issue
Block a user