[GIT] ppl/ppl(master): Fixed problems in the Artificial_Parameter(_Sequence ) interface.

Module: ppl/ppl Branch: master Commit: 9690f45d94004ab77af0b5b3b7c679cedf807f54 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=9690f45d94004...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Wed Mar 31 19:24:41 2010 +0200
Fixed problems in the Artificial_Parameter(_Sequence) interface.
---
interfaces/Java/jni/ppl_java_common.cc | 24 ++---------- interfaces/Java/jni/ppl_java_common.defs.hh | 10 +---- interfaces/Java/jni/ppl_java_globals.cc | 39 ++++++-------------- .../Artificial_Parameter.java | 20 ++++++++++ interfaces/Java/tests/PIP_Problem_test1.java | 4 +- 5 files changed, 40 insertions(+), 57 deletions(-)
diff --git a/interfaces/Java/jni/ppl_java_common.cc b/interfaces/Java/jni/ppl_java_common.cc index f09bc6d..306bbdd 100644 --- a/interfaces/Java/jni/ppl_java_common.cc +++ b/interfaces/Java/jni/ppl_java_common.cc @@ -1213,33 +1213,17 @@ build_java_congruence_system(JNIEnv* env, const Congruence_System& cgs) { }
jobject -build_java_artificial_parameter(JNIEnv* env, const PIP_Tree_Node::Artificial_Parameter& art) { +build_java_artificial_parameter +(JNIEnv* env, const PIP_Tree_Node::Artificial_Parameter& art) { + jobject j_le = build_linear_expression(env, art); jobject j_den = build_java_coeff(env, art.denominator()); - jobject j_art = build_linear_expression(env, art); jobject ret = env->NewObject(cached_classes.Artificial_Parameter, cached_FMIDs.Artificial_Parameter_init_ID, - j_art, j_den); + j_le, j_den); CHECK_RESULT_THROW(env, ret); return ret; }
-jobject -build_java_artificial_parameter_sequence(JNIEnv* env, const PIP_Tree_Node::Artificial_Parameter_Sequence& aps) { - jobject j_aps = env->NewObject(cached_classes.Artificial_Parameter_Sequence, - cached_FMIDs.Artificial_Parameter_Sequence_init_ID); - CHECK_RESULT_THROW(env, j_aps); - for (PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator v_begin - = aps.begin(), - v_end = aps.end(); v_begin != v_end; ++v_begin) { - jobject j_aps = build_java_artificial_parameter(env, *v_begin); - env->CallBooleanMethod(j_aps, - cached_FMIDs.Artificial_Parameter_Sequence_add_ID, - j_aps); - CHECK_EXCEPTION_THROW(env); - } - return j_aps; -} - } // namespace Java
} // namespace Interfaces diff --git a/interfaces/Java/jni/ppl_java_common.defs.hh b/interfaces/Java/jni/ppl_java_common.defs.hh index 618f48e..f1ca59d 100644 --- a/interfaces/Java/jni/ppl_java_common.defs.hh +++ b/interfaces/Java/jni/ppl_java_common.defs.hh @@ -726,7 +726,8 @@ build_java_constraint(JNIEnv* env, const Constraint& c); from C++ Artificial_Parameter \p ap. */ jobject -build_java_artificial_parameter(JNIEnv* env, const PIP_Tree_Node::Artificial_Parameter& ap); +build_java_artificial_parameter(JNIEnv* env, + const PIP_Tree_Node::Artificial_Parameter& ap);
/*! \brief Builds a Java parma_polyhedra_library::Congruence @@ -757,13 +758,6 @@ jobject build_java_constraint_system(JNIEnv* env, const Constraint_System& cs);
/*! \brief - Builds a Java parma_polyhedra_library::Artificial_Parameter - from C++ Artificial_Parameter \p ap. -*/ -jobject -build_java_artificial_parameter(JNIEnv* env, - const PIP_Tree_Node::Artificial_Parameter& ap); -/*! \brief Builds a Java parma_polyhedra_library::Artificial_Parameter_Sequence from C++ Artificial_Parameter_Sequence \p aps. */ diff --git a/interfaces/Java/jni/ppl_java_globals.cc b/interfaces/Java/jni/ppl_java_globals.cc index b2e3dbc..d701ef1 100644 --- a/interfaces/Java/jni/ppl_java_globals.cc +++ b/interfaces/Java/jni/ppl_java_globals.cc @@ -23,7 +23,6 @@ site: http://www.cs.unipr.it/ppl/ . */ #include "ppl_java_common.defs.hh" #include "parma_polyhedra_library_Artificial_Parameter.h" #include "parma_polyhedra_library_Artificial_Parameter_Sequence.h" -#include "parma_polyhedra_library_Artificial_Parameter_Sequence_Iterator.h" #include "parma_polyhedra_library_Bounded_Integer_Type_Overflow.h" #include "parma_polyhedra_library_Bounded_Integer_Type_Representation.h" #include "parma_polyhedra_library_Bounded_Integer_Type_Width.h" @@ -1969,20 +1968,19 @@ Java_parma_1polyhedra_1library_PIP_1Tree_1Node_number_1of_1artificials
JNIEXPORT jobject JNICALL Java_parma_1polyhedra_1library_PIP_1Tree_1Node_artificials -(JNIEnv* env, jobject j_this_pip_problem) { +(JNIEnv* env, jobject j_this_pip_node) { try { jobject j_arts = env->NewObject(cached_classes.Artificial_Parameter_Sequence, cached_FMIDs.Artificial_Parameter_Sequence_init_ID); CHECK_RESULT_RETURN(env, j_arts, 0);
- PIP_Tree_Node* pip - = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this_pip_problem)); - for (PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator arts_it - = pip->art_parameter_begin(), arts_end = pip->art_parameter_end(); - arts_it != arts_end; - ++arts_it) { - jobject j_art = build_java_artificial_parameter(env, *arts_it); + const PIP_Tree_Node* pip_node + = reinterpret_cast<const PIP_Tree_Node*>(get_ptr(env, j_this_pip_node)); + for (PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator + i = pip_node->art_parameter_begin(), + i_end = pip_node->art_parameter_end(); i != i_end; ++i) { + jobject j_art = build_java_artificial_parameter(env, *i); env->CallBooleanMethod(j_arts, cached_FMIDs.Artificial_Parameter_Sequence_add_ID, j_art); @@ -2019,14 +2017,14 @@ JNIEXPORT void JNICALL Java_parma_1polyhedra_1library_Artificial_1Parameter_initIDs (JNIEnv* env, jclass j_artificial_parameter_class) { jfieldID fID; - fID = env->GetFieldID(j_artificial_parameter_class, "den", - "Lparma_polyhedra_library/Coefficient;"); - CHECK_RESULT_ASSERT(env, fID); - cached_FMIDs.Artificial_Parameter_den_ID = fID; fID = env->GetFieldID(j_artificial_parameter_class, "le", "Lparma_polyhedra_library/Linear_Expression;"); CHECK_RESULT_ASSERT(env, fID); cached_FMIDs.Artificial_Parameter_le_ID = fID; + fID = env->GetFieldID(j_artificial_parameter_class, "den", + "Lparma_polyhedra_library/Coefficient;"); + CHECK_RESULT_ASSERT(env, fID); + cached_FMIDs.Artificial_Parameter_den_ID = fID; jmethodID mID; mID = env->GetMethodID(j_artificial_parameter_class, "<init>", "(Lparma_polyhedra_library/Linear_Expression;" @@ -2042,21 +2040,8 @@ Java_parma_1polyhedra_1library_Artificial_1Parameter_1Sequence_initIDs jmethodID mID; mID = env->GetMethodID(j_aps_class, "<init>", "()V"); CHECK_RESULT_ASSERT(env, mID); - cached_FMIDs.Artificial_Parameter_init_ID = mID; + cached_FMIDs.Artificial_Parameter_Sequence_init_ID = mID; mID = env->GetMethodID(j_aps_class, "add", "(Ljava/lang/Object;)Z"); CHECK_RESULT_ASSERT(env, mID); cached_FMIDs.Artificial_Parameter_Sequence_add_ID = mID; - // NOTE: initialize the iterator method IDs common to all *_System classes. - mID = env->GetMethodID(j_aps_class, "iterator", - "()Ljava/util/Iterator;"); - CHECK_RESULT_ASSERT(env, mID); - cached_FMIDs.System_iterator_ID = mID; - mID = env->GetMethodID(cached_classes.Iterator, "hasNext", "()Z"); - CHECK_RESULT_ASSERT(env, mID); - cached_FMIDs.System_Iterator_has_next_ID = mID; - assert(cached_classes.Iterator != NULL); - mID = env->GetMethodID(cached_classes.Iterator, "next", - "()Ljava/lang/Object;"); - CHECK_RESULT_ASSERT(env, mID); - cached_FMIDs.System_Iterator_next_ID = mID; } diff --git a/interfaces/Java/parma_polyhedra_library/Artificial_Parameter.java b/interfaces/Java/parma_polyhedra_library/Artificial_Parameter.java index 0f917c3..347b4f4 100644 --- a/interfaces/Java/parma_polyhedra_library/Artificial_Parameter.java +++ b/interfaces/Java/parma_polyhedra_library/Artificial_Parameter.java @@ -54,6 +54,15 @@ public class Artificial_Parameter { private Coefficient den;
/*! \brief + Builds an artificial parameter from a linear expression + and a denominator. + */ + public Artificial_Parameter(Linear_Expression e, Coefficient d) { + le = e.clone(); + den = new Coefficient(d); + } + + /*! \brief Returns the linear expression in artificial parameter \p this. */ public Linear_Expression linear_expression() { @@ -66,4 +75,15 @@ public class Artificial_Parameter { public Coefficient denominator() { return den; } + + //! Returns an ascii formatted internal representation of \p this. + public native String ascii_dump(); + + //! Returns a string representation of \p this. + public native String toString(); + + private static native void initIDs(); + static { + initIDs(); + } } diff --git a/interfaces/Java/tests/PIP_Problem_test1.java b/interfaces/Java/tests/PIP_Problem_test1.java index 9eac94c..99c7399 100644 --- a/interfaces/Java/tests/PIP_Problem_test1.java +++ b/interfaces/Java/tests/PIP_Problem_test1.java @@ -270,8 +270,8 @@ static { return false; PIP_Tree_Node ptree1 = pip1.solution(); long num_of_arts1 = ptree1.number_of_artificials(); -// Artificial_Parameter_Sequence arts1 = ptree1.artificials(); - ok = (ptree1.OK() && (num_of_arts1 == 0)); + Artificial_Parameter_Sequence arts1 = ptree1.artificials(); + ok = ptree1.OK() && num_of_arts1 == 0 && arts1.size() == 0; if (!ok) return false; PIP_Solution_Node psol1 = ptree1.as_solution();
participants (1)
-
Enea Zaffanella