move to more recent interface.

This commit is contained in:
Vitor Santos Costa 2010-01-15 00:49:05 +00:00
parent 2727c04935
commit ff628b8e78
2 changed files with 50 additions and 33 deletions

View File

@ -341,22 +341,22 @@ extern X_API atom_t PL_functor_name(functor_t);
extern X_API int PL_functor_arity(functor_t); extern X_API int PL_functor_arity(functor_t);
/* end PL_new_* functions =============================*/ /* end PL_new_* functions =============================*/
/* begin PL_put_* functions =============================*/ /* begin PL_put_* functions =============================*/
extern X_API void PL_cons_functor(term_t, functor_t,...); extern X_API int PL_cons_functor(term_t, functor_t,...);
extern X_API void PL_cons_functor_v(term_t, functor_t,term_t); extern X_API int 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 int PL_cons_list(term_t, term_t, term_t);
extern X_API void PL_put_atom(term_t, atom_t); extern X_API int PL_put_atom(term_t, atom_t);
extern X_API void PL_put_atom_chars(term_t, const char *); extern X_API int PL_put_atom_chars(term_t, const char *);
extern X_API void PL_put_float(term_t, double); extern X_API int PL_put_float(term_t, double);
extern X_API void PL_put_functor(term_t, functor_t t); extern X_API int PL_put_functor(term_t, functor_t t);
extern X_API void PL_put_int64(term_t, int64_t); extern X_API int PL_put_int64(term_t, int64_t);
extern X_API void PL_put_integer(term_t, long); extern X_API int PL_put_integer(term_t, long);
extern X_API void PL_put_list(term_t); extern X_API int PL_put_list(term_t);
extern X_API void PL_put_list_chars(term_t, const char *); 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_nil(term_t);
extern X_API void PL_put_pointer(term_t, void *); extern X_API int PL_put_pointer(term_t, void *);
extern X_API void PL_put_string_chars(term_t, const char *); extern X_API int PL_put_string_chars(term_t, const char *);
extern X_API void PL_put_term(term_t, term_t); extern X_API int PL_put_term(term_t, term_t);
extern X_API void PL_put_variable(term_t); extern X_API int PL_put_variable(term_t);
extern X_API int PL_compare(term_t, term_t); extern X_API int PL_compare(term_t, term_t);
/* end PL_put_* functions =============================*/ /* end PL_put_* functions =============================*/
/* begin PL_unify_* functions =============================*/ /* begin PL_unify_* functions =============================*/

View File

@ -788,7 +788,7 @@ X_API int PL_functor_arity(functor_t f)
/* begin PL_put_* functions =============================*/ /* 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; va_list ap;
int arity, i; int arity, i;
@ -797,12 +797,12 @@ X_API void PL_cons_functor(term_t d, functor_t f,...)
if (IsAtomTerm((Term)ff)) { if (IsAtomTerm((Term)ff)) {
Yap_PutInSlot(d, (YAP_Term)f); Yap_PutInSlot(d, (YAP_Term)f);
return; return TRUE;
} }
arity = ArityOfFunctor(ff); arity = ArityOfFunctor(ff);
if (arity > TMP_BUF_SIZE/sizeof(YAP_CELL)) { if (arity > TMP_BUF_SIZE/sizeof(YAP_CELL)) {
fprintf(stderr,"PL_cons_functor: arity too large (%d)\n", arity); fprintf(stderr,"PL_cons_functor: arity too large (%d)\n", arity);
return; return FALSE;
} }
va_start (ap, f); va_start (ap, f);
for (i = 0; i < arity; i++) { 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])); Yap_PutInSlot(d,YAP_MkPairTerm(tmp[0],tmp[1]));
else else
Yap_PutInSlot(d,YAP_MkApplTerm((YAP_Functor)ff,arity,tmp)); 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; int arity;
Functor ff = SWIFunctorToFunctor(f); Functor ff = SWIFunctorToFunctor(f);
if (IsAtomTerm((Term)ff)) { if (IsAtomTerm((Term)ff)) {
Yap_PutInSlot(d,(Term)ff); Yap_PutInSlot(d,(Term)ff);
return; return TRUE;
} }
arity = ArityOfFunctor(ff); arity = ArityOfFunctor(ff);
if (arity == 2 && ff == FunctorDot) if (arity == 2 && ff == FunctorDot)
Yap_PutInSlot(d,YAP_MkPairTerm(Yap_GetFromSlot(a0),Yap_GetFromSlot(a0+1))); Yap_PutInSlot(d,YAP_MkPairTerm(Yap_GetFromSlot(a0),Yap_GetFromSlot(a0+1)));
else else
Yap_PutInSlot(d,YAP_MkApplTerm((YAP_Functor)ff,arity,YAP_AddressFromSlot(a0))); 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))); 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))); 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))); 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)); 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; long int arity;
Functor ff = SWIFunctorToFunctor(f); Functor ff = SWIFunctorToFunctor(f);
@ -865,14 +871,16 @@ X_API void PL_put_functor(term_t t, functor_t f)
else else
Yap_PutInSlot(t,YAP_MkNewApplTerm((YAP_Functor)ff,arity)); 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)); 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 #if USE_GMP
char s[64]; 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); sprintf(s, "%lld", (long long int)n);
mpz_init_set_str (&rop, s, 10); mpz_init_set_str (&rop, s, 10);
Yap_PutInSlot(t,YAP_MkBigNumTerm((void *)&rop)); Yap_PutInSlot(t,YAP_MkBigNumTerm((void *)&rop));
return TRUE;
#else
return FALSE;
#endif #endif
} }
X_API void PL_put_list(term_t t) X_API int PL_put_list(term_t t)
{ {
Yap_PutInSlot(t,YAP_MkNewPairTerm()); 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)); Yap_PutInSlot(t,YAP_BufferToString((char *)s));
return TRUE;
} }
X_API void PL_put_nil(term_t t) 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) /* SWI: void PL_put_pointer(term_t -t, void *ptr)
YAP: NO EQUIVALENT */ YAP: NO EQUIVALENT */
/* SAM TO DO */ /* 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_Term tptr = YAP_MkIntTerm((long int)ptr);
Yap_PutInSlot(t,tptr); 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)); 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)); 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()); Yap_PutInSlot(t,YAP_MkVarTerm());
return TRUE;
} }
/* end PL_put_* functions =============================*/ /* end PL_put_* functions =============================*/