00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "context.h"
00027
00028 #ifndef __XSB_CINTERF_H__
00029 #define __XSB_CINTERF_H__
00030
00031 #ifdef __cplusplus
00032 extern "C" {
00033 #endif
00034
00035 #ifndef CELL_DEFS_INCLUDED
00036 #include "cell_def_xsb.h"
00037 #endif
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 #include "basicdefs.h"
00156 #include "basictypes.h"
00157
00158
00159
00160
00161
00162
00163 #include "export.h"
00164 #include "varstring_xsb.h"
00165
00166 #define extern_ctop_abs(reg_num,val) ctop_abs(CTXTc reg_num,val)
00167 #define extern_ctop_float(reg_num, val) ctop_float(CTXTc reg_num, val)
00168 #define extern_ctop_int(reg_num,val) ctop_int(CTXTc reg_num,val)
00169
00170 #define extern_ptoc_abs(reg_num) ptoc_abs(CTXTc reg_num)
00171 #define extern_ptoc_float(reg_num) ptoc_float(CTXTc reg_num)
00172 #define extern_ptoc_int(reg_num) ptoc_int(CTXTc reg_num)
00173 #define extern_ptoc_longstring(reg_num) ptoc_longstring(CTXTc reg_num)
00174 #define extern_ptoc_string(reg_num) ptoc_string(CTXTc reg_num)
00175
00176 #define extern_c2p_chars(cstr, regs_to_protect, pterm) \
00177 c2p_chars(CTXTc cstr, regs_to_protect, pterm)
00178 #define extern_c2p_float(dbl, pterm) c2p_float(CTXTc dbl, pterm)
00179 #define extern_c2p_functor(functor,arity,var) \
00180 c2p_functor(CTXTc functor,arity,var)
00181 #define extern_c2p_int(pint,pterm) c2p_int(CTXTc pint, pterm)
00182 #define extern_c2p_list(var) c2p_list(CTXTc var)
00183 #define extern_c2p_nil(var) c2p_nil(CTXTc var)
00184 #define extern_c2p_string(val,var) c2p_string(CTXTc val,var)
00185
00186 #define extern_p2c_arity(term) p2c_arity(term)
00187 #define extern_p2c_chars(term,cptr,pint) p2c_chars(CTXTc term,cptr,pint)
00188 #define extern_p2c_float(term) p2c_float(term)
00189 #define extern_p2c_functor(term) p2c_functor(term)
00190 #define extern_p2c_int(term) p2c_int(term)
00191 #define extern_p2c_string(term) p2c_string(term)
00192
00193 #define extern_p2p_arg(term,argno) p2p_arg(term,argno)
00194 #define extern_p2p_car(term) p2p_car(term)
00195 #define extern_p2p_cdr(term) p2p_cdr(term)
00196 #define extern_p2p_deref(term) p2p_deref(term)
00197 #define extern_p2p_new() p2p_new(CTXT)
00198 #define extern_p2p_unify(term1, term2) p2p_unify(CTXTc term1, term2)
00199
00200 #define extern_print_pterm(Cell, int, VS) print_pterm(CTXTc Cell, int, VS)
00201
00202 #define extern_reg_term(regnum) reg_term(CTXTc regnum)
00203
00204
00205
00206 DllExport extern prolog_int call_conv ptoc_int(CTXTdeclc reg_num);
00207
00208 DllExport extern prolog_float call_conv ptoc_float(CTXTdeclc reg_num);
00209
00210 DllExport extern char* call_conv ptoc_string(CTXTdeclc reg_num);
00211
00212 DllExport extern char* call_conv ptoc_longstring(CTXTdeclc reg_num);
00213
00214 DllExport extern char* call_conv ptoc_abs(reg_num);
00215
00216 DllExport extern void call_conv ctop_int(CTXTdeclc reg_num, prolog_int);
00217
00218 DllExport extern void call_conv ctop_float(CTXTdeclc reg_num, double);
00219
00220 DllExport extern void call_conv ctop_string(CTXTdeclc reg_num, char*);
00221
00222 DllExport extern void call_conv extern_ctop_string(CTXTdeclc reg_num, char*);
00223
00224 DllExport extern int call_conv ctop_abs(reg_num, char*);
00225
00226 extern char* string_find(char*, int);
00227
00228 extern int ctop_term(CTXTdeclc char*, char*, reg_num);
00229 extern int ptoc_term(CTXTdeclc char*, char*, reg_num);
00230
00231
00232
00233
00234
00235
00236 DllExport extern prolog_term call_conv reg_term(CTXTdeclc reg_num);
00237
00238 DllExport extern xsbBool call_conv c2p_int(CTXTdeclc prolog_int, prolog_term);
00239 DllExport extern xsbBool call_conv c2p_float(CTXTdeclc double, prolog_term);
00240 DllExport extern xsbBool call_conv c2p_string(CTXTdeclc char *, prolog_term);
00241 DllExport extern xsbBool call_conv c2p_list(CTXTdeclc prolog_term);
00242 DllExport extern xsbBool call_conv c2p_nil(CTXTdeclc prolog_term);
00243 DllExport extern void call_conv ensure_heap_space(CTXTdeclc int, int);
00244 DllExport extern xsbBool call_conv c2p_functor(CTXTdeclc char *, int, prolog_term);
00245 DllExport extern void call_conv c2p_setfree(prolog_term);
00246 DllExport extern void call_conv c2p_chars(CTXTdeclc char *str, int regs_to_protect, prolog_term term);
00247
00248
00249 DllExport extern prolog_int call_conv p2c_int(prolog_term);
00250 DllExport extern double call_conv p2c_float(prolog_term);
00251 DllExport extern char* call_conv p2c_string(prolog_term);
00252 DllExport extern char* call_conv p2c_functor(prolog_term);
00253 DllExport extern int call_conv p2c_arity(prolog_term);
00254 DllExport extern char* call_conv p2c_chars(CTXTdeclc prolog_term,char *,int);
00255
00256 DllExport extern prolog_term call_conv p2p_arg(prolog_term, int);
00257 DllExport extern prolog_term call_conv p2p_car(prolog_term);
00258 DllExport extern prolog_term call_conv p2p_cdr(prolog_term);
00259 DllExport extern prolog_term call_conv p2p_new(CTXTdecl);
00260 DllExport extern xsbBool call_conv p2p_unify(CTXTdeclc prolog_term, prolog_term);
00261 DllExport extern xsbBool call_conv p2p_call(prolog_term);
00262 DllExport extern void call_conv p2p_funtrail();
00263 DllExport extern prolog_term call_conv p2p_deref(prolog_term);
00264
00265 DllExport extern xsbBool call_conv is_var(prolog_term);
00266 DllExport extern xsbBool call_conv is_int(prolog_term);
00267 DllExport extern xsbBool call_conv is_float(prolog_term);
00268 DllExport extern xsbBool call_conv is_string(prolog_term);
00269 DllExport extern xsbBool call_conv is_atom(prolog_term);
00270 DllExport extern xsbBool call_conv is_list(prolog_term);
00271 DllExport extern xsbBool call_conv is_nil(prolog_term);
00272 DllExport extern xsbBool call_conv is_functor(prolog_term);
00273 DllExport extern xsbBool call_conv is_charlist(prolog_term,int*);
00274 DllExport extern xsbBool call_conv is_attv(prolog_term);
00275
00276 extern int c2p_term(CTXTdeclc char*, char*, prolog_term);
00277 extern int p2c_term(CTXTdeclc char*, char*, prolog_term);
00278
00279
00280
00281
00282
00283 typedef char *vfile;
00284
00285 extern char *vfile_open();
00286 extern char *vfile_obj();
00287
00288
00289
00290
00291
00292 DllExport extern int call_conv xsb_init(CTXTdeclc int, char **);
00293 DllExport extern int call_conv xsb_init_string(CTXTdeclc char *);
00294 DllExport extern int call_conv xsb_command(CTXTdecl);
00295 DllExport extern int call_conv xsb_command_string(CTXTdeclc char *);
00296 DllExport extern int call_conv xsb_query(CTXTdecl);
00297 DllExport extern int call_conv xsb_query_string(CTXTdeclc char *);
00298 DllExport extern int call_conv xsb_query_string_string(CTXTdeclc char*,VarString*,char*);
00299 DllExport extern int call_conv xsb_query_string_string_b(CTXTdeclc char*,char*,int,int*,char*);
00300 DllExport extern int call_conv xsb_next(CTXTdecl);
00301 DllExport extern int call_conv xsb_next_string(CTXTdeclc VarString*,char*);
00302 DllExport extern int call_conv xsb_next_string_b(CTXTdeclc char*,int,int*,char*);
00303 DllExport extern int call_conv xsb_get_last_answer_string(CTXTdeclc char*,int,int*);
00304 DllExport extern int call_conv xsb_close_query(CTXTdecl);
00305 DllExport extern int call_conv xsb_close(CTXTdecl);
00306 DllExport extern int call_conv xsb_get_last_error_string(char*,int,int*);
00307
00308 DllExport extern void call_conv print_pterm(CTXTdeclc Cell, int, VarString*);
00309 extern char *p_charlist_to_c_string(CTXTdeclc prolog_term term, VarString *buf,
00310 char *in_func, char *where);
00311
00312
00313
00314
00315
00316
00317 #define xsb_make_vars(i) c2p_functor("ret",i,reg_term(2))
00318
00319
00320 #define xsb_set_var_int(v,i) c2p_int(v,p2p_arg(reg_term(2),i))
00321
00322
00323 #define xsb_set_var_string(s,i) c2p_string(s,p2p_arg(reg_term(2),i))
00324
00325
00326 #define xsb_set_var_float(f,i) c2p_float(f,p2p_arg(reg_term(2),i))
00327
00328
00329
00330 #define xsb_var_int(i) (p2c_int(p2p_arg(reg_term(2),i)))
00331
00332
00333 #define xsb_var_string(i) (p2c_string(p2p_arg(reg_term(2),i)))
00334
00335
00336 #define xsb_var_float(i) (p2c_float(p2p_arg(reg_term(2),i)))
00337
00338 #ifdef __cplusplus
00339 }
00340 #endif
00341
00342 #endif