[GIT] ppl/ppl(devel): Common forein language interface for Ciao Prolog updated.

Module: ppl/ppl Branch: devel Commit: 7c03fce5f76e423281813c535520c282f7a6345e URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=7c03fce5f76e4...
Author: Roberto Bagnara roberto.bagnara@bugseng.com Date: Thu Jun 25 11:55:22 2020 +0200
Common forein language interface for Ciao Prolog updated.
---
interfaces/Prolog/Ciao/ciao_cfli.hh | 33 ++++++++++++++++++++++++++------- interfaces/Prolog/Ciao/ciao_efli.cc | 6 +++--- 2 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/interfaces/Prolog/Ciao/ciao_cfli.hh b/interfaces/Prolog/Ciao/ciao_cfli.hh index b4be37f..fcea5dc 100644 --- a/interfaces/Prolog/Ciao/ciao_cfli.hh +++ b/interfaces/Prolog/Ciao/ciao_cfli.hh @@ -58,7 +58,7 @@ Prolog_put_term(Prolog_term_ref& t, Prolog_term_ref u) { */ inline int Prolog_put_long(Prolog_term_ref& t, long l) { - t = ciao_integer(l); + t = ciao_mk_c_long(l); return 1; }
@@ -68,7 +68,7 @@ Prolog_put_long(Prolog_term_ref& t, long l) { inline int Prolog_put_ulong(Prolog_term_ref& t, unsigned long ul) { if (ul < INT_MAX) - t = ciao_integer(ul); + t = ciao_mk_c_long(ul); else { std::ostringstream s; s << ul; @@ -99,11 +99,21 @@ Prolog_put_atom(Prolog_term_ref& t, Prolog_atom a) { }
/*! + Assign to \p t the list terminator <CODE>[]</CODE> (which needs not + be an atom). +*/ +inline int +Prolog_put_nil(Prolog_term_ref& t) { + t = ciao_empty_list(); + return 1; +} + +/*! Assign to \p t a term representing the address contained in \p p. */ inline int Prolog_put_address(Prolog_term_ref& t, void* p) { - t = ciao_pointer_to_address(ciao_implicit_state, p); + t = ciao_pointer_to_address(ciao_implicit_ctx, p); return 1; }
@@ -222,7 +232,7 @@ Prolog_is_integer(Prolog_term_ref t) { */ inline int Prolog_is_address(Prolog_term_ref t) { - return ciao_is_address(ciao_implicit_state, t); + return ciao_is_address(ciao_implicit_ctx, t); }
/*! @@ -250,8 +260,8 @@ Prolog_is_cons(Prolog_term_ref t) { inline int Prolog_get_long(Prolog_term_ref t, long* lp) { assert(ciao_is_integer(t)); - if (ciao_fits_in_int(t)) { - *lp = ciao_to_integer(t); + if (ciao_fits_in_c_long(t)) { + *lp = ciao_get_c_long(t); return 1; } else { @@ -275,7 +285,7 @@ Prolog_get_long(Prolog_term_ref t, long* lp) { inline int Prolog_get_address(Prolog_term_ref t, void** vpp) { assert(Prolog_is_address(t)); - *vpp = ciao_address_to_pointer(ciao_implicit_state, t); + *vpp = ciao_address_to_pointer(ciao_implicit_ctx, t); return 1; }
@@ -317,6 +327,15 @@ Prolog_get_arg(int i, Prolog_term_ref t, Prolog_term_ref& a) { }
/*! + Succeeds if and only if \p t represents the list terminator <CODE>[]</CODE> + (which needs not be an atom). +*/ +inline int +Prolog_get_nil(Prolog_term_ref t) { + return ciao_is_empty_list(t); +} + +/*! If \p c is a Prolog cons (list constructor), assign its head and tail to \p h and \p t, respectively. The behavior is undefined if \p c is not a Prolog cons. diff --git a/interfaces/Prolog/Ciao/ciao_efli.cc b/interfaces/Prolog/Ciao/ciao_efli.cc index 7d069ed..daf2957 100644 --- a/interfaces/Prolog/Ciao/ciao_efli.cc +++ b/interfaces/Prolog/Ciao/ciao_efli.cc @@ -52,8 +52,8 @@ ppl_Prolog_sysdep_deinit() { int Prolog_get_Coefficient(Prolog_term_ref t, Coefficient& n) { assert(Prolog_is_integer(t)); - if (ciao_fits_in_int(t)) - n = ciao_to_integer(t); + if (ciao_fits_in_c_long(t)) + n = ciao_get_c_long(t); else { const char* s = ciao_get_number_chars(t); n = Coefficient(s); @@ -68,7 +68,7 @@ Prolog_put_Coefficient(Prolog_term_ref& t, const Coefficient& n) { int i; Result r = assign_r(i, n, ROUND_IGNORE); if (!result_overflow(r)) - t = ciao_integer(i); + t = ciao_mk_c_long(i); else { std::ostringstream s; s << n;
participants (1)
-
Roberto Bagnara