1 /*************************************************************************
2 *									 *
3 *	 YAP Prolog 	@(#)c_interface.h	2.2			 *
4 *	Yap Prolog was developed at NCCUP - Universidade do Porto	 *
5 *									 *
6 * Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997	 *
7 *									 *
8 **************************************************************************
9 *									 *
10 * File:		YapInterface.h						 *
11 * Last rev:	19/2/88							 *
12 * mods:									 *
13 * comments:	c_interface header file for YAP				 *
14 *									 *
15 *************************************************************************/
16 
17 /*******************  IMPORTANT ********************
18    Due to a limitation of the DecStation loader any function (including
19    library functions) which is linked to yap can not be called directly
20    from C code loaded dynamically.
21       To go around this problem we adopted the solution of calling such
22    functions indirectly
23 ****************************************************/
24 
25 #ifndef _yap_c_interface_h
26 
27 #define _yap_c_interface_h 1
28 
29 #define __YAP_PROLOG__ 1
30 
31 #ifndef YAPVERSION
32 #define YAPVERSION 60000
33 #endif
34 
35 #include "yap_structs.h"
36 
37 #if HAVE_STDARG_H
38 #include <stdarg.h>
39 #endif
40 
41 #include <wchar.h>
42 
43 /*
44    __BEGIN_DECLS should be used at the beginning of the C declarations,
45    so that C++ compilers don't mangle their names.  __END_DECLS is used
46    at the end of C declarations.
47 */
48 #undef __BEGIN_DECLS
49 #undef __END_DECLS
50 #ifdef __cplusplus
51 # define __BEGIN_DECLS extern "C" {
52 # define __END_DECLS }
53 #else
54 # define __BEGIN_DECLS /* empty */
55 # define __END_DECLS /* empty */
56 #endif /* _cplusplus */
57 
58 __BEGIN_DECLS
59 
60 #if defined(_MSC_VER) && defined(YAP_EXPORTS)
61 #define X_API __declspec(dllexport)
62 #else
63 #define X_API
64 #endif
65 
66 /* Primitive Functions */
67 
68 #define YAP_Deref(t)  (t)
69 extern X_API YAP_Term PROTO(YAP_A,(int));
70 #define YAP_ARG1	YAP_A(1)
71 #define YAP_ARG2	YAP_A(2)
72 #define YAP_ARG3	YAP_A(3)
73 #define YAP_ARG4	YAP_A(4)
74 #define YAP_ARG5	YAP_A(5)
75 #define YAP_ARG6	YAP_A(6)
76 #define YAP_ARG7	YAP_A(7)
77 #define YAP_ARG8	YAP_A(8)
78 #define YAP_ARG9	YAP_A(9)
79 #define YAP_ARG10	YAP_A(10)
80 #define YAP_ARG11	YAP_A(11)
81 #define YAP_ARG12	YAP_A(12)
82 #define YAP_ARG13	YAP_A(13)
83 #define YAP_ARG14	YAP_A(14)
84 #define YAP_ARG15	YAP_A(15)
85 #define YAP_ARG16	YAP_A(16)
86 
87 /*  YAP_Bool IsVarTerm(YAP_Term) */
88 extern X_API YAP_Bool PROTO(YAP_IsVarTerm,(YAP_Term));
89 
90 /*  YAP_Bool IsNonVarTerm(YAP_Term) */
91 extern X_API YAP_Bool PROTO(YAP_IsNonVarTerm,(YAP_Term));
92 
93 /*  YAP_Term  MkVarTerm()  */
94 extern X_API YAP_Term PROTO(YAP_MkVarTerm,(void));
95 
96 /*  YAP_Bool IsIntTerm(YAP_Term)  */
97 extern X_API YAP_Bool PROTO(YAP_IsIntTerm,(YAP_Term));
98 
99 /*  YAP_Bool IsLongIntTerm(YAP_Term)  */
100 extern X_API YAP_Bool PROTO(YAP_IsLongIntTerm,(YAP_Term));
101 
102 /*  YAP_Bool IsBigNumTerm(YAP_Term)  */
103 extern X_API YAP_Bool PROTO(YAP_IsBigNumTerm,(YAP_Term));
104 
105 /*  YAP_Bool IsFloatTerm(YAP_Term)  */
106 extern X_API YAP_Bool PROTO(YAP_IsFloatTerm,(YAP_Term));
107 
108 /*  YAP_Bool IsDbRefTerm(YAP_Term)  */
109 extern X_API YAP_Bool PROTO(YAP_IsDbRefTerm,(YAP_Term));
110 
111 /*  YAP_Bool IsAtomTerm(YAP_Term)  */
112 extern X_API YAP_Bool PROTO(YAP_IsAtomTerm,(YAP_Term));
113 
114 /*  YAP_Bool IsPairTerm(YAP_Term)  */
115 extern X_API YAP_Bool PROTO(YAP_IsPairTerm,(YAP_Term));
116 
117 /*  YAP_Bool IsApplTerm(YAP_Term)  */
118 extern X_API YAP_Bool PROTO(YAP_IsApplTerm,(YAP_Term));
119 
120 /*    Term MkIntTerm(YAP_Int)  */
121 extern X_API YAP_Term PROTO(YAP_MkIntTerm,(YAP_Int));
122 
123 /*    Term MkBigNumTerm(void *)  */
124 extern X_API YAP_Term PROTO(YAP_MkBigNumTerm,(void *));
125 
126 /*    YAP_Int  IntOfTerm(Term) */
127 extern X_API YAP_Int PROTO(YAP_IntOfTerm,(YAP_Term));
128 
129 /*    void *  BigNumOfTerm(Term) */
130 extern X_API void *PROTO(YAP_BigNumOfTerm,(YAP_Term, void *));
131 
132 /*    Term MkFloatTerm(YAP_Float)  */
133 extern X_API YAP_Term PROTO(YAP_MkFloatTerm,(YAP_Float));
134 
135 /*    YAP_Float  FloatOfTerm(YAP_Term) */
136 extern X_API YAP_Float PROTO(YAP_FloatOfTerm,(YAP_Term));
137 
138 /*    Term MkAtomTerm(Atom)  */
139 extern X_API YAP_Term PROTO(YAP_MkAtomTerm,(YAP_Atom));
140 
141 /*    YAP_Atom  AtomOfTerm(Term) */
142 extern X_API YAP_Atom PROTO(YAP_AtomOfTerm,(YAP_Term));
143 
144 /*    YAP_Atom  LookupAtom(const char *) */
145 extern X_API YAP_Atom PROTO(YAP_LookupAtom,(CONST char *));
146 
147 /*    YAP_Atom  LookupWideAtom(const wchar_t *) */
148 extern X_API YAP_Atom PROTO(YAP_LookupWideAtom,(CONST wchar_t *));
149 
150 /*    YAP_Atom  FullLookupAtom(const char *) */
151 extern X_API YAP_Atom PROTO(YAP_FullLookupAtom,(CONST char *));
152 
153 /*    int  AtomNameLength(Atom) */
154 extern X_API int PROTO(YAP_AtomNameLength,(YAP_Atom));
155 
156 /*    const char* IsWideAtom(YAP_Atom) */
157 extern X_API int *PROTO(YAP_IsWideAtom,(YAP_Atom));
158 
159 /*    const char* AtomName(YAP_Atom) */
160 extern X_API CONST char *PROTO(YAP_AtomName,(YAP_Atom));
161 
162 /*    const wchar_t* AtomWideName(YAP_Atom) */
163 extern X_API CONST wchar_t *PROTO(YAP_WideAtomName,(YAP_Atom));
164 
165 /*    YAP_Term  MkPairTerm(YAP_Term Head, YAP_Term Tail) */
166 extern X_API YAP_Term PROTO(YAP_MkPairTerm,(YAP_Term,YAP_Term));
167 
168 /*    YAP_Term  MkNewPairTerm(void) */
169 extern X_API YAP_Term PROTO(YAP_MkNewPairTerm,(void));
170 
171 /*    Term  HeadOfTerm(Term)  */
172 extern X_API YAP_Term PROTO(YAP_HeadOfTerm,(YAP_Term));
173 
174 /*    Term  TailOfTerm(Term)  */
175 extern X_API YAP_Term PROTO(YAP_TailOfTerm,(YAP_Term));
176 
177 /*    Term  TailOfTerm(Term)  */
178 extern X_API YAP_Term PROTO(YAP_TermNil,(void));
179 
180 /*    YAP_Term     MkApplTerm(YAP_Functor f, unsigned int n, YAP_Term[] args) */
181 extern X_API YAP_Term PROTO(YAP_MkApplTerm,(YAP_Functor,unsigned int,YAP_Term *));
182 
183 /*    YAP_Term     MkNewApplTerm(YAP_Functor f, unsigned int n) */
184 extern X_API YAP_Term PROTO(YAP_MkNewApplTerm,(YAP_Functor,unsigned int));
185 
186 /*    YAP_Functor  YAP_FunctorOfTerm(Term)  */
187 extern X_API YAP_Functor PROTO(YAP_FunctorOfTerm,(YAP_Term));
188 
189 /*    YAP_Term     ArgOfTerm(unsigned int argno,YAP_Term t) */
190 extern X_API YAP_Term PROTO(YAP_ArgOfTerm,(unsigned int,YAP_Term));
191 
192 /*    YAP_Term    *ArgsOfTerm(YAP_Term t) */
193 extern X_API YAP_Term *PROTO(YAP_ArgsOfTerm,(YAP_Term));
194 
195 /*    YAP_Functor  MkFunctor(YAP_Atom a,int arity) */
196 extern X_API YAP_Functor PROTO(YAP_MkFunctor,(YAP_Atom,unsigned int));
197 
198 /*    YAP_Atom     NameOfFunctor(Functor) */
199 extern X_API YAP_Atom PROTO(YAP_NameOfFunctor,(YAP_Functor));
200 
201 /*    unsigned unsigned int     YAP_ArityOfFunctor(Functor) */
202 extern X_API unsigned int PROTO(YAP_ArityOfFunctor,(YAP_Functor));
203 
204 /*  void ExtraSpace(void) */
205 extern X_API void *PROTO(YAP_ExtraSpace,(void));
206 extern X_API void *PROTO(YAP_ExtraSpaceCut,(void));
207 
208 #define YAP_PRESERVE_DATA(ptr, type) (ptr = (type *)YAP_ExtraSpace())
209 #define YAP_PRESERVED_DATA(ptr, type) (ptr = (type *)YAP_ExtraSpace())
210 #define YAP_PRESERVED_DATA_CUT(ptr,type) (ptr = (type *)YAP_ExtraSpaceCut())
211 
212 /*   YAP_Bool      unify(YAP_Term a, YAP_Term b) */
213 extern X_API YAP_Bool PROTO(YAP_Unify,(YAP_Term, YAP_Term));
214 
215 /*  void UserCPredicate(const char *name, int *fn(), int arity) */
216 extern X_API void PROTO(YAP_UserCPredicate,(CONST char *, YAP_Bool (*)(void), unsigned int));
217 
218 /*  void UserCPredicateWithArgs(const char *name, int *fn(), unsigned int arity) */
219 extern X_API void PROTO(YAP_UserCPredicateWithArgs,(CONST char *, YAP_Bool (*)(void), YAP_Arity, YAP_Term));
220 
221 /*  void UserBackCPredicate(const char *name, int *init(), int *cont(), int
222     arity, int extra) */
223 extern X_API void PROTO(YAP_UserBackCPredicate,(CONST char *, YAP_Bool (*)(void), YAP_Bool (*)(void), YAP_Arity, unsigned int));
224 
225 /*  void UserBackCPredicate(char *name, int *init(), int *cont(), int *cut(), int
226     arity, int extra) */
227 extern X_API void PROTO(YAP_UserBackCutCPredicate,(char *, YAP_Bool (*)(void), YAP_Bool (*)(void), YAP_Bool (*)(void), YAP_Arity, unsigned int));
228 
229 /*  void CallProlog(YAP_Term t) */
230 extern X_API YAP_Bool PROTO(YAP_CallProlog,(YAP_Term t));
231 
232 /*  void cut_fail(void) */
233 extern X_API void PROTO(YAP_cut_up,(void));
234 
235 #define YAP_cut_succeed() { YAP_cut_up(); return TRUE; }
236 
237 #define YAP_cut_fail() { YAP_cut_up(); return FALSE; }
238 
239 /*  void *AllocSpaceFromYAP_(int) */
240 extern X_API void *PROTO(YAP_AllocSpaceFromYap,(unsigned int));
241 
242 /*  void *ReallocSpaceFromYAP_(void*,int) */
243 extern X_API void *PROTO(YAP_ReallocSpaceFromYap,(void*,unsigned int));
244 
245 /*  void FreeSpaceFromYAP_(void *) */
246 extern X_API void PROTO(YAP_FreeSpaceFromYap,(void *));
247 
248 /*  int YAP_RunGoal(YAP_Term) */
249 extern X_API YAP_Term PROTO(YAP_RunGoal,(YAP_Term));
250 
251 /*  int YAP_RunGoalOnce(YAP_Term) */
252 extern X_API YAP_Term PROTO(YAP_RunGoalOnce,(YAP_Term));
253 
254 /*  int YAP_RestartGoal(void) */
255 extern X_API YAP_Bool PROTO(YAP_RestartGoal,(void));
256 
257 /*  int YAP_ShutdownGoal(int) */
258 extern X_API YAP_Bool PROTO(YAP_ShutdownGoal,(int));
259 
260 /*  int YAP_ContinueGoal(void) */
261 extern X_API YAP_Bool PROTO(YAP_ContinueGoal,(void));
262 
263 
264 /*  void YAP_PruneGoal(void) */
265 extern X_API void PROTO(YAP_PruneGoal,(void));
266 
267 /*  int YAP_FunctorToPred(struct pred_entry *, YAP_Term *) */
268 extern X_API YAP_PredEntryPtr PROTO(YAP_FunctorToPred,(YAP_Functor));
269 
270 /*  int YAP_AtomToPred(struct pred_entry *, YAP_Term *) */
271 extern X_API YAP_PredEntryPtr PROTO(YAP_AtomToPred,(YAP_Atom));
272 
273 /*  int YAP_EnterGoal(void) */
274 extern X_API YAP_Bool PROTO(YAP_EnterGoal,(YAP_PredEntryPtr, YAP_Term *, YAP_dogoalinfo *));
275 
276 /*  int YAP_RetryGoal(void) */
277 extern X_API YAP_Bool PROTO(YAP_RetryGoal,(YAP_dogoalinfo *));
278 
279 /*  int YAP_LeaveGoal(void) */
280 extern X_API YAP_Bool PROTO(YAP_LeaveGoal,(int, YAP_dogoalinfo *));
281 
282 /*  int YAP_GoalHasException(YAP_Term *) */
283 extern X_API YAP_Bool PROTO(YAP_GoalHasException,(YAP_Term *));
284 
285 /*  void YAP_ClearExceptions(void) */
286 extern X_API void PROTO(YAP_ClearExceptions,(void));
287 
288 /*  int YAP_Reset(void) */
289 extern X_API void PROTO(YAP_Reset,(void));
290 
291 /*  void YAP_Error(int, YAP_Term, const char *,...) */
292 extern X_API void PROTO(YAP_Error,(int, YAP_Term, CONST char *, ...));
293 
294 /*  YAP_Term YAP_Read(int (*)(void)) */
295 extern X_API YAP_Term PROTO(YAP_Read,(int (*)(void)));
296 
297 /*  void YAP_Write(YAP_Term,void (*)(int),int) */
298 extern X_API void PROTO(YAP_Write,(YAP_Term,void (*)(int),int));
299 
300 /*  void YAP_WriteBufffer(YAP_Term,char *,unsgined int,int) */
301 extern X_API void PROTO(YAP_WriteBuffer,(YAP_Term,char *,unsigned int,int));
302 
303 /*  void YAP_Term(YAP_Term) */
304 extern X_API YAP_Term PROTO(YAP_CopyTerm,(YAP_Term));
305 
306 /*  char *YAP_CompileClause(YAP_Term) */
307 extern X_API char *PROTO(YAP_CompileClause,(YAP_Term));
308 
309 /*  int YAP_Init(YAP_init_args *) */
310 extern X_API int PROTO(YAP_Init,(YAP_init_args *));
311 
312 /*  int YAP_FastInit(const char *) */
313 extern X_API int PROTO(YAP_FastInit,(CONST char *));
314 
315 /*  int YAP_InitConsult(int, const char *) */
316 extern X_API int PROTO(YAP_InitConsult,(int, CONST char *));
317 
318 /*  int YAP_EndConsult(void) */
319 extern X_API int PROTO(YAP_EndConsult,(void));
320 
321 /*  void YAP_Exit(int) */
322 extern X_API void PROTO(YAP_Exit,(int));
323 
324 /*  void YAP_PutValue(YAP_Atom, YAP_Term) */
325 extern X_API void PROTO(YAP_PutValue,(YAP_Atom, YAP_Term));
326 
327 /*  YAP_Term YAP_GetValue(YAP_Atom) */
328 extern X_API YAP_Term PROTO(YAP_GetValue,(YAP_Atom));
329 
330 /*  int StringToBuffer(YAP_Term,char *,unsigned int) */
331 extern X_API int PROTO(YAP_StringToBuffer,(YAP_Term,char *,unsigned int));
332 
333 /*  int BufferToString(const char *) */
334 extern X_API YAP_Term PROTO(YAP_BufferToString,(CONST char *));
335 
336 /*  int BufferToString(const char *) */
337 extern X_API YAP_Term PROTO(YAP_NBufferToString,(CONST char *, size_t len));
338 
339 /*  int BufferToString(const char *) */
340 extern X_API YAP_Term PROTO(YAP_WideBufferToString,(CONST wchar_t *));
341 
342 /*  int BufferToString(const char *) */
343 extern X_API YAP_Term PROTO(YAP_NWideBufferToString,(CONST wchar_t *, size_t len));
344 
345 /*  int BufferToAtomList(const char *) */
346 extern X_API YAP_Term PROTO(YAP_BufferToAtomList,(CONST char *));
347 
348 /*  int BufferToAtomList(const char *) */
349 extern X_API YAP_Term PROTO(YAP_NBufferToAtomList,(CONST char *, size_t len));
350 
351 /*  int BufferToAtomList(const char *) */
352 extern X_API YAP_Term PROTO(YAP_WideBufferToAtomList,(CONST wchar_t *));
353 
354 /*  int BufferToAtomList(const char *) */
355 extern X_API YAP_Term PROTO(YAP_NWideBufferToAtomList,(CONST wchar_t *, size_t len));
356 
357 /*  int BufferToDiffList(const char *) */
358 extern X_API YAP_Term PROTO(YAP_NWideBufferToAtomDiffList,(CONST wchar_t *, YAP_Term, size_t len));
359 
360 /*  int BufferToDiffList(const char *) */
361 extern X_API YAP_Term PROTO(YAP_BufferToDiffList,(CONST char *));
362 
363 /*  int BufferToDiffList(const char *) */
364 extern X_API YAP_Term PROTO(YAP_NBufferToDiffList,(CONST char *, size_t len));
365 
366 /*  int BufferToDiffList(const char *) */
367 extern X_API YAP_Term PROTO(YAP_WideBufferToDiffList,(CONST wchar_t *));
368 
369 /*  int BufferToDiffList(const char *) */
370 extern X_API YAP_Term PROTO(YAP_NWideBufferToDiffList,(CONST wchar_t *, YAP_Term, size_t len));
371 
372 /* YAP_Term BufferToTerm(const char *) */
373 extern X_API YAP_Term PROTO(YAP_ReadBuffer,(CONST char *,YAP_Term *));
374 
375 /*  void YAP_InitSocks(const char *,long) */
376 extern X_API int PROTO(YAP_InitSocks,(CONST char *,long));
377 
378 #ifdef  SFUNC
379 
380 #define SFArity  0
381 extern X_API YAP_Term *ArgsOfSFTerm();
382 
383 extern X_API YAP_Term MkSFTerm();
384 
385 #endif /* SFUNC */
386 
387 
388 extern X_API void PROTO(YAP_SetOutputMessage,(void));
389 
390 extern X_API int PROTO(YAP_StreamToFileNo,(YAP_Term));
391 
392 extern X_API void PROTO(YAP_CloseAllOpenStreams,(void));
393 
394 extern X_API void PROTO(YAP_FlushAllStreams,(void));
395 
396 #define YAP_INPUT_STREAM	0x01
397 #define YAP_OUTPUT_STREAM	0x02
398 #define YAP_APPEND_STREAM	0x04
399 #define YAP_PIPE_STREAM 	0x08
400 #define YAP_TTY_STREAM	 	0x10
401 #define YAP_POPEN_STREAM	0x20
402 #define YAP_BINARY_STREAM	0x40
403 #define YAP_SEEKABLE_STREAM	0x80
404 
405 /*  YAP_Term  YAP_OpenStream()  */
406 extern X_API YAP_Term PROTO(YAP_OpenStream,(void *, CONST char *, YAP_Term, int));
407 
408 /*  YAP_Term  *YAP_NewSlots()  */
409 extern X_API YAP_Int PROTO(YAP_NewSlots,(int));
410 
411 /*  YAP_Int  YAP_CurrentSlot()  */
412 extern X_API YAP_Int PROTO(YAP_CurrentSlot,(void));
413 
414 /*  YAP_Term  *YAP_InitSlot()  */
415 extern X_API YAP_Int PROTO(YAP_InitSlot,(YAP_Term));
416 
417 /*  YAP_Term  YAP_GetFromSlots(t)  */
418 extern X_API YAP_Term PROTO(YAP_GetFromSlot,(YAP_Int));
419 
420 /*  YAP_Term  YAP_AddressFromSlots(t)  */
421 extern X_API YAP_Term *PROTO(YAP_AddressFromSlot,(YAP_Int));
422 
423 /*  YAP_Term  YAP_PutInSlots(t)  */
424 extern X_API void PROTO(YAP_PutInSlot,(YAP_Int, YAP_Term));
425 
426 /*  void  YAP_RecoverSlots()  */
427 extern X_API int PROTO(YAP_RecoverSlots,(int));
428 
429 /*  void  YAP_RecoverSlots()  */
430 extern X_API YAP_Int PROTO(YAP_ArgsToSlots,(int));
431 
432 /*  void  YAP_RecoverSlots()  */
433 extern X_API void PROTO(YAP_SlotsToArgs,(int, YAP_Int));
434 
435 /*  void  YAP_Throw()  */
436 extern X_API void PROTO(YAP_Throw,(YAP_Term));
437 
438 /*  void  YAP_AsyncThrow()  */
439 extern X_API void PROTO(YAP_AsyncThrow,(YAP_Term));
440 
441 /*  int  YAP_LookupModule()  */
442 #define YAP_LookupModule(T)  (T)
443 
444 #define YAP_ModuleName(mod) (mod)
445 
446 /*  int  YAP_Halt()  */
447 extern X_API int  PROTO(YAP_Halt,(int));
448 
449 /*  int  YAP_TopOfLocalStack()  */
450 extern X_API YAP_Term  *PROTO(YAP_TopOfLocalStack,(void));
451 
452 /*  int  YAP_Predicate()  */
453 extern X_API void  *PROTO(YAP_Predicate,(YAP_Atom,YAP_Arity,YAP_Term));
454 
455 /*  int  YAP_Predicate()  */
456 extern X_API void  PROTO(YAP_PredicateInfo,(void *,YAP_Atom *,YAP_Arity*,YAP_Module*));
457 
458 /*  int  YAP_CurrentModule()  */
459 extern X_API YAP_Module  PROTO(YAP_CurrentModule,(void));
460 
461 /*  int  YAP_CurrentModule()  */
462 extern X_API YAP_Module  PROTO(YAP_CreateModule,(YAP_Atom));
463 
464 /*  int  YAP_StripModule()  */
465 extern X_API YAP_Term  PROTO(YAP_StripModule,(YAP_Term, YAP_Module *));
466 
467 /*  int  YAP_AtomGetHold(YAP_Atom)  */
468 extern X_API int  PROTO(YAP_AtomGetHold,(YAP_Atom));
469 
470 /*  int  YAP_AtomReleaseHold(YAP_Atom)  */
471 extern X_API int  PROTO(YAP_AtomReleaseHold,(YAP_Atom));
472 
473 /*  void  YAP_AtomReleaseHold(YAP_Atom)  */
474 extern X_API YAP_agc_hook  PROTO(YAP_AGCRegisterHook,(YAP_agc_hook));
475 
476 /*  void  YAP_AtomReleaseHold(YAP_Atom)  */
477 extern X_API int  PROTO(YAP_HaltRegisterHook,(YAP_halt_hook, void *));
478 
479 /*  char *YAP_cwd(void)  */
480 extern X_API char *  PROTO(YAP_cwd,(void));
481 
482 /* thread stuff */
483 extern X_API int PROTO(YAP_ThreadSelf,(void));
484 extern X_API int PROTO(YAP_ThreadCreateEngine,(YAP_thread_attr *));
485 extern X_API int PROTO(YAP_ThreadAttachEngine,(int));
486 extern X_API int PROTO(YAP_ThreadDetachEngine,(int));
487 extern X_API int PROTO(YAP_ThreadDestroyEngine,(int));
488 
489 /* blob stuff */
490 extern X_API YAP_Term PROTO(YAP_MkBlobTerm,(unsigned int));
491 extern X_API void    *PROTO(YAP_BlobOfTerm,(YAP_Term));
492 
493 /*  term comparison */
494 extern X_API int  PROTO(YAP_CompareTerms,(YAP_Term, YAP_Term));
495 
496 /*  list construction */
497 extern X_API YAP_Term     PROTO(YAP_OpenList,(int));
498 extern X_API YAP_Term     PROTO(YAP_ExtendList,(YAP_Term, YAP_Term));
499 extern X_API int          PROTO(YAP_CloseList,(YAP_Term, YAP_Term));
500 
501 /*  attributed variables */
502 extern X_API int	PROTO(YAP_IsAttVar,(YAP_Term));
503 extern X_API YAP_Term	PROTO(YAP_AttsOfVar,(YAP_Term));
504 
505 /*  stream info */
506 extern X_API void      *PROTO(YAP_FileDescriptorFromStream,(YAP_Term));
507 extern X_API int        PROTO(YAP_FileNoFromStream,(YAP_Term));
508 
509 /*  store and recover terms */
510 extern X_API void      *PROTO(YAP_Record,(YAP_Term));
511 extern X_API YAP_Term   PROTO(YAP_Recorded,(void *));
512 extern X_API int        PROTO(YAP_Erase,(void *));
513 
514 /*  term utilities */
515 extern X_API int        PROTO(YAP_Variant,(YAP_Term,YAP_Term));
516 extern X_API int        PROTO(YAP_ExactlyEqual,(YAP_Term,YAP_Term));
517 extern X_API YAP_Int    PROTO(YAP_TermHash,(YAP_Term, YAP_Int, YAP_Int, int));
518 
519 /*  stack expansion control */
520 extern X_API int        PROTO(YAP_SetYAPFlag,(yap_flag_t,int));
521 
522 #define YAP_InitCPred(N,A,F)  YAP_UserCPredicate(N,F,A)
523 
524 __END_DECLS
525 
526 #endif
527 
528