[PPL-devel] [GIT] ppl/ppl(master): Corrected a bug in the interfacing of drop_disjunct for Java, Ocaml and Prolog.
Enea Zaffanella
zaffanella at cs.unipr.it
Sun Mar 22 11:14:15 CET 2009
Module: ppl/ppl
Branch: master
Commit: 6a6734db48e2ca605dfc27ce5f1a923eb867ed25
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=6a6734db48e2ca605dfc27ce5f1a923eb867ed25
Author: Enea Zaffanella <zaffanella at 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_ at CLASS@_drop_disjunct_code',
JNIEXPORT void JNICALL
Java_parma_1polyhedra_1library_ at 1TOPOLOGY@@1CLASS at _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_ at CLASS@_drop_disjunct(value t_pps, value caml_item_to_drop) try {
CAMLparam2(t_pps, caml_item_to_drop);
@CPP_CLASS@& pps = *p_ at CLASS@_val(t_pps);
@CPP_CLASS@::iterator& itr = *p_ at 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_ at CLASS@_ at INCDEC@_iterator_code',
`
print_string_if_noisy "testing ppl_ at CLASS@_ at INCDEC@_iterator: " ;;
-let it = ppl_ at CLASS@_begin_iterator @!CLASS at 01;;
-ppl_ at CLASS@_ at INCDEC@_iterator it;;
-let out = if (ppl_ at CLASS@_OK @!CLASS at 01)
+let itb = ppl_ at CLASS@_begin_iterator @!CLASS at 01;;
+let it_begin = ppl_ at CLASS@_begin_iterator @!CLASS at 01;;
+let ite = ppl_ at CLASS@_end_iterator @!CLASS at 01;;
+let it_end = ppl_ at CLASS@_end_iterator @!CLASS at 01;;
+let size = ppl_ at CLASS@_size @!CLASS at 01 in
+if (size > 0)
+ then (
+ ppl_ at CLASS@_increment_iterator itb;
+ ppl_ at CLASS@_decrement_iterator itb;
+ ppl_ at CLASS@_decrement_iterator ite;
+ ppl_ at CLASS@_increment_iterator ite;
+ );;
+let out = if ((ppl_ at CLASS@_OK @!CLASS at 01)
+ & (ppl_ at CLASS@_iterator_equals_iterator itb it_begin)
+ & (ppl_ at 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_ at CLASS@_drop_disjunct_code',
PPL_CHECK(it);
@CPP_CLASS@::iterator& i = *it;
- pps->drop_disjunct(i);
+ i = pps->drop_disjunct(i);
return PROLOG_SUCCESS;
}
More information about the PPL-devel
mailing list