1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * RICE 4.0x Copyright (C) 1993 Rene' Jager *
5 * This toolbox is free software; you can redistribute it and/or *
6 * modify it under the terms of the GNU General Public License as *
7 * published by the Free Software Foundation; either version 2 of *
8 * the License, or (at your option) any later version. *
10 * This toolbox is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this toolbox; if not, write to the: *
18 * Free Software Foundation, Inc. *
19 * 675 Mass Ave, Cambridge *
22 * See the RICE documentation for more information on the toolbox. *
23 * The file COPYING for the complete GNU General Public License. *
25 * You can reach me by (preferably e-mail): *
29 * Delft University of Technology *
30 * Department of Electrical Engineering *
31 * Control Laboratory *
40 * e-mail: R.Jager@ET.TUDelft.NL *
41 * phone: +31-15-78 51 14 *
42 * fax: +31-15-62 67 38 *
43 * telex: 38151 butud nl *
45 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
50 Update: January 4, 1993
51 Info: main include file for RICE, see file rice.doc
55 /* prevent extra compilation */
61 /* include header files */
67 /* compiler characteristics */
72 /* define version and author */
74 #define RICE_NAME "RICE"
75 #define RICE_VERSION 4.0
76 #define RICE_AUTHOR "Ren\x82 Jager"
77 #define RICE_EMAIL "R.Jager@ET.TUDelft.NL"
80 /* type definitions */
82 typedef RICE_PROTOTYPE(float (*RICE_NORM
), (float, float));
83 typedef RICE_PROTOTYPE(void (*RICE_LINKER
), (int, int, int, char *[], float *, int *));
88 #define RICE_Linker(func) RICE_FUNCTION(void func, \
89 (int rice_id, int rice_func, int rice_argc, char *rice_argv[], \
90 float *rice_grade, int *rice_num), (rice_id, rice_func, rice_argc, \
91 rice_argv, rice_grade, rice_num), int rice_id; int rice_func; \
92 int rice_argc; char *rice_argv[]; float *rice_grade; int *rice_num;)
94 #define RICE_Link(str, code) \
95 if(rice_func == ++(*rice_num)) \
108 #define RICE_FALSE 0.0
109 #define RICE_TRUE 1.0
110 #define RICE_UNKNOWN (-1.0)
116 #define RICE_WARNING 2
117 #define RICE_MESSAGE 3
120 /* argument macro's */
122 #define RICE_grade (*rice_grade)
123 #define RICE_argc rice_argc
124 #define RICE_argv rice_argv
125 #define RICE_id rice_id
128 /* adjustment macro's */
130 #define RICE_Explain(kb, typ, fct, dpt) RICE_MERGE(rice_Explain, typ(kb, fct, dpt))
131 #define RICE_Redirect(kb, nam, fnc) RICE_MERGE(rice_Redirect, nam(kb, fnc))
132 #define RICE_Set(kb, nam) RICE_MERGE(rice_Set, nam(kb, 1))
133 #define RICE_Reset(kb, nam) RICE_MERGE(rice_Set, nam(kb, 0))
134 #define RICE_Switch(kb, nam) RICE_MERGE(rice_Set, nam(kb, -1))
135 #define RICE_Use(kb, nam, num, ptr) RICE_MERGE(rice_Use, nam(kb, num, ptr))
138 /* for C++ applications */
145 /* redirection functions */
147 RICE_PROTOTYPE(int rice_RedirectAsk
, (int, RICE_PROTOTYPE(void (*), (int, int, char *[], float *))));
148 RICE_PROTOTYPE(int rice_RedirectInform
, (int, RICE_PROTOTYPE(void (*), (int, int, char *[], float *))));
149 RICE_PROTOTYPE(int rice_RedirectReport
, (int, RICE_PROTOTYPE(void (*), (int, int, char *))));
150 RICE_PROTOTYPE(int rice_RedirectExplain
, (int, RICE_PROTOTYPE(void (*), (int, char *))));
151 RICE_PROTOTYPE(int rice_RedirectProtect
, (int, RICE_PROTOTYPE(void (*), (int))));
152 RICE_PROTOTYPE(int rice_RedirectAbandon
, (int, RICE_PROTOTYPE(void (*), (void))));
157 RICE_PROTOTYPE(int rice_SetAdaptive
, (int, int));
158 RICE_PROTOTYPE(int rice_SetInteractive
, (int, int));
159 RICE_PROTOTYPE(int rice_SetRecursive
, (int, int));
160 RICE_PROTOTYPE(int rice_SetRepetitive
, (int, int));
161 RICE_PROTOTYPE(int rice_SetSelective
, (int, int));
166 RICE_PROTOTYPE(int rice_UseLinker
, (int, int, RICE_LINKER
*));
167 RICE_PROTOTYPE(int rice_UseIntersection
, (int, int, RICE_NORM
*));
168 RICE_PROTOTYPE(int rice_UseUnion
, (int, int, RICE_NORM
*));
171 /* explaination functions */
173 RICE_PROTOTYPE(int rice_ExplainWhy
, (int, char *, int));
174 RICE_PROTOTYPE(int rice_ExplainHow
, (int, char *, int));
177 /* interfacing KB functions */
179 RICE_PROTOTYPE(int rice_AppendKB
, (int, char *));
180 RICE_PROTOTYPE(int rice_ClearKB
, (int));
181 RICE_PROTOTYPE(int rice_CompileKB
, (int, char *));
182 RICE_PROTOTYPE(int rice_CopyKB
, (int, int));
183 RICE_PROTOTYPE(int rice_DestroyKB
, (int));
184 RICE_PROTOTYPE(int rice_InferKB
, (int));
185 RICE_PROTOTYPE(int rice_LoadKB
, (int, char *));
186 RICE_PROTOTYPE(int rice_MoveKB
, (int, int));
187 RICE_PROTOTYPE(int rice_ProcessKB
, (int, char *, char *));
188 RICE_PROTOTYPE(int rice_RebuildKB
, (int, char *));
189 RICE_PROTOTYPE(int rice_SaveKB
, (int, char *));
190 RICE_PROTOTYPE(int rice_SwapKB
, (int, RICE_PROTOTYPE(void (*), (void))));
193 /* interfacing ES functions */
195 RICE_PROTOTYPE(int rice_CheckES
, (int));
196 RICE_PROTOTYPE(int rice_CopyES
, (int, int));
197 RICE_PROTOTYPE(int rice_CreateES
, (void));
198 RICE_PROTOTYPE(int rice_DeleteES
, (int));
199 RICE_PROTOTYPE(int rice_MoveES
, (int, int));
200 RICE_PROTOTYPE(int rice_SwitchES
, (int));
203 /* for C++ applications */
210 /* in case of upgrading include RICE 3.x compatible header file rice3x.h */
217 /* in case of C++ compiler also include RICE class if necessary */
226 #endif /* _RICE_H_ */