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