diff --git a/include/SWI-Prolog.h b/include/SWI-Prolog.h index cc6a9aabb..6f8007786 100755 --- a/include/SWI-Prolog.h +++ b/include/SWI-Prolog.h @@ -341,22 +341,22 @@ extern X_API atom_t PL_functor_name(functor_t); extern X_API int PL_functor_arity(functor_t); /* end PL_new_* functions =============================*/ /* begin PL_put_* functions =============================*/ -extern X_API void PL_cons_functor(term_t, functor_t,...); -extern X_API void PL_cons_functor_v(term_t, functor_t,term_t); -extern X_API void PL_cons_list(term_t, term_t, term_t); -extern X_API void PL_put_atom(term_t, atom_t); -extern X_API void PL_put_atom_chars(term_t, const char *); -extern X_API void PL_put_float(term_t, double); -extern X_API void PL_put_functor(term_t, functor_t t); -extern X_API void PL_put_int64(term_t, int64_t); -extern X_API void PL_put_integer(term_t, long); -extern X_API void PL_put_list(term_t); -extern X_API void PL_put_list_chars(term_t, const char *); +extern X_API int PL_cons_functor(term_t, functor_t,...); +extern X_API int PL_cons_functor_v(term_t, functor_t,term_t); +extern X_API int PL_cons_list(term_t, term_t, term_t); +extern X_API int PL_put_atom(term_t, atom_t); +extern X_API int PL_put_atom_chars(term_t, const char *); +extern X_API int PL_put_float(term_t, double); +extern X_API int PL_put_functor(term_t, functor_t t); +extern X_API int PL_put_int64(term_t, int64_t); +extern X_API int PL_put_integer(term_t, long); +extern X_API int PL_put_list(term_t); +extern X_API int PL_put_list_chars(term_t, const char *); extern X_API void PL_put_nil(term_t); -extern X_API void PL_put_pointer(term_t, void *); -extern X_API void PL_put_string_chars(term_t, const char *); -extern X_API void PL_put_term(term_t, term_t); -extern X_API void PL_put_variable(term_t); +extern X_API int PL_put_pointer(term_t, void *); +extern X_API int PL_put_string_chars(term_t, const char *); +extern X_API int PL_put_term(term_t, term_t); +extern X_API int PL_put_variable(term_t); extern X_API int PL_compare(term_t, term_t); /* end PL_put_* functions =============================*/ /* begin PL_unify_* functions =============================*/ diff --git a/library/yap2swi/yap2swi.c b/library/yap2swi/yap2swi.c index a94b59578..6c035241c 100644 --- a/library/yap2swi/yap2swi.c +++ b/library/yap2swi/yap2swi.c @@ -788,7 +788,7 @@ X_API int PL_functor_arity(functor_t f) /* begin PL_put_* functions =============================*/ -X_API void PL_cons_functor(term_t d, functor_t f,...) +X_API int PL_cons_functor(term_t d, functor_t f,...) { va_list ap; int arity, i; @@ -797,12 +797,12 @@ X_API void PL_cons_functor(term_t d, functor_t f,...) if (IsAtomTerm((Term)ff)) { Yap_PutInSlot(d, (YAP_Term)f); - return; + return TRUE; } arity = ArityOfFunctor(ff); if (arity > TMP_BUF_SIZE/sizeof(YAP_CELL)) { fprintf(stderr,"PL_cons_functor: arity too large (%d)\n", arity); - return; + return FALSE; } va_start (ap, f); for (i = 0; i < arity; i++) { @@ -813,45 +813,51 @@ X_API void PL_cons_functor(term_t d, functor_t f,...) Yap_PutInSlot(d,YAP_MkPairTerm(tmp[0],tmp[1])); else Yap_PutInSlot(d,YAP_MkApplTerm((YAP_Functor)ff,arity,tmp)); + return TRUE; } -X_API void PL_cons_functor_v(term_t d, functor_t f,term_t a0) +X_API int PL_cons_functor_v(term_t d, functor_t f,term_t a0) { int arity; Functor ff = SWIFunctorToFunctor(f); if (IsAtomTerm((Term)ff)) { Yap_PutInSlot(d,(Term)ff); - return; + return TRUE; } arity = ArityOfFunctor(ff); if (arity == 2 && ff == FunctorDot) Yap_PutInSlot(d,YAP_MkPairTerm(Yap_GetFromSlot(a0),Yap_GetFromSlot(a0+1))); else Yap_PutInSlot(d,YAP_MkApplTerm((YAP_Functor)ff,arity,YAP_AddressFromSlot(a0))); + return TRUE; } -X_API void PL_cons_list(term_t d, term_t h, term_t t) +X_API int PL_cons_list(term_t d, term_t h, term_t t) { Yap_PutInSlot(d,YAP_MkPairTerm(Yap_GetFromSlot(h),Yap_GetFromSlot(t))); + return TRUE; } -X_API void PL_put_atom(term_t t, atom_t a) +X_API int PL_put_atom(term_t t, atom_t a) { Yap_PutInSlot(t,MkAtomTerm(SWIAtomToAtom(a))); + return TRUE; } -X_API void PL_put_atom_chars(term_t t, const char *s) +X_API int PL_put_atom_chars(term_t t, const char *s) { Yap_PutInSlot(t,MkAtomTerm(Yap_LookupAtom((char *)s))); + return TRUE; } -X_API void PL_put_float(term_t t, double fl) +X_API int PL_put_float(term_t t, double fl) { Yap_PutInSlot(t,YAP_MkFloatTerm(fl)); + return TRUE; } -X_API void PL_put_functor(term_t t, functor_t f) +X_API int PL_put_functor(term_t t, functor_t f) { long int arity; Functor ff = SWIFunctorToFunctor(f); @@ -865,14 +871,16 @@ X_API void PL_put_functor(term_t t, functor_t f) else Yap_PutInSlot(t,YAP_MkNewApplTerm((YAP_Functor)ff,arity)); } + return TRUE; } -X_API void PL_put_integer(term_t t, long n) +X_API int PL_put_integer(term_t t, long n) { Yap_PutInSlot(t,YAP_MkIntTerm(n)); + return TRUE; } -X_API void PL_put_int64(term_t t, int64_t n) +X_API int PL_put_int64(term_t t, int64_t n) { #if USE_GMP char s[64]; @@ -881,17 +889,22 @@ X_API void PL_put_int64(term_t t, int64_t n) sprintf(s, "%lld", (long long int)n); mpz_init_set_str (&rop, s, 10); Yap_PutInSlot(t,YAP_MkBigNumTerm((void *)&rop)); + return TRUE; +#else + return FALSE; #endif } -X_API void PL_put_list(term_t t) +X_API int PL_put_list(term_t t) { Yap_PutInSlot(t,YAP_MkNewPairTerm()); + return TRUE; } -X_API void PL_put_list_chars(term_t t, const char *s) +X_API int PL_put_list_chars(term_t t, const char *s) { Yap_PutInSlot(t,YAP_BufferToString((char *)s)); + return TRUE; } X_API void PL_put_nil(term_t t) @@ -902,25 +915,29 @@ X_API void PL_put_nil(term_t t) /* SWI: void PL_put_pointer(term_t -t, void *ptr) YAP: NO EQUIVALENT */ /* SAM TO DO */ -X_API void PL_put_pointer(term_t t, void *ptr) +X_API int PL_put_pointer(term_t t, void *ptr) { YAP_Term tptr = YAP_MkIntTerm((long int)ptr); Yap_PutInSlot(t,tptr); + return TRUE; } -X_API void PL_put_string_chars(term_t t, const char *s) +X_API int PL_put_string_chars(term_t t, const char *s) { Yap_PutInSlot(t,YAP_BufferToString((char *)s)); + return TRUE; } -X_API void PL_put_term(term_t d, term_t s) +X_API int PL_put_term(term_t d, term_t s) { Yap_PutInSlot(d,Yap_GetFromSlot(s)); + return TRUE; } -X_API void PL_put_variable(term_t t) +X_API int PL_put_variable(term_t t) { Yap_PutInSlot(t,YAP_MkVarTerm()); + return TRUE; } /* end PL_put_* functions =============================*/