MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
For current customers, we continue to provide
professional support for IF/Prolog until Dec 31, 2008.
/*
# (c) Copyright InterFace Computer GmbH, Munich, West Germany
# %Z% %M% v%I% %E% %U%
# cpred.h
# USAGE: C Interface functions and macros
*/
/*********************************************************
* *
* PROLOG header file for C predicates *
* *
*********************************************************/
#ifndef CPREDHINCLUDED
/* Has not yet been included */
#define CPREDHINCLUDED
#ifndef MAXARITY
# define MAXARITY (127)
#endif
typedef long TERM;
typedef long INT;
typedef double DBL;
typedef TERM CELL;
typedef unsigned char BYTE;
#define MaxInt (0x0FFFFFFFl) /* largest integer */
#define MinInt (-MaxInt-1) /* smallest integer */
#define COROUTINE(n,t,s) int n(port,s) int port;t *s;{switch(port){case 0:break;
#define RESUME(no,label) case no: goto label
#define HASEPILOG case -1: goto _epilog
#define BEGIN default: return 0;};{
#define DETACH(no,label) { return no; label: ; }
#define FAIL return 0
#define EPILOG return 0; _epilog
#define END } return 0; }
#define EXCEPTION(msg) { XChk(0,msg);FAIL;}
#if IBMPC & ! NARGS
extern TERM DblCP(double);
extern DBL DblPC(TERM);
extern INT IntPC(TERM);
extern TERM IntCP(INT);
extern TERM StrAt(char*);
extern char* AtStr(TERM);
extern TERM Arg(int);
extern TERM MkList(TERM,TERM,TERM**);
extern TERM Nil(void);
extern TERM StrList(char*,TERM**);
extern int IsInteger(TERM,INT*);
#else
TERM DblCP();
DBL DblPC();
TERM IntCP();
INT IntPC();
TERM StrAt();
char *AtStr();
TERM Arg();
TERM MkList(), StrList(), Nil();
#endif
TERM iMkStructure(), MkStructure(), iMkviStructure(),
iMkvStructure(), iMkeStructure();
TERM MkVariable();
CELL FctEntry(), FindAt();
#define MkeStructure(F,N,arglist) iMkeStructure(FctEntry(FindAt(F),(int)N),arglist)
#define MkvStructure(F,N,arglist) iMkvStructure(FctEntry(FindAt(F),(int)N),arglist)
#define CPRIM(N,A,F) { int F (); Cprim(N,A,F); }
#define CPRED(N,A,F,S) { int F (); Cpred(N,A,F,S); }
#define EOFCHAR (26)
typedef union {
long varno;
long ivalue;
double dvalue;
struct {
char *name;
int arity;
TERM *args;
int aop;
CELL index;
} fct;
} TermInfo;
#define T_VARIABLE (0)
#define T_ATOM (1)
#define T_INTEGER (2)
#define T_DOUBLE (3)
#define T_STRUCTURE (4)
int WhichTerm();
#define Call(fctptr) (*(fctptr))
extern int RResult();
extern int IResult();
extern DBL RArg();
extern INT IArg();
extern int IsIArg();
extern TERM Dr();
extern TERM MkOnOff();
extern int IsOnOff();
#define AFUNC(name,arity,fct) { int fct (); AFunc(name,arity,fct); }
#endif
|