Move to
Next Prev
Up Top
See also
イントロダクション
開発にさらに便利なIF/Prologライブラリ関数
バックトラックしないProlog述語をC言語で書く
バックトラックするProlog述語をC言語で書く
cgenマニュアル
低レベルのインタフェイス
IF/Prolog ストリーム ・インタフェース
付録 A - cpred.hのリスト
付録 B - cpro.hのリスト
IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > 付録 A - cpred.hのリスト

付録 A - cpred.hのリスト

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

read on...
IF/Prolog by Siemens
Language
English
Japanese
German
Server
USA
Japan
Site Access
Local Index
Local Contents
Site Contents
Site Index
Printer Friendly
For imode
For PDA
Search
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/appa/home_en.html
published 2008/6/30 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 info@ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
scroll to top managed with ubiCMS