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

Enea Zaffanella zaffanella at cs.unipr.it
Wed Mar 31 19:26:00 CEST 2010


Module: ppl/ppl
Branch: master
Commit: 9690f45d94004ab77af0b5b3b7c679cedf807f54
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=9690f45d94004ab77af0b5b3b7c679cedf807f54

Author: Enea Zaffanella <zaffanella at 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();




More information about the PPL-devel mailing list