fix fflush
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@125 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
427
VC/include/Yap.h
427
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.1.1.1 2001-04-09 19:53:41 vsc Exp $ *
|
||||
* version: $Id: Yap.h,v 1.2 2001-07-16 15:26:14 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
@@ -71,7 +71,7 @@
|
||||
#endif /* YAPOR */
|
||||
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
#undef TRAILING_REQUIRES_BRANCH
|
||||
#undef TRAILING_REQUIRES_BRANCH
|
||||
#endif /* YAPOR || TABLING */
|
||||
|
||||
#if ANALYST
|
||||
@@ -86,7 +86,21 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER /* Microsoft's Visual C++ Compiler */
|
||||
#ifdef SBA
|
||||
#ifdef YAPOR
|
||||
#ifndef FROZEN_STACKS
|
||||
#define FROZEN_STACKS 1
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef TABLING
|
||||
#ifndef FROZEN_STACKS
|
||||
#define FROZEN_STACKS 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER /* Microsoft's Visual C++ Compiler */
|
||||
/* adjust a config.h from mingw32 to work with vc++ */
|
||||
#ifdef HAVE_GCC
|
||||
#undef HAVE_GCC
|
||||
@@ -121,7 +135,7 @@
|
||||
|
||||
#if HAVE_GCC
|
||||
#define MIN_ARRAY 0
|
||||
#define DUMMY_FILLER_FOR_ABS_TYPE
|
||||
#define DUMMY_FILLER_FOR_ABS_TYPE
|
||||
#else
|
||||
#define MIN_ARRAY 1
|
||||
#define DUMMY_FILLER_FOR_ABS_TYPE int dummy;
|
||||
@@ -157,15 +171,17 @@
|
||||
/* */ typedef unsigned long int UInt;
|
||||
|
||||
#else
|
||||
error Yap require integer types of the same size as a pointer
|
||||
error Yap require integer types of the same size as a pointer
|
||||
#endif
|
||||
|
||||
#if SIZEOF_SHORT_INT==2
|
||||
/* */ typedef short int Short;
|
||||
/* */ typedef unsigned short int UShort;
|
||||
|
||||
#else
|
||||
error Yap requires integer types half the size of a pointer
|
||||
error Yap requires integer types half the size of a pointer
|
||||
#endif
|
||||
|
||||
#elif SIZEOF_INT_P==8
|
||||
|
||||
# if SIZEOF_INT==8
|
||||
@@ -181,8 +197,9 @@ error Yap require integer types of the same size as a pointer
|
||||
/* */ typedef unsigned long long int UInt;
|
||||
|
||||
# else
|
||||
error Yap requires integer types of the same size as a pointer
|
||||
error Yap requires integer types of the same size as a pointer
|
||||
# endif
|
||||
|
||||
# if SIZEOF_SHORT_INT==4
|
||||
/* */ typedef short int Short;
|
||||
/* */ typedef unsigned short int UShort;
|
||||
@@ -192,13 +209,16 @@ error Yap requires integer types of the same size as a pointer
|
||||
/* */ typedef short int UShort;
|
||||
|
||||
# else
|
||||
error Yap requires integer types half the size of a pointer
|
||||
error Yap requires integer types half the size of a pointer
|
||||
# endif
|
||||
|
||||
#else
|
||||
|
||||
error Yap requires pointers of size 4 or 8
|
||||
error Yap requires pointers of size 4 or 8
|
||||
|
||||
#endif
|
||||
/* */ typedef double Float;
|
||||
|
||||
/* */ typedef double Float;
|
||||
|
||||
#if SIZEOF_INT<SIZEOF_INT_P
|
||||
#define SHORT_INTS 1
|
||||
@@ -207,7 +227,7 @@ error Yap requires pointers of size 4 or 8
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
extern char Option[20];
|
||||
extern char Option[20];
|
||||
#endif
|
||||
|
||||
/* #define FORCE_SECOND_QUADRANT 1 */
|
||||
@@ -224,8 +244,10 @@ extern char Option[20];
|
||||
#define MMAP_ADDR 0x40000000
|
||||
#elif mips
|
||||
#define MMAP_ADDR 0x02000000
|
||||
#elif __APPLE__
|
||||
#define MMAP_ADDR 0x01000000
|
||||
#else
|
||||
#define MMAP_ADDR 0x10010000
|
||||
#define MMAP_ADDR 0x10000000
|
||||
#endif
|
||||
#elif __svr4__
|
||||
#define MMAP_ADDR 0x02000000
|
||||
@@ -267,7 +289,7 @@ typedef CELL SFLAGS;
|
||||
typedef BITS16 SFLAGS;
|
||||
#endif
|
||||
|
||||
typedef char *ADDR;
|
||||
typedef char *ADDR;
|
||||
typedef CELL OFFSET;
|
||||
typedef unsigned char *CODEADDR;
|
||||
|
||||
@@ -362,7 +384,7 @@ typedef CELL Term;
|
||||
#define siglongjmp(Env, Arg) longjmp(Env, Arg)
|
||||
#endif
|
||||
|
||||
extern sigjmp_buf RestartEnv; /* used to restart after an abort */
|
||||
extern sigjmp_buf RestartEnv; /* used to restart after an abort */
|
||||
|
||||
/* Support for arrays */
|
||||
#include "arrays.h"
|
||||
@@ -370,8 +392,7 @@ extern sigjmp_buf RestartEnv; /* used to restart after an abort */
|
||||
/************ variables concerned with Error Handling *************/
|
||||
|
||||
/* Types of Errors */
|
||||
typedef enum
|
||||
{
|
||||
typedef enum {
|
||||
NO_ERROR,
|
||||
FATAL_ERROR,
|
||||
INTERNAL_ERROR,
|
||||
@@ -407,6 +428,7 @@ typedef enum
|
||||
EXISTENCE_ERROR_STREAM,
|
||||
INSTANTIATION_ERROR,
|
||||
PERMISSION_ERROR_ACCESS_PRIVATE_PROCEDURE,
|
||||
PERMISSION_ERROR_NEW_ALIAS_FOR_STREAM,
|
||||
PERMISSION_ERROR_CREATE_ARRAY,
|
||||
PERMISSION_ERROR_CREATE_OPERATOR,
|
||||
PERMISSION_ERROR_INPUT_BINARY_STREAM,
|
||||
@@ -445,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 */
|
||||
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,
|
||||
@@ -470,8 +490,7 @@ typedef enum
|
||||
WRITE_QUOTED_STRING_FLAG = 13,
|
||||
ALLOW_ASSERTING_STATIC_FLAG = 14,
|
||||
HALT_AFTER_CONSULT_FLAG = 15
|
||||
}
|
||||
yap_flags;
|
||||
} yap_flags;
|
||||
|
||||
#define STRING_AS_CHARS 0
|
||||
#define STRING_AS_ATOM 2
|
||||
@@ -481,6 +500,7 @@ yap_flags;
|
||||
|
||||
#define CPROLOG_CHARACTER_ESCAPES 0
|
||||
#define ISO_CHARACTER_ESCAPES 1
|
||||
#define SICSTUS_CHARACTER_ESCAPES 2
|
||||
|
||||
#define NUMBER_OF_YAP_FLAGS HALT_AFTER_CONSULT_FLAG+1
|
||||
|
||||
@@ -498,46 +518,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
|
||||
@@ -587,7 +607,7 @@ yap_flags;
|
||||
#define RBIT 0x40000000
|
||||
|
||||
#if IN_SECOND_QUADRANT
|
||||
#define INVERT_RBIT 1 /* RBIT is 1 by default */
|
||||
#define INVERT_RBIT 1 /* RBIT is 1 by default */
|
||||
#endif
|
||||
|
||||
#else
|
||||
@@ -595,7 +615,7 @@ yap_flags;
|
||||
#if defined(SBA) && defined(__linux__)
|
||||
#define MBIT /* 0x20000000 */ MKTAG(0x1,0) /* mark bit */
|
||||
#else
|
||||
#define RBIT /* 0x20000000 */ MKTAG(0x1,0) /* relocation chain bit */
|
||||
#define RBIT /* 0x20000000 */ MKTAG(0x1,0) /* relocation chain bit */
|
||||
#define MBIT /* 0x40000000 */ MKTAG(0x2,0) /* mark bit */
|
||||
#endif
|
||||
#endif
|
||||
@@ -604,140 +624,127 @@ yap_flags;
|
||||
|
||||
/* 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);
|
||||
return (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++));
|
||||
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);
|
||||
return (int) (t == 0);
|
||||
}
|
||||
|
||||
|
||||
#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++));
|
||||
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));
|
||||
return (Functor) (*RepAppl(t));
|
||||
}
|
||||
|
||||
|
||||
#if IN_SECOND_QUADRANT
|
||||
|
||||
inline EXTERN Term MkAtomTerm (Atom);
|
||||
inline EXTERN Term MkAtomTerm(Atom);
|
||||
|
||||
inline EXTERN Term
|
||||
MkAtomTerm (Atom a)
|
||||
inline EXTERN Term MkAtomTerm(Atom a)
|
||||
{
|
||||
return (Term) (TAGGEDA (AtomTag, (CELL *) (a) - (CELL *) HEAP_INIT_BASE));
|
||||
return (Term) (TAGGEDA(AtomTag, (CELL *)(a)-(CELL *)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) ((CELL *) HEAP_INIT_BASE + NonTagPart (t));
|
||||
return (Atom) ((CELL *)HEAP_INIT_BASE+NonTagPart(t));
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
inline EXTERN Term MkAtomTerm (Atom);
|
||||
inline EXTERN Term MkAtomTerm(Atom);
|
||||
|
||||
inline EXTERN Term
|
||||
MkAtomTerm (Atom a)
|
||||
inline EXTERN Term MkAtomTerm(Atom a)
|
||||
{
|
||||
return (Term) (TAGGEDA (AtomTag, (a)));
|
||||
return (Term) (TAGGEDA(AtomTag, (a)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
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) (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)));
|
||||
}
|
||||
|
||||
|
||||
@@ -746,22 +753,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));
|
||||
}
|
||||
|
||||
|
||||
@@ -775,8 +780,8 @@ IsIntTerm (Term t)
|
||||
#ifdef TAGS_FAST_OPS
|
||||
#define IntInBnd(X) (Unsigned( ( (Int)(X) >> (32-7) ) + 1) <= 1)
|
||||
#else
|
||||
#define IntInBnd(X) ( (X) < (Int)MAX_ABS_INT && \
|
||||
(X) > -(Int)MAX_ABS_INT-1 )
|
||||
#define IntInBnd(X) ( (X) < MAX_ABS_INT && \
|
||||
(X) > -MAX_ABS_INT-1L )
|
||||
#endif
|
||||
#endif
|
||||
#ifdef C_PROLOG
|
||||
@@ -788,10 +793,11 @@ IsIntTerm (Term t)
|
||||
|
||||
/************* variables related to memory allocation *******************/
|
||||
/* must be before TermExt.h */
|
||||
extern ADDR HeapBase,
|
||||
LocalBase,
|
||||
GlobalBase,
|
||||
TrailBase, TrailTop, ForeignCodeBase, ForeignCodeTop, ForeignCodeMax;
|
||||
extern ADDR HeapBase,
|
||||
LocalBase,
|
||||
GlobalBase,
|
||||
TrailBase, TrailTop,
|
||||
ForeignCodeBase, ForeignCodeTop, ForeignCodeMax;
|
||||
|
||||
|
||||
/*
|
||||
@@ -809,32 +815,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));
|
||||
}
|
||||
|
||||
|
||||
@@ -851,63 +854,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));
|
||||
}
|
||||
|
||||
|
||||
@@ -916,7 +913,7 @@ TailOfTermCell (Term t)
|
||||
#define MaxHash 1001
|
||||
|
||||
/************ variables concerned with save and restore *************/
|
||||
extern int splfild;
|
||||
extern int splfild;
|
||||
|
||||
#define FAIL_RESTORE 0
|
||||
#define DO_EVERYTHING 1
|
||||
@@ -927,24 +924,22 @@ extern int splfild;
|
||||
|
||||
/******************** using Emacs mode ********************************/
|
||||
|
||||
extern int emacs_mode;
|
||||
extern int emacs_mode;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/************ variable concerned with version number *****************/
|
||||
extern char version_number[];
|
||||
extern char version_number[];
|
||||
|
||||
/* consult stack management */
|
||||
|
||||
typedef union CONSULT_OBJ
|
||||
{
|
||||
typedef union CONSULT_OBJ {
|
||||
char *filename;
|
||||
int mode;
|
||||
Prop p;
|
||||
Prop p;
|
||||
union CONSULT_OBJ *c;
|
||||
}
|
||||
consult_obj;
|
||||
} consult_obj;
|
||||
|
||||
/********* common instructions codes*************************/
|
||||
|
||||
@@ -953,35 +948,35 @@ consult_obj;
|
||||
#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
|
||||
|
||||
/******************* controlling the compiler ****************************/
|
||||
extern int optimizer_on;
|
||||
extern int optimizer_on;
|
||||
|
||||
/******************* the line for the current parse **********************/
|
||||
extern int StartLine;
|
||||
extern int StartCh;
|
||||
extern int CurFileNo;
|
||||
extern int StartLine;
|
||||
extern int StartCh;
|
||||
extern int CurFileNo;
|
||||
|
||||
/********************* how to write a Prolog term ***********************/
|
||||
|
||||
/********* Prolog may be in several modes *******************************/
|
||||
|
||||
#define BootMode 1 /* if booting or restoring */
|
||||
#define UserMode 2 /* Normal mode */
|
||||
#define CritMode 4 /* If we are meddling with the heap */
|
||||
#define FullLMode 8 /* to access the hidden atoms chain */
|
||||
#define AbortMode 16 /* expecting to abort */
|
||||
#define InterruptMode 32 /* under an interrupt */
|
||||
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 */
|
||||
} prolog_exec_mode;
|
||||
|
||||
extern int PrologMode;
|
||||
extern prolog_exec_mode PrologMode;
|
||||
extern int CritLocks;
|
||||
|
||||
#if SIZEOF_INT_P==4
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
@@ -1011,8 +1006,8 @@ extern int PrologMode;
|
||||
|
||||
/************** Access to yap initial arguments ***************************/
|
||||
|
||||
extern char **yap_args;
|
||||
extern int yap_argc;
|
||||
extern char **yap_args;
|
||||
extern int yap_argc;
|
||||
|
||||
#ifdef YAPOR
|
||||
#define YAPEnterCriticalSection() \
|
||||
@@ -1022,17 +1017,46 @@ extern int yap_argc;
|
||||
GLOBAL_LOCKS_who_locked_heap = worker_id; \
|
||||
} \
|
||||
PrologMode |= CritMode; \
|
||||
CritLocks++; \
|
||||
}
|
||||
#define YAPLeaveCriticalSection() \
|
||||
{ \
|
||||
if ((PrologMode ^= CritMode) & AbortMode) Abort((char *)NIL); \
|
||||
GLOBAL_LOCKS_who_locked_heap = MAX_WORKERS; \
|
||||
UNLOCK(GLOBAL_LOCKS_heap_access); \
|
||||
CritLocks--; \
|
||||
if (!CritLocks) { \
|
||||
PrologMode &= ~CritMode; \
|
||||
if (PrologMode & InterruptMode) { \
|
||||
PrologMode &= ~InterruptMode; \
|
||||
ProcessSIGINT(); \
|
||||
} \
|
||||
if (PrologMode & AbortMode) { \
|
||||
PrologMode &= ~AbortMode; \
|
||||
Abort(""); \
|
||||
} \
|
||||
GLOBAL_LOCKS_who_locked_heap = MAX_WORKERS; \
|
||||
UNLOCK(GLOBAL_LOCKS_heap_access); \
|
||||
} \
|
||||
}
|
||||
#else
|
||||
#define YAPEnterCriticalSection() PrologMode |= CritMode;
|
||||
#define YAPLeaveCriticalSection() \
|
||||
if((PrologMode ^= CritMode) & AbortMode) Abort((char *)NIL);
|
||||
#define YAPEnterCriticalSection() \
|
||||
{ \
|
||||
PrologMode |= CritMode; \
|
||||
CritLocks++; \
|
||||
}
|
||||
#define YAPLeaveCriticalSection() \
|
||||
{ \
|
||||
CritLocks--; \
|
||||
if (!CritLocks) { \
|
||||
PrologMode &= ~CritMode; \
|
||||
if (PrologMode & InterruptMode) { \
|
||||
PrologMode &= ~InterruptMode; \
|
||||
ProcessSIGINT(); \
|
||||
} \
|
||||
if (PrologMode & AbortMode) { \
|
||||
PrologMode &= ~AbortMode; \
|
||||
Abort(""); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
#endif /* YAPOR */
|
||||
|
||||
/* when we are calling the InitStaff procedures */
|
||||
@@ -1041,31 +1065,29 @@ extern int yap_argc;
|
||||
|
||||
/********* whether we should try to compile array references ******************/
|
||||
|
||||
extern int compile_arrays;
|
||||
extern int compile_arrays;
|
||||
|
||||
/********* mutable variables ******************/
|
||||
|
||||
/* 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 ***********************/
|
||||
|
||||
#if DEBUG
|
||||
extern int output_msg;
|
||||
extern int output_msg;
|
||||
#endif
|
||||
|
||||
#if EMACS
|
||||
extern char emacs_tmp[], emacs_tmp2[];
|
||||
extern char emacs_tmp[], emacs_tmp2[];
|
||||
#endif
|
||||
|
||||
#if HAVE_SIGNAL
|
||||
extern int snoozing;
|
||||
extern int snoozing;
|
||||
#endif
|
||||
|
||||
#if defined(YAPOR) || defined(TABLING)
|
||||
@@ -1077,3 +1099,4 @@ extern int snoozing;
|
||||
#if SBA
|
||||
#include "sbaunify.h"
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user