•t˜^ A - cpred.h‚ÌƒŠƒXƒg
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


–ß‚é ‘±‚­..