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

Roberto Bagnara roberto.bagnara at bugseng.com
Thu Jun 25 11:55:43 CEST 2020


Module: ppl/ppl
Branch: devel
Commit: 7c03fce5f76e423281813c535520c282f7a6345e
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=7c03fce5f76e423281813c535520c282f7a6345e

Author: Roberto Bagnara <roberto.bagnara at 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;




More information about the PPL-devel mailing list