[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