
Module: ppl/ppl Branch: master Commit: 6a6734db48e2ca605dfc27ce5f1a923eb867ed25 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=6a6734db48e2c...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Sun Mar 22 11:08:55 2009 +0100
Corrected a bug in the interfacing of drop_disjunct for Java, Ocaml and Prolog. Also corrected a wrong test in the automatically generated test suite for the OCaml interface: we were trying to decrement an iterator pointing to the start of the sequence of disjuncts.
---
...ppl_interface_generator_java_classes_cc_code.m4 | 6 +++--- .../OCaml/ppl_interface_generator_ocaml_cc_code.m4 | 2 +- .../ppl_interface_generator_ocaml_test_ml_code.m4 | 18 +++++++++++++++--- .../ppl_interface_generator_prolog_cc_code.m4 | 2 +- 4 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 b/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 index 2a289d3..f532e32 100644 --- a/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 +++ b/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 @@ -165,11 +165,11 @@ m4_define(`ppl_@CLASS@_drop_disjunct_code', JNIEXPORT void JNICALL Java_parma_1polyhedra_1library_@1TOPOLOGY@@1CLASS@_drop_1disjunct (JNIEnv* env, jobject j_this, jobject j_it) try { - @TOPOLOGY@@CPP_CLASS@::iterator* itr_ptr - = reinterpret_cast<@TOPOLOGY@@CPP_CLASS@::iterator*>(get_ptr(env, j_it)); @TOPOLOGY@@CPP_CLASS@* this_ptr = reinterpret_cast<@TOPOLOGY@@CPP_CLASS@*>(get_ptr(env, j_this)); - this_ptr->drop_disjunct(*itr_ptr); + @TOPOLOGY@@CPP_CLASS@::iterator& itr + = *(reinterpret_cast<@TOPOLOGY@@CPP_CLASS@::iterator*>(get_ptr(env, j_it))); + itr = this_ptr->drop_disjunct(itr); } CATCH_ALL
diff --git a/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 b/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 index cdc5e0b..35ff02b 100644 --- a/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 +++ b/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 @@ -957,7 +957,7 @@ ppl_@CLASS@_drop_disjunct(value t_pps, value caml_item_to_drop) try { CAMLparam2(t_pps, caml_item_to_drop); @CPP_CLASS@& pps = *p_@CLASS@_val(t_pps); @CPP_CLASS@::iterator& itr = *p_@CLASS@_iterator_val(caml_item_to_drop); - pps.drop_disjunct(itr); + itr = pps.drop_disjunct(itr); CAMLreturn0; } CATCH_ALL diff --git a/interfaces/OCaml/tests/ppl_interface_generator_ocaml_test_ml_code.m4 b/interfaces/OCaml/tests/ppl_interface_generator_ocaml_test_ml_code.m4 index df44c04..676d282 100644 --- a/interfaces/OCaml/tests/ppl_interface_generator_ocaml_test_ml_code.m4 +++ b/interfaces/OCaml/tests/ppl_interface_generator_ocaml_test_ml_code.m4 @@ -788,9 +788,21 @@ print_string_if_noisy "\n";; m4_define(`ppl_@CLASS@_@INCDEC@_iterator_code', ` print_string_if_noisy "testing ppl_@CLASS@_@INCDEC@_iterator: " ;; -let it = ppl_@CLASS@_begin_iterator @!CLASS@01;; -ppl_@CLASS@_@INCDEC@_iterator it;; -let out = if (ppl_@CLASS@_OK @!CLASS@01) +let itb = ppl_@CLASS@_begin_iterator @!CLASS@01;; +let it_begin = ppl_@CLASS@_begin_iterator @!CLASS@01;; +let ite = ppl_@CLASS@_end_iterator @!CLASS@01;; +let it_end = ppl_@CLASS@_end_iterator @!CLASS@01;; +let size = ppl_@CLASS@_size @!CLASS@01 in +if (size > 0) + then ( + ppl_@CLASS@_increment_iterator itb; + ppl_@CLASS@_decrement_iterator itb; + ppl_@CLASS@_decrement_iterator ite; + ppl_@CLASS@_increment_iterator ite; + );; +let out = if ((ppl_@CLASS@_OK @!CLASS@01) + & (ppl_@CLASS@_iterator_equals_iterator itb it_begin) + & (ppl_@CLASS@_iterator_equals_iterator ite it_end)) then "success" else "failed" in (print_string_if_noisy out);; print_string_if_noisy "\n";; diff --git a/interfaces/Prolog/ppl_interface_generator_prolog_cc_code.m4 b/interfaces/Prolog/ppl_interface_generator_prolog_cc_code.m4 index 9e81e73..7bec765 100644 --- a/interfaces/Prolog/ppl_interface_generator_prolog_cc_code.m4 +++ b/interfaces/Prolog/ppl_interface_generator_prolog_cc_code.m4 @@ -403,7 +403,7 @@ m4_define(`ppl_@CLASS@_drop_disjunct_code', PPL_CHECK(it);
@CPP_CLASS@::iterator& i = *it; - pps->drop_disjunct(i); + i = pps->drop_disjunct(i);
return PROLOG_SUCCESS; }