YAP 7.1.0
YapInterface.h
Go to the documentation of this file.
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
30#ifndef _yap_c_interface_h
31
32#define _yap_c_interface_h 1
33
34#include "YapConfig.h"
35
36#define __YAP_PROLOG__ 1
37
38#ifndef YAPVERSION
39#define YAPVERSION YAP_NUMERIC_VERSION
40#endif
41
42#include "YapDefs.h"
43
44#if HAVE_STDARG_H
45#include <stdarg.h>
46#endif
47
48#if HAVE_STDBOOL_H
49#include <stdbool.h>
50#endif
51
52#include <wchar.h>
53
54/*
55 __BEGIN_DECLS should be used at the beginning of the C declarations,
56 so that C++ compilers don't mangle their names. __END_DECLS is used
57 at the end of C declarations.
58*/
59#undef __BEGIN_DECLS
60#undef __END_DECLS
61#ifdef __cplusplus
62#define __BEGIN_DECLS extern "C" {
63#define __END_DECLS }
64#else
65#define __BEGIN_DECLS /* empty */
66#define __END_DECLS /* empty */
67#endif /* _cplusplus */
68
69__BEGIN_DECLS
70
81#include "YapFormat.h"
82
83/* Primitive Functions */
84
85// Basic operation that follows a pointer chain.
86#define YAP_Deref(t) (t)
87
88X_API
89extern YAP_Term YAP_A(int);
90#define YAP_ARG1 YAP_A(1)
91#define YAP_ARG2 YAP_A(2)
92#define YAP_ARG3 YAP_A(3)
93#define YAP_ARG4 YAP_A(4)
94#define YAP_ARG5 YAP_A(5)
95#define YAP_ARG6 YAP_A(6)
96#define YAP_ARG7 YAP_A(7)
97#define YAP_ARG8 YAP_A(8)
98#define YAP_ARG9 YAP_A(9)
99#define YAP_ARG10 YAP_A(10)
100#define YAP_ARG11 YAP_A(11)
101#define YAP_ARG12 YAP_A(12)
102#define YAP_ARG13 YAP_A(13)
103#define YAP_ARG14 YAP_A(14)
104#define YAP_ARG15 YAP_A(15)
105#define YAP_ARG16 YAP_A(16)
106
107X_API
108extern YAP_Term YAP_SetA(int, YAP_Term);
109
110/* YAP_Bool IsVarTerm(YAP_Term) */
111extern X_API YAP_Bool YAP_IsVarTerm(YAP_Term);
112
113/* YAP_Bool IsNonVarTerm(YAP_Term) */
114extern X_API YAP_Bool YAP_IsNonVarTerm(YAP_Term);
115
116/* YAP_Term MkVarTerm() */
117extern X_API YAP_Term YAP_MkVarTerm(void);
118
119/* YAP_Bool IsIntTerm(YAP_Term) */
120extern X_API YAP_Bool YAP_IsIntTerm(YAP_Term);
121
122/* YAP_Bool IsLongIntTerm(YAP_Term) */
123extern X_API YAP_Bool YAP_IsLongIntTerm(YAP_Term);
124
125/* YAP_Bool IsBigNumTerm(YAP_Term) */
126extern X_API YAP_Bool YAP_IsBigNumTerm(YAP_Term);
127
128/* YAP_Bool IsRationalTerm(YAP_Term) */
129extern X_API YAP_Bool YAP_IsRationalTerm(YAP_Term);
130
131/* YAP_Bool IsFloatTerm(YAP_Term) */
132extern X_API YAP_Bool YAP_IsFloatTerm(YAP_Term);
133
134/* YAP_Bool IsNumberTerm(YAP_Term) */
135extern X_API YAP_Bool YAP_IsNumberTerm(YAP_Term);
136
137/* YAP_Bool IsDbRefTerm(YAP_Term) */
138extern X_API YAP_Bool YAP_IsDbRefTerm(YAP_Term);
139
140/* YAP_Bool IsAtomTerm(YAP_Term) */
141extern X_API YAP_Bool YAP_IsAtomTerm(YAP_Term);
142
143/* YAP_Bool IsAtomTerm(YAP_Term) */
144extern X_API YAP_Bool YAP_IsStringTerm(YAP_Term);
145
146/* YAP_Bool IsPairTerm(YAP_Term) */
147extern X_API YAP_Bool YAP_IsPairTerm(YAP_Term);
148
149/* YAP_Bool IsApplTerm(YAP_Term) */
150extern X_API YAP_Bool YAP_IsApplTerm(YAP_Term);
151
152/* YAP_Bool IsCompoundTerm(YAP_Term) */
153extern X_API YAP_Bool YAP_IsCompoundTerm(YAP_Term);
154
155/* Term MkIntTerm(YAP_Int) */
156extern X_API YAP_Term YAP_MkIntTerm(YAP_Int);
157
158/* Term MkIntTerm(YAP_Int) */
159extern X_API YAP_Term YAP_MkStringTerm(const char *);
160
161/* Term MkIntTerm(YAP_Int) */
162extern X_API YAP_Term YAP_MkUnsignedStringTerm(const unsigned char *);
163
164/* Term MkBigNumTerm(void *) */
165extern X_API YAP_Term YAP_MkBigNumTerm(void *);
166
167/* Term MkRationalTerm(void *) */
168extern X_API YAP_Term YAP_MkRationalTerm(void *);
169
170/* YAP_Int IntOfTerm(Term) */
171extern X_API const unsigned char *YAP_UnsignedStringOfTerm(YAP_Term);
172
173/* YAP_Int StribgOfTerm(Term) */
174extern X_API const char *YAP_StringOfTerm(YAP_Term);
175
176/* YAP_Int IntOfTerm(Term) */
177extern X_API YAP_Int YAP_IntOfTerm(YAP_Term);
178
179/* void * BigNumOfTerm(Term) */
180extern X_API YAP_Bool YAP_BigNumOfTerm(YAP_Term t, void *b);
181
182/* void * RationalOfTerm(Term) */
183extern X_API YAP_Bool YAP_RationalOfTerm(YAP_Term, void *);
184
185/* Term MkFloatTerm(YAP_Float) */
186extern X_API YAP_Term YAP_MkFloatTerm(YAP_Float);
187
188/* YAP_Float FloatOfTerm(YAP_Term) */
189// extract a floating point number for a term t. The type `flt` is a typedef for
190// the appropriate C floating point type,
191extern X_API YAP_Float YAP_FloatOfTerm(YAP_Term);
192
193/* Term MkAtomTerm(Atom) */
194extern X_API YAP_Term YAP_MkAtomTerm(YAP_Atom);
195
196/* YAP_Atom AtomOfTerm(Term) */
197extern X_API YAP_Atom YAP_AtomOfTerm(YAP_Term);
198
199extern X_API YAP_Atom YAP_LookupAtom(const char *c);
200
201extern X_API YAP_Atom YAP_LookupWideAtom(const wchar_t *c);
202
203extern X_API YAP_Atom YAP_FullLookupAtom(const char *c);
204
205/* int AtomNameLength(Atom) */
206extern X_API size_t YAP_AtomNameLength(YAP_Atom);
207
208extern X_API YAP_Bool YAP_IsWideAtom(YAP_Atom a);
209
210extern X_API const char *YAP_AtomName(YAP_Atom a);
211
212extern X_API const wchar_t *YAP_WideAtomName(YAP_Atom a);
213
214/* YAP_Term MkPairTerm(YAP_Term Head, YAP_Term Tail) */
215extern X_API YAP_Term YAP_MkPairTerm(YAP_Term, YAP_Term);
216
217extern X_API YAP_Term YAP_MkListFromTerms(YAP_Term *, YAP_Int);
218
219/* YAP_Term MkNewPairTerm(void) */
220extern X_API YAP_Term YAP_MkNewPairTerm(void);
221
222/* Term HeadOfTerm(Term) */
223extern X_API YAP_Term YAP_HeadOfTerm(YAP_Term);
224
225/* Term TailOfTerm(Term) */
226extern X_API YAP_Term YAP_TailOfTerm(YAP_Term);
227
228/* Int AddressOfTailOfTerm(Term *, Term **) */
229extern X_API YAP_Int YAP_SkipList(YAP_Term *, YAP_Term **);
230
231/* Term TailOfTerm(Term) */
232extern X_API YAP_Term YAP_TermNil(void);
233
234extern X_API int YAP_IsTermNil(YAP_Term);
235
236extern X_API YAP_Term YAP_MkApplTerm(YAP_Functor functor, YAP_UInt arity,
237 YAP_Term args[]);
238
239extern X_API YAP_Term YAP_MkNewApplTerm(YAP_Functor f, YAP_UInt arity);
240
241extern X_API YAP_Functor YAP_FunctorOfTerm(YAP_Term t);
242
243extern X_API YAP_Term YAP_ArgOfTerm(YAP_UInt n, YAP_Term t);
244
245extern X_API YAP_Term *YAP_ArgsOfTerm(YAP_Term t);
246
247extern X_API YAP_Functor YAP_MkFunctor(YAP_Atom a, YAP_UInt n);
248
249extern X_API YAP_Atom YAP_NameOfFunctor(YAP_Functor g);
250
251extern X_API YAP_UInt YAP_ArityOfFunctor(YAP_Functor f);
252
253/* void ExtraSpace(void) */
254extern X_API void *YAP_ExtraSpace(void);
255extern X_API void *YAP_ExtraSpaceCut(void);
256
257#define YAP_PRESERVE_DATA(ptr, type) (ptr = (type *)YAP_ExtraSpace())
258#define YAP_PRESERVED_DATA(ptr, type) (ptr = (type *)YAP_ExtraSpace())
259#define YAP_PRESERVED_DATA_CUT(ptr, type) (ptr = (type *)YAP_ExtraSpaceCut())
260
261extern X_API YAP_Bool YAP_Unify(YAP_Term t1, YAP_Term t2);
262
263extern X_API void YAP_UserCPredicate(const char *, YAP_UserCPred,
264 YAP_Arity arity);
265
266/* void UserCPredicateWithArgs(const char *name, int *fn(), unsigned int arity)
267 */
268extern X_API void YAP_UserCPredicateWithArgs(const char *, YAP_UserCPred,
269 YAP_Arity, YAP_Term);
270
271/* void UserBackCPredicate(const char *name, int *init(), int *cont(), int
272 arity, int extra) */
273extern X_API void YAP_UserBackCPredicate(const char *, YAP_UserCPred,
274 YAP_UserCPred, YAP_Arity, YAP_Arity);
275
276/* void UserBackCPredicate(char *name, int *init(), int *cont(), int *cut(),
277 int
278 arity, int extra) */
279extern X_API void YAP_UserBackCutCPredicate(const char *name, YAP_UserCPred,
280 YAP_UserCPred, YAP_UserCPred,
281 YAP_Arity, YAP_Arity);
282
283/* YAP_Int YAP_ListLength(YAP_Term t) */
284extern X_API YAP_Int YAP_ListLength(YAP_Term);
285
286extern X_API size_t YAP_UTF8_TextLength(YAP_Term t);
287
288/* void CallProlog(YAP_Term t) */
289extern X_API YAP_Int YAP_CallProlog(YAP_Term t);
290
291/* void cut_fail(void) */
292extern X_API void YAP_cut_up(void);
293
294#define YAP_cut_succeed() \
295 do { \
296 YAP_cut_up(); \
297 return TRUE; \
298 } while (0)
299
300#define YAP_cut_fail() \
301 do { \
302 YAP_cut_up(); \
303 return FALSE; \
304 } while (0)
305
306/* void *AllocSpaceFromYAP_(int) */
307extern X_API void *YAP_AllocSpaceFromYap(size_t);
308
309/* void *ReallocSpaceFromYAP_(void*,int) */
310extern X_API void *YAP_ReallocSpaceFromYap(void *, size_t);
311
312/* void FreeSpaceFromYAP_(void *) */
313extern X_API void YAP_FreeSpaceFromYap(void *);
314
315/* int YAP_RunGoal(YAP_Term) */
316extern X_API YAP_Int YAP_RunGoal(YAP_Term);
317
318// extern X_API YAP_Int YAP_RunPredicate(YAP_PredEntryPtr, YAP_Term *);
319
320/* int YAP_RunGoalOnce(YAP_Term) */
321extern X_API YAP_Int YAP_RunGoalOnce(YAP_Term);
322
323/* int YAP_RestartGoal(void) */
324extern X_API YAP_Bool YAP_RestartGoal(void);
325
326/* int YAP_ShutdownGoal(int) */
327extern X_API YAP_Bool YAP_ShutdownGoal(int);
328
329/* int YAP_ContinueGoal(void) */
330extern X_API YAP_Bool YAP_ContinueGoal(void);
331
332/* void YAP_PruneGoal(void) */
333extern X_API void YAP_PruneGoal(YAP_dogoalinfo *);
334
335/* int YAP_FunctorToPred(struct pred_entry *, YAP_Term *) */
336extern X_API YAP_PredEntryPtr YAP_FunctorToPred(YAP_Functor);
337
338/* int YAP_AtomToPred(struct pred_entry *, YAP_Term *) */
339extern X_API YAP_PredEntryPtr YAP_AtomToPred(YAP_Atom);
340
341extern X_API YAP_PredEntryPtr YAP_FunctorToPredInModule(YAP_Functor,
342 YAP_Module);
343
344/* int YAP_AtomToPred(struct pred_entry *, YAP_Term *) */
345extern X_API YAP_PredEntryPtr YAP_AtomToPredInModule(YAP_Atom, YAP_Module);
346
347/* int YAP_EnterGoal(void) */
348extern X_API YAP_Bool YAP_EnterGoal(YAP_PredEntryPtr, YAP_Term *,
350
351/* int YAP_RetryGoal(void) */
352extern X_API YAP_Bool YAP_RetryGoal(YAP_dogoalinfo *);
353
354/* int YAP_LeaveGoal(void) */
355extern X_API YAP_Bool YAP_LeaveGoal(bool, YAP_dogoalinfo *);
356
357/* int YAP_GoalHasException(YAP_Term *) */
358extern X_API YAP_Bool YAP_GoalHasException(YAP_Term *);
359
360/* void YAP_ClearExceptions(void) */
361extern X_API void YAP_ClearExceptions(void);
362
363extern X_API int YAP_Reset(yap_reset_t reset, bool reset_global);
364
365#define YAP_Error(id, inp, ...) \
366 YAP_Error__( __FILE__, __FUNCTION__, __LINE__, id, inp, __VA_ARGS__)
367extern X_API void YAP_Error__(const char *f, const char *fn, int pos, int myerrno, YAP_Term t, const char *buf, ...);
368
369extern X_API char *YAP_WriteBuffer(YAP_Term, char *, size_t, int);
370
371extern X_API char * YAP_WriteDynamicBuffer(YAP_Term t, YAP_encoding_t enc,
372 int flags);
373
374/* void YAP_Term(YAP_Term) */
375extern X_API YAP_Term YAP_CopyTerm(YAP_Term t);
376
377/* bool YAP_CompileClause(YAP_Term)
378
379@short compile the clause _Cl_; on failure it may call the exception handler. */
380extern X_API bool YAP_CompileClause(YAP_Term Cl);
381
382extern X_API int YAP_NewExo(YAP_PredEntryPtr ap, size_t data, void *user_di);
383
384extern X_API int YAP_AssertTuples(YAP_PredEntryPtr pred, const YAP_Term *ts,
385 size_t offset, size_t sz);
386
387/* int YAP_Init(YAP_init_args *) */
388extern X_API void YAP_Init(YAP_init_args *);
389
390/* int YAP_FastInit(const char *) */
391extern X_API void YAP_FastInit(char saved_state[], int argc, char *argv[]);
392
393#ifndef _PL_STREAM_H
394// if we don't know what a stream is, just don't assume nothing about the
395// pointer
396#define IOSTREAM void
397#endif /* FPL_STREAM_H */
398
400extern X_API YAP_Term YAP_Read(FILE *s);
401
405extern X_API YAP_Term YAP_ReadFromStream(int s);
406
409extern X_API YAP_Term YAP_ReadClauseFromStream(int s, YAP_Term varNames,
410 YAP_Term);
411
412extern X_API void YAP_Write(YAP_Term t, FILE *s, int);
413
414extern X_API FILE *YAP_TermToStream(YAP_Term t);
415
416extern X_API int YAP_InitConsult(int mode, const char *filename, char *buf,
417 int *previous_sno);
418
419extern X_API void YAP_EndConsult(int s, int *previous_sno,
420 const char *previous_cwd);
421
422extern X_API void YAP_Exit(int);
423
424/* void YAP_PutValue(YAP_Atom, YAP_Term) */
425extern X_API void YAP_PutValue(YAP_Atom, YAP_Term);
426
427/* YAP_Term YAP_GetValue(YAP_Atom) */
428extern X_API YAP_Term YAP_GetValue(YAP_Atom);
429
430extern X_API YAP_Term YAP_FloatsToList(YAP_Float *, size_t);
431extern X_API YAP_Int YAP_ListToFloats(YAP_Term, YAP_Float *, size_t);
432
433extern X_API YAP_Term YAP_IntsToList(YAP_Int *, size_t);
434extern X_API YAP_Int YAP_ListToInts(YAP_Term, YAP_Int *, size_t);
435
436/* int StringToBuffer(YAP_Term,char *,unsigned int) */
437extern X_API char *YAP_StringToBuffer(YAP_Term, char *, unsigned int);
438
439extern X_API YAP_Term YAP_BufferToString(const char *s);
440
441extern X_API YAP_Term YAP_NBufferToString(const char *s, size_t len);
442
443/* int BufferToString(const char *) */
444extern X_API YAP_Term YAP_WideBufferToString(const wchar_t *);
445
446extern X_API YAP_Term YAP_NWideBufferToString(const wchar_t *s, size_t len);
447
448extern X_API YAP_Term YAP_BufferToAtomList(const char *s);
449
450extern X_API YAP_Term YAP_NBufferToAtomList(const char *s, size_t len);
451
452extern X_API YAP_Term YAP_WideBufferToAtomList(const wchar_t *s);
453
454extern X_API YAP_Term YAP_NWideBufferToAtomList(const wchar_t *s, size_t len);
455
456extern X_API YAP_Term YAP_NWideBufferToAtomDiffList(const wchar_t *s,
457 YAP_Term t0, size_t len);
458
459extern X_API YAP_Term YAP_BufferToDiffList(const char *s, YAP_Term t0);
460
461extern X_API YAP_Term YAP_NBufferToDiffList(const char *s, YAP_Term t0,
462 size_t len);
463
464extern X_API YAP_Term YAP_WideBufferToDiffList(const wchar_t *s, YAP_Term t0);
465
466extern X_API YAP_Term YAP_NWideBufferToDiffList(const wchar_t *s, YAP_Term t0,
467 size_t len);
468
469extern X_API YAP_Term YAP_ReadBuffer(const char *s, YAP_Term *tp);
470
471extern X_API int YAP_InitSocks(const char *host, long port);
472
473#ifdef SFUNC
474
475#define SFArity 0
476extern X_API YAP_Term *ArgsOfSFTerm();
477
478extern X_API YAP_Term MkSFTerm();
479
480#endif /* SFUNC */
481
482extern X_API void YAP_SetOutputMessage(void);
483
484extern X_API int YAP_StreamToFileNo(YAP_Term);
485
492extern X_API void *YAP_RepStreamFromId(int sno);
493
494extern X_API void YAP_CloseAllOpenStreams(void);
495
496extern X_API void YAP_FlushAllStreams(void);
497
498/* YAP_Term *YAP_StartSlots() */
499extern X_API void YAP_StartSlots(void);
500
501/* YAP_Term *YAP_EndSlots() */
502extern X_API void YAP_EndSlots(void);
503
504/* YAP_Term *YAP_NewSlots() */
505extern X_API YAP_handle_t YAP_NewSlots(int);
506
507/* YAP_Int YAP_CurrentSlot() */
508extern X_API YAP_handle_t YAP_CurrentSlot(void);
509
510/* YAP_Term *YAP_InitSlot() */
511extern X_API YAP_handle_t YAP_InitSlot(YAP_Term);
512
513/* YAP_Term YAP_GetFromSlots(t) */
514extern X_API YAP_Term YAP_GetFromSlot(YAP_handle_t);
515
516/* YAP_Term *YAP_AddressFromSlots(t) */
517extern X_API YAP_Term *YAP_AddressFromSlot(YAP_handle_t);
518
519/* YAP_Term *YAP_AddressOfTermInSlot(t) */
520extern X_API YAP_Term *YAP_AddressOfTermInSlot(YAP_handle_t);
521
522/* YAP_Term YAP_PutInSlots(t) */
523extern X_API void YAP_PutInSlot(YAP_handle_t, YAP_Term);
524
525extern X_API int YAP_RecoverSlots(int n, YAP_handle_t top_slot);
526
527extern X_API YAP_handle_t YAP_ArgsToSlots(int);
528
529extern X_API void YAP_SlotsToArgs(int, YAP_handle_t);
530
531/* void YAP_Throw() */
532extern X_API void YAP_Throw(YAP_Term);
533
534/* void YAP_AsyncThrow() */
535extern X_API void YAP_AsyncThrow(YAP_Term);
536
537/* int YAP_LookupModule() */
538#define YAP_LookupModule(T) (T)
539
540#define YAP_ModuleName(mod) (mod)
541
542/* int YAP_Halt() */
543extern X_API void YAP_Halt(int);
544
545/* int YAP_TopOfLocalStack() */
546extern X_API YAP_Term *YAP_TopOfLocalStack(void);
547
548/* int YAP_Predicate() */
549extern X_API void *YAP_Predicate(YAP_Atom, YAP_Arity, YAP_Term);
550
551/* int YAP_Predicate() */
552extern X_API void YAP_PredicateInfo(void *, YAP_Atom *, YAP_Arity *,
553 YAP_Module *);
554
555/* int YAP_CurrentModule() */
556extern X_API YAP_Module YAP_CurrentModule(void);
557
558/* int YAP_SetCurrentModule() */
559extern X_API YAP_Module YAP_SetCurrentModule(YAP_Module);
560
561/* int YAP_CreateModule() */
562extern X_API YAP_Module YAP_CreateModule(YAP_Atom);
563
564/* int YAP_StripModule() */
565extern X_API YAP_Term YAP_StripModule(YAP_Term, YAP_Module *);
566
567/* int YAP_AtomGetHold(YAP_Atom) */
568extern X_API int YAP_AtomGetHold(YAP_Atom);
569
570/* int YAP_AtomReleaseHold(YAP_Atom) */
571extern X_API int YAP_AtomReleaseHold(YAP_Atom);
572
573/* void YAP_AtomReleaseHold(YAP_Atom) */
574extern X_API YAP_agc_hook YAP_AGCRegisterHook(YAP_agc_hook hook);
575
576/* void YAP_AtomReleaseHold(YAP_Atom) */
577extern X_API int YAP_HaltRegisterHook(YAP_halt_hook, void *);
578
579/* char *YAP_cwd(void) */
580extern X_API char *YAP_cwd(void);
581
582/* thread stuff */
583extern X_API int YAP_ThreadSelf(void);
584extern X_API int YAP_ThreadCreateEngine(YAP_thread_attr *attr);
585extern X_API int YAP_ThreadAttachEngine(int);
586extern X_API int YAP_ThreadDetachEngine(int);
587extern X_API int YAP_ThreadDestroyEngine(int);
588
589/* blob stuff */
590extern X_API YAP_Term YAP_MkBlobTerm(unsigned int);
591extern X_API void *YAP_BlobOfTerm(YAP_Term);
592
593/* term comparison */
594extern X_API int YAP_CompareTerms(YAP_Term, YAP_Term);
595
596/* list construction */
597extern X_API YAP_Term YAP_OpenList(int);
598extern X_API YAP_Term YAP_ExtendList(YAP_Term, YAP_Term);
599extern X_API int YAP_CloseList(YAP_Term, YAP_Term);
600
601/* attributed variables */
602extern X_API int YAP_IsAttVar(YAP_Term);
603extern X_API YAP_Term YAP_AttsOfVar(YAP_Term);
604
605/* stream info */
606extern X_API void *YAP_FileDescriptorFromStream(YAP_Term);
607extern X_API int YAP_FileNoFromStream(YAP_Term);
608
609/* store and recover terms */
610extern X_API void *YAP_Record(YAP_Term);
611extern X_API YAP_Term YAP_Recorded(void *);
612extern X_API int YAP_Erase(void *);
613
614/* term utilities */
615extern X_API int YAP_Variant(YAP_Term, YAP_Term);
616extern X_API YAP_Int YAP_NumberVars(YAP_Term, YAP_Int);
617extern X_API YAP_Term YAP_UnNumberVars(YAP_Term);
618extern X_API int YAP_IsNumberedVariable(YAP_Term);
619extern X_API int YAP_Unifiable(YAP_Term, YAP_Term);
620extern X_API int YAP_ExactlyEqual(YAP_Term, YAP_Term);
621extern X_API YAP_Int YAP_TermHash(YAP_Term, YAP_Int, YAP_Int, int);
622
623extern X_API void YAP_signal(int);
624
625/* stack expansion control */
626extern X_API YAP_Term YAP_GetYAPFlag(YAP_Term flag);
627extern X_API int YAP_SetYAPFlag(YAP_Term flag, YAP_Term set);
628
629/* void *YAP_GlobalBase(Term) */
630extern X_API YAP_Int YAP_VarSlotToNumber(YAP_Int);
631
632/* Term YAP_ModuleUser() */
633extern X_API YAP_Term YAP_ModuleUser(void);
634
635/* Int YAP_NumberOfClausesForPredicate() */
636extern X_API YAP_Int YAP_NumberOfClausesForPredicate(YAP_PredEntryPtr);
637
638/* int YAP_MaxOpPriority(Atom, Term) */
639extern X_API int YAP_MaxOpPriority(YAP_Atom, YAP_Term);
640
641/* int YAP_OpInfo(Atom, Term, int, int *, int *) */
642extern X_API int YAP_OpInfo(YAP_Atom, YAP_Term, int, int *, int *);
643
644extern X_API YAP_Bool YAP_IsExternalDataInStackTerm(YAP_Term);
645
646extern X_API YAP_Term YAP_AllocExternalDataInStack(size_t bytes);
647
648extern X_API void *YAP_ExternalDataInStackFromTerm(YAP_Term t);
649
650extern X_API YAP_Bool YAP_IsExternalDataInStackTerm(YAP_Term t);
651
652extern X_API YAP_opaque_tag_t
653YAP_NewOpaqueType(struct YAP_opaque_handler_struct *f);
654
655extern X_API YAP_Bool YAP_IsOpaqueObjectTerm(YAP_Term t, YAP_opaque_tag_t tag);
656
657extern X_API YAP_Term YAP_NewOpaqueObject(YAP_opaque_tag_t tag, size_t bytes);
658
659extern X_API void *YAP_OpaqueObjectFromTerm(YAP_Term t);
660
661extern X_API YAP_CELL *YAP_HeapStoreOpaqueTerm(YAP_Term t);
662
663extern X_API int YAP_Argv(char ***);
664
665extern X_API bool YAP_DelayInit(YAP_ModInit_t f, const char s[]);
666
667extern X_API YAP_tag_t YAP_TagOfTerm(YAP_Term);
668
669extern X_API size_t YAP_ExportTerm(YAP_Term, char *, size_t);
670
671extern X_API size_t YAP_SizeOfExportedTerm(char *);
672
673extern X_API YAP_Term YAP_ImportTerm(char *);
674
675extern X_API int YAP_RequiresExtraStack(size_t);
676 /*
686 * proccess command line arguments: valid switches are:
687 * -b boot file
688 * -l load file
689 * -L load file, followed by exit.
690 * -s stack area size (K)
691 * -h heap area size
692 * -a aux stack size
693 * -e emacs_mode -m
694 * -DVar=Value
695 * reserved memory for alloc IF DEBUG
696 * -P only in development versions
697 */
698extern X_API YAP_file_type_t YAP_parse_yap_arguments(int argc, char *argv[],
699 YAP_init_args *iap);
700
701extern X_API void *YAP_foreign_stream(int sno);
702
703extern X_API YAP_Int YAP_AtomToInt(YAP_Atom At);
704
705extern X_API YAP_Atom YAP_IntToAtom(YAP_Int i);
706
707extern X_API YAP_Int YAP_FunctorToInt(YAP_Functor At);
708
709extern X_API YAP_Functor YAP_IntToFunctor(YAP_Int i);
710
711extern X_API YAP_PredEntryPtr YAP_TopGoal(void);
712
713extern X_API void *YAP_GetStreamFromId(int no);
714
715#define YAP_InitCPred(N, A, F) YAP_UserCPredicate(N, F, A)
716
717extern X_API void * YAP_PointerOfTerm(YAP_Term t);
718
719#define YAP_MkPointerTerm(ptr) YAP_MkIntTerm((YAP_Int)(ptr))
720
721//> interface to old array library
722extern X_API void * YAP_FetchArray(YAP_Term t1, intptr_t *sz, int *type);
723
724 __END_DECLS
725
726#endif
727
X_API void * YAP_GetStreamFromId(int no)
given a stream descriptor or stream alias (see open/3 ), return YAP's internal handle
Definition: c_interface.c:2172
X_API YAP_handle_t YAP_ArgsToSlots(int)
copies the first new n YAAM registers to slots
Definition: c_interface.c:2850
X_API YAP_Term * YAP_AddressFromSlot(YAP_handle_t)
get the memory address of a slot
Definition: c_interface.c:850
X_API void YAP_StartSlots(void)
initialize the slot data-structure: all existing slots will be discarded
Definition: c_interface.c:144
X_API YAP_Term YAP_Read(FILE *s)
read a Prolog term from an operating system stream $s$
Definition: c_interface.c:2206
X_API void YAP_EndSlots(void)
discard all existing slots: operates as
Definition: c_interface.c:151
X_API YAP_Term * YAP_AddressOfTermInSlot(YAP_handle_t)
get the memory address of the term actually stored in a slot
Definition: c_interface.c:855
X_API YAP_file_type_t YAP_parse_yap_arguments(int argc, char *argv[], YAP_init_args *iap)
YAP_parse_yap_arguments(int argc, char *argv[], YAP_init_args *iap)
Definition: yap-args.c:607
X_API YAP_Term YAP_ReadClauseFromStream(int s, YAP_Term varNames, YAP_Term)
read a Prolog clause from a Prolog opened stream $s$
X_API void * YAP_RepStreamFromId(int sno)
Utility routine to Obtain a pointer to the YAP representation of a stream.
Definition: c_interface.c:2387
X_API YAP_Term YAP_GetFromSlot(YAP_handle_t)
read from a slot
Definition: c_interface.c:845
X_API YAP_Term YAP_ReadFromStream(int s)
read a Prolog term from a Prolog opened stream $s$
Definition: c_interface.c:2217
X_API bool YAP_DelayInit(YAP_ModInit_t f, const char s[])
YAP_DelayInit()
Definition: yap-args.c:1030
X_API char * YAP_WriteDynamicBuffer(YAP_Term t, YAP_encoding_t enc, int flags)
write a a term to n user-provided buffer: make sure not tp overflow the buffer even if the text is mu...
Definition: c_interface.c:2305
X_API int YAP_RecoverSlots(int n, YAP_handle_t top_slot)
Succeeds if it recovers the space allocated for $n$ contiguous slots starting at topSlot.
Definition: c_interface.c:840
X_API YAP_handle_t YAP_CurrentSlot(void)
report the current position of the slots, assuming that they occupy the top of the stack
Definition: c_interface.c:825
@ argv
read-only atom, it describes the list with all arguments received by YAP at boot
Definition: YapGFlagInfo.h:89
X_API size_t YAP_UTF8_TextLength(Term t)
Output the number of bytes needed to represent a string in UTF-8 Note that the terminating zero is no...
Definition: c_interface.c:3041
X_API void YAP_PutInSlot(YAP_handle_t slot, YAP_Term t)
store term in a slot
X_API void YAP_SlotsToArgs(int HowMany, YAP_handle_t slot)
copies n slots such that sl is copied to the last abstract ,achine register
X_API char * YAP_StringToBuffer(Term t, char *buf, unsigned int bufsize)
copy a string to a buffer, the buffer must have been malloced
Definition: c_interface.c:1362
X_API yhandle_t YAP_InitSlot(YAP_Term t)
allocate n empty new slots
opaque variables can interact with the system
Definition: YapDefs.h:229