イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > C言語からIF/Prologへのインタフェ−ス > ライブラリー関数と型定義

ライブラリー関数と型定義

IF/Prolog by Siemens
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関数は、ホスト言語Cインタフェ−スの機能をサポ−トします。

InitProlog(ARGC, ARGV, IN, OUT, ERR) int ARGC; char *ARGV[]; FILE *IN, *OUT, *ERR;

ParseProlog(QUERY, DESCR) char *QUERY; QueryDescr **DESCR;

ResetQueries()

RunProlog(DESCR) QueryDescr *DESCR;

EndProlog()

InitProlog()はIF/Prologのシステムを初期化し、ファイルポインタをIF/Prologの stdin,stdout,stderr にセットします。

ParseProlog()は質問(1つないしそれ以上のゴ−ルのある)を構文解析し、質問を記述する記述子を返します。

RunProlog()は質問を実行し、(次の)解を返します。

ResetQueries()は、IF/Prologの各”実行”前後のスタックをクリアします。

EndProlog()は、IF/Prologに割り当てられたメモリを開放します。

以下に示すユ−ティリティ関数も提供されています。

InitParms(Parms,IFARGC,IFARGV) char *Parms, *IFARGV[]; int *IFARGC; char *fprintt(fp,format,arg1,arg2,...) char *printt(format,arg1,arg2,...) char *sprintt(bufp,format,arg1,arg2,...) int outputlen(termformat,Term) char *termformat; TERM Term;

InitParms()は文字列であるParmsの内容に応じて、argvやargcをIF/Prologにセットします。

fprintt(),printt(),sprintt()は、デ−タ型がCまたはIF/Prologのいずれかにかかわらず、formatに従ってそれらの引数を出力します。

outputlen()は、Termがtermformatとして出力された場合の出力文字数を数えます。

変数に関する情報を格納するデ−タ構造体はVarDescrであり、構文解析された質問に関する情報を格納するデ−タ構造体は、QueryDescrです。

QueryDescrは質問に関する情報を保持するために、ParseProlog()によって割り当てられ、更新されます。これはRunProlog()との間で情報をやりとりするのに使われます。

VarDescrの配列は、ParseProlog()によって生成されます。各項目は、質問中の変数を表しています。

typedef struct { typedef struct { int qu_id; int type; TERM qu_goal; char *name; int ret_code; union { double cpu_time; TERM *term; int parse_pos; long *ivalue; int exit_code; double *dvalue; char *ret_msg; char **string; int no_vars; } /* location */ VarDescr *var; loc; } QueryDescr; } VarDescr;

var[i].typeは以下のいずれかになり、返された変数に対する自動的な型変換を決定します。

#define Q_TERM (0) #define Q_INTEGER (1) #define Q_DOUBLE (2) #define Q_STRING (3)

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/hostli/libft/print_jp.html
published 2008/12/1 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
戻る> managed with ubiCMS