/* # (c) Copyright InterFace Computer GmbH, Munich, West Germany # %Z% %M% v%I% %E% %U% # cpro.h */ #include "cpred.h"
/* int QuMaxNum = N; must be defined by user */
int InitProlog(), ParseProlog(), RunProlog(), EndProlog(), ResetQueries(), InitParms(); #define INITProlog(argc,argv) InitProlog(argc,argv,stdin,stdout,stderr) #define RESTARTED 2 #define RETMSGLEN 128 #define QuLOCInt(descr,i,addr) descr->var[i-1].type = Q_INTEGER; \ descr->var[i-1].loc.ivalue = addr #define QuLOCDbl(descr,i,addr) descr->var[i-1].type = Q_DOUBLE; \ descr->var[i-1].loc.dvalue = addr #define QuLOCStr(descr,i,addr) descr->var[i-1].type = Q_STRING; \ descr->var[i-1].loc.string = addr #define QuUse(desc,i,mode) \ if (mode==FOR_INPUT) desc->var[i-1].type|=4; \ else desc->var[i-1].type&=3 #define QuIntPC(descr,i) IntPC(*descr->var[i-1].loc.term) #define QuDblPC(descr,i) DblPC(*descr->var[i-1].loc.term) #define QuAtStr(descr,i) AtStr(*descr->var[i-1].loc.term) #define QuTerm(descr,i) *descr->var[i-1].loc.term
int QuType(); /* returns one of: */ #define Q_TERM (0) #define Q_INTEGER (1) #define Q_DOUBLE (2) #define Q_STRING (3) #define FOR_OUTPUT (0) #define FOR_INPUT (4)
typedef struct { int type; char *name; union { TERM *term; long *ivalue; double *dvalue; char **string; } /* location */ loc; } VarDescr;
typedef struct { int qu_id; TERM qu_goal; int ret_code; double cpu_time; int parse_pos; int exit_code; char *ret_msg; int no_vars; VarDescr *var; } QueryDescr;
| scroll to top |
|