|
PPL Configured Java Language Interface
0.12.1
|
00001 /* PPL Java interface: domain-independent functions. 00002 Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> 00003 Copyright (C) 2010-2012 BUGSENG srl (http://bugseng.com) 00004 00005 This file is part of the Parma Polyhedra Library (PPL). 00006 00007 The PPL is free software; you can redistribute it and/or modify it 00008 under the terms of the GNU General Public License as published by the 00009 Free Software Foundation; either version 3 of the License, or (at your 00010 option) any later version. 00011 00012 The PPL is distributed in the hope that it will be useful, but WITHOUT 00013 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00015 for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software Foundation, 00019 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. 00020 00021 For the most up-to-date information see the Parma Polyhedra Library 00022 site: http://bugseng.com/products/ppl/ . */ 00023 00024 #include "ppl_java_common.defs.hh" 00025 #include "parma_polyhedra_library_Artificial_Parameter.h" 00026 #include "parma_polyhedra_library_Artificial_Parameter_Sequence.h" 00027 #include "parma_polyhedra_library_Bounded_Integer_Type_Overflow.h" 00028 #include "parma_polyhedra_library_Bounded_Integer_Type_Representation.h" 00029 #include "parma_polyhedra_library_Bounded_Integer_Type_Width.h" 00030 #include "parma_polyhedra_library_By_Reference.h" 00031 #include "parma_polyhedra_library_Coefficient.h" 00032 #include "parma_polyhedra_library_Complexity_Class.h" 00033 #include "parma_polyhedra_library_Congruence.h" 00034 #include "parma_polyhedra_library_Congruence_System.h" 00035 #include "parma_polyhedra_library_Constraint.h" 00036 #include "parma_polyhedra_library_Constraint_System.h" 00037 #include "parma_polyhedra_library_Degenerate_Element.h" 00038 #include "parma_polyhedra_library_Generator.h" 00039 #include "parma_polyhedra_library_Generator_System.h" 00040 #include "parma_polyhedra_library_Generator_Type.h" 00041 #include "parma_polyhedra_library_Grid_Generator.h" 00042 #include "parma_polyhedra_library_Grid_Generator_System.h" 00043 #include "parma_polyhedra_library_Grid_Generator_Type.h" 00044 #include "parma_polyhedra_library_IO.h" 00045 #include "parma_polyhedra_library_Linear_Expression.h" 00046 #include "parma_polyhedra_library_Linear_Expression_Coefficient.h" 00047 #include "parma_polyhedra_library_Linear_Expression_Difference.h" 00048 #include "parma_polyhedra_library_Linear_Expression_Sum.h" 00049 #include "parma_polyhedra_library_Linear_Expression_Times.h" 00050 #include "parma_polyhedra_library_Linear_Expression_Unary_Minus.h" 00051 #include "parma_polyhedra_library_Linear_Expression_Variable.h" 00052 #include "parma_polyhedra_library_MIP_Problem.h" 00053 #include "parma_polyhedra_library_MIP_Problem_Status.h" 00054 #include "parma_polyhedra_library_Optimization_Mode.h" 00055 #include "parma_polyhedra_library_Pair.h" 00056 #include "parma_polyhedra_library_Parma_Polyhedra_Library.h" 00057 #include "parma_polyhedra_library_Partial_Function.h" 00058 #include "parma_polyhedra_library_PIP_Problem.h" 00059 #include "parma_polyhedra_library_PIP_Problem_Status.h" 00060 #include "parma_polyhedra_library_PIP_Decision_Node.h" 00061 #include "parma_polyhedra_library_PIP_Solution_Node.h" 00062 #include "parma_polyhedra_library_PIP_Tree_Node.h" 00063 #include "parma_polyhedra_library_Poly_Con_Relation.h" 00064 #include "parma_polyhedra_library_Poly_Gen_Relation.h" 00065 #include "parma_polyhedra_library_PPL_Object.h" 00066 #include "parma_polyhedra_library_Relation_Symbol.h" 00067 #include "parma_polyhedra_library_Variable.h" 00068 #include "parma_polyhedra_library_Variables_Set.h" 00069 00070 using namespace Parma_Polyhedra_Library; 00071 using namespace Parma_Polyhedra_Library::Interfaces::Java; 00072 00073 JNIEXPORT void JNICALL 00074 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_initialize_1library 00075 (JNIEnv* env, jclass /* ppl_class */) { 00076 initialize(); 00077 cached_classes.init_cache(env); 00078 } 00079 00080 JNIEXPORT void JNICALL 00081 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_finalize_1library 00082 (JNIEnv* env, jclass /* ppl_class */) { 00083 cached_classes.clear_cache(env); 00084 finalize(); 00085 } 00086 00087 00088 JNIEXPORT void JNICALL 00089 Java_parma_1polyhedra_1library_By_1Reference_initIDs 00090 (JNIEnv* env, jclass j_by_ref_class) { 00091 jfieldID fID; 00092 fID = env->GetFieldID(j_by_ref_class, "obj", "Ljava/lang/Object;"); 00093 CHECK_RESULT_ASSERT(env, fID); 00094 cached_FMIDs.By_Reference_obj_ID = fID; 00095 jmethodID mID; 00096 mID = env->GetMethodID(j_by_ref_class, "<init>", "(Ljava/lang/Object;)V"); 00097 CHECK_RESULT_ASSERT(env, mID); 00098 cached_FMIDs.By_Reference_init_ID = mID; 00099 } 00100 00101 JNIEXPORT jint JNICALL 00102 Java_parma_1polyhedra_1library_Coefficient_bits(JNIEnv*, jclass) { 00103 return PPL_COEFFICIENT_BITS; 00104 } 00105 00106 JNIEXPORT void JNICALL 00107 Java_parma_1polyhedra_1library_Coefficient_initIDs 00108 (JNIEnv* env, jclass j_coeff_class) { 00109 jfieldID fID; 00110 fID = env->GetFieldID(j_coeff_class, "value", "Ljava/math/BigInteger;"); 00111 CHECK_RESULT_ASSERT(env, fID); 00112 cached_FMIDs.Coefficient_value_ID = fID; 00113 jmethodID mID; 00114 mID = env->GetMethodID(j_coeff_class, "<init>", "(Ljava/lang/String;)V"); 00115 CHECK_RESULT_ASSERT(env, mID); 00116 cached_FMIDs.Coefficient_init_from_String_ID = mID; 00117 mID = env->GetMethodID(j_coeff_class, "toString", "()Ljava/lang/String;"); 00118 CHECK_RESULT_ASSERT(env, mID); 00119 cached_FMIDs.Coefficient_toString_ID = mID; 00120 // Boolean. 00121 mID = env->GetStaticMethodID(cached_classes.Boolean, "valueOf", 00122 "(Z)Ljava/lang/Boolean;"); 00123 CHECK_RESULT_ASSERT(env, mID); 00124 cached_FMIDs.Boolean_valueOf_ID = mID; 00125 // Integer. 00126 mID = env->GetStaticMethodID(cached_classes.Integer, "valueOf", 00127 "(I)Ljava/lang/Integer;"); 00128 CHECK_RESULT_ASSERT(env, mID); 00129 cached_FMIDs.Integer_valueOf_ID = mID; 00130 mID = env->GetMethodID(cached_classes.Integer, "intValue", "()I"); 00131 CHECK_RESULT_ASSERT(env, mID); 00132 cached_FMIDs.Integer_intValue_ID = mID; 00133 // Long. 00134 mID = env->GetStaticMethodID(cached_classes.Long, "valueOf", 00135 "(J)Ljava/lang/Long;"); 00136 CHECK_RESULT_ASSERT(env, mID); 00137 cached_FMIDs.Long_valueOf_ID = mID; 00138 mID = env->GetMethodID(cached_classes.Long, "longValue", "()J"); 00139 CHECK_RESULT_ASSERT(env, mID); 00140 cached_FMIDs.Long_longValue_ID = mID; 00141 } 00142 00143 JNIEXPORT void JNICALL 00144 Java_parma_1polyhedra_1library_Complexity_1Class_initIDs 00145 (JNIEnv* env, jclass j_complexity_class) { 00146 jmethodID mID = env->GetMethodID(j_complexity_class, "ordinal", "()I"); 00147 CHECK_RESULT_ASSERT(env, mID); 00148 cached_FMIDs.Complexity_Class_ordinal_ID = mID; 00149 } 00150 00151 JNIEXPORT void JNICALL 00152 Java_parma_1polyhedra_1library_Congruence_initIDs 00153 (JNIEnv* env, jclass j_congruence_class) { 00154 jfieldID fID; 00155 fID = env->GetFieldID(j_congruence_class, "mod", 00156 "Lparma_polyhedra_library/Coefficient;"); 00157 CHECK_RESULT_ASSERT(env, fID); 00158 cached_FMIDs.Congruence_mod_ID = fID; 00159 fID = env->GetFieldID(j_congruence_class, "lhs", 00160 "Lparma_polyhedra_library/Linear_Expression;"); 00161 CHECK_RESULT_ASSERT(env, fID); 00162 cached_FMIDs.Congruence_lhs_ID = fID; 00163 fID = env->GetFieldID(j_congruence_class, "rhs", 00164 "Lparma_polyhedra_library/Linear_Expression;"); 00165 CHECK_RESULT_ASSERT(env, fID); 00166 cached_FMIDs.Congruence_rhs_ID = fID; 00167 jmethodID mID; 00168 mID = env->GetMethodID(j_congruence_class, "<init>", 00169 "(Lparma_polyhedra_library/Linear_Expression;" 00170 "Lparma_polyhedra_library/Linear_Expression;" 00171 "Lparma_polyhedra_library/Coefficient;)V"); 00172 CHECK_RESULT_ASSERT(env, mID); 00173 cached_FMIDs.Congruence_init_ID = mID; 00174 } 00175 00176 JNIEXPORT void JNICALL 00177 Java_parma_1polyhedra_1library_Congruence_1System_initIDs 00178 (JNIEnv* env, jclass j_con_sys_class) { 00179 jmethodID mID; 00180 mID = env->GetMethodID(j_con_sys_class, "<init>", "()V"); 00181 CHECK_RESULT_ASSERT(env, mID); 00182 cached_FMIDs.Congruence_System_init_ID = mID; 00183 mID = env->GetMethodID(j_con_sys_class, "add", "(Ljava/lang/Object;)Z"); 00184 CHECK_RESULT_ASSERT(env, mID); 00185 cached_FMIDs.Congruence_System_add_ID = mID; 00186 } 00187 00188 JNIEXPORT void JNICALL 00189 Java_parma_1polyhedra_1library_Constraint_initIDs 00190 (JNIEnv* env, jclass j_constraint_class) { 00191 jfieldID fID; 00192 fID = env->GetFieldID(j_constraint_class, "lhs", 00193 "Lparma_polyhedra_library/Linear_Expression;"); 00194 CHECK_RESULT_ASSERT(env, fID); 00195 cached_FMIDs.Constraint_lhs_ID = fID; 00196 fID = env->GetFieldID(j_constraint_class, "rhs", 00197 "Lparma_polyhedra_library/Linear_Expression;"); 00198 CHECK_RESULT_ASSERT(env, fID); 00199 cached_FMIDs.Constraint_rhs_ID = fID; 00200 fID = env->GetFieldID(j_constraint_class, "kind", 00201 "Lparma_polyhedra_library/Relation_Symbol;"); 00202 CHECK_RESULT_ASSERT(env, fID); 00203 cached_FMIDs.Constraint_kind_ID = fID; 00204 jmethodID mID; 00205 mID = env->GetMethodID(j_constraint_class, "<init>", 00206 "(Lparma_polyhedra_library/Linear_Expression;" 00207 "Lparma_polyhedra_library/Relation_Symbol;" 00208 "Lparma_polyhedra_library/Linear_Expression;)V"); 00209 CHECK_RESULT_ASSERT(env, mID); 00210 cached_FMIDs.Constraint_init_ID = mID; 00211 } 00212 00213 JNIEXPORT void JNICALL 00214 Java_parma_1polyhedra_1library_Constraint_1System_initIDs 00215 (JNIEnv* env, jclass j_con_sys_class) { 00216 jmethodID mID; 00217 mID = env->GetMethodID(j_con_sys_class, "<init>", "()V"); 00218 CHECK_RESULT_ASSERT(env, mID); 00219 cached_FMIDs.Constraint_System_init_ID = mID; 00220 mID = env->GetMethodID(j_con_sys_class, "add", "(Ljava/lang/Object;)Z"); 00221 CHECK_RESULT_ASSERT(env, mID); 00222 cached_FMIDs.Constraint_System_add_ID = mID; 00223 // NOTE: initialize the iterator method IDs common to all *_System classes. 00224 mID = env->GetMethodID(j_con_sys_class, "iterator", 00225 "()Ljava/util/Iterator;"); 00226 CHECK_RESULT_ASSERT(env, mID); 00227 cached_FMIDs.System_iterator_ID = mID; 00228 mID = env->GetMethodID(cached_classes.Iterator, "hasNext", "()Z"); 00229 CHECK_RESULT_ASSERT(env, mID); 00230 cached_FMIDs.System_Iterator_has_next_ID = mID; 00231 assert(cached_classes.Iterator != NULL); 00232 mID = env->GetMethodID(cached_classes.Iterator, "next", 00233 "()Ljava/lang/Object;"); 00234 CHECK_RESULT_ASSERT(env, mID); 00235 cached_FMIDs.System_Iterator_next_ID = mID; 00236 } 00237 00238 JNIEXPORT void JNICALL 00239 Java_parma_1polyhedra_1library_Degenerate_1Element_initIDs 00240 (JNIEnv* env, jclass j_degenerate_class) { 00241 jmethodID mID = env->GetMethodID(j_degenerate_class, "ordinal", "()I"); 00242 CHECK_RESULT_ASSERT(env, mID); 00243 cached_FMIDs.Degenerate_Element_ordinal_ID = mID; 00244 } 00245 00246 JNIEXPORT void JNICALL 00247 Java_parma_1polyhedra_1library_Generator_initIDs 00248 (JNIEnv* env, jclass j_generator_class) { 00249 jfieldID fID; 00250 fID = env->GetFieldID(j_generator_class, "gt", 00251 "Lparma_polyhedra_library/Generator_Type;"); 00252 CHECK_RESULT_ASSERT(env, fID); 00253 cached_FMIDs.Generator_gt_ID = fID; 00254 fID = env->GetFieldID(j_generator_class, "le", 00255 "Lparma_polyhedra_library/Linear_Expression;"); 00256 CHECK_RESULT_ASSERT(env, fID); 00257 cached_FMIDs.Generator_le_ID = fID; 00258 fID = env->GetFieldID(j_generator_class, "div", 00259 "Lparma_polyhedra_library/Coefficient;"); 00260 CHECK_RESULT_ASSERT(env, fID); 00261 cached_FMIDs.Generator_div_ID = fID; 00262 jmethodID mID; 00263 mID = env->GetStaticMethodID(j_generator_class, "line", 00264 "(Lparma_polyhedra_library/Linear_Expression;)" 00265 "Lparma_polyhedra_library/Generator;"); 00266 CHECK_RESULT_ASSERT(env, mID); 00267 cached_FMIDs.Generator_line_ID = mID; 00268 mID = env->GetStaticMethodID(j_generator_class, "ray", 00269 "(Lparma_polyhedra_library/Linear_Expression;)" 00270 "Lparma_polyhedra_library/Generator;"); 00271 CHECK_RESULT_ASSERT(env, mID); 00272 cached_FMIDs.Generator_ray_ID = mID; 00273 mID = env->GetStaticMethodID(j_generator_class, "point", 00274 "(Lparma_polyhedra_library/Linear_Expression;" 00275 "Lparma_polyhedra_library/Coefficient;)" 00276 "Lparma_polyhedra_library/Generator;"); 00277 CHECK_RESULT_ASSERT(env, mID); 00278 cached_FMIDs.Generator_point_ID = mID; 00279 mID = env->GetStaticMethodID(j_generator_class, "closure_point", 00280 "(Lparma_polyhedra_library/Linear_Expression;" 00281 "Lparma_polyhedra_library/Coefficient;)" 00282 "Lparma_polyhedra_library/Generator;"); 00283 CHECK_RESULT_ASSERT(env, mID); 00284 cached_FMIDs.Generator_closure_point_ID = mID; 00285 } 00286 00287 JNIEXPORT void JNICALL 00288 Java_parma_1polyhedra_1library_Generator_1System_initIDs 00289 (JNIEnv* env, jclass j_gen_sys_class) { 00290 jmethodID mID; 00291 mID = env->GetMethodID(j_gen_sys_class, "<init>", "()V"); 00292 CHECK_RESULT_ASSERT(env, mID); 00293 cached_FMIDs.Generator_System_init_ID = mID; 00294 mID = env->GetMethodID(j_gen_sys_class, "add", "(Ljava/lang/Object;)Z"); 00295 CHECK_RESULT_ASSERT(env, mID); 00296 cached_FMIDs.Generator_System_add_ID = mID; 00297 } 00298 00299 JNIEXPORT void JNICALL 00300 Java_parma_1polyhedra_1library_Generator_1Type_initIDs 00301 (JNIEnv* env, jclass j_gen_type_class) { 00302 jmethodID mID; 00303 mID = env->GetMethodID(j_gen_type_class, "ordinal", "()I"); 00304 CHECK_RESULT_ASSERT(env, mID); 00305 cached_FMIDs.Generator_Type_ordinal_ID = mID; 00306 } 00307 00308 JNIEXPORT void JNICALL 00309 Java_parma_1polyhedra_1library_Grid_1Generator_initIDs 00310 (JNIEnv* env, jclass j_grid_generator_class) { 00311 jfieldID fID; 00312 fID = env->GetFieldID(j_grid_generator_class, "gt", 00313 "Lparma_polyhedra_library/Grid_Generator_Type;"); 00314 CHECK_RESULT_ASSERT(env, fID); 00315 cached_FMIDs.Grid_Generator_gt_ID = fID; 00316 fID = env->GetFieldID(j_grid_generator_class, "le", 00317 "Lparma_polyhedra_library/Linear_Expression;"); 00318 CHECK_RESULT_ASSERT(env, fID); 00319 cached_FMIDs.Grid_Generator_le_ID = fID; 00320 fID = env->GetFieldID(j_grid_generator_class, "div", 00321 "Lparma_polyhedra_library/Coefficient;"); 00322 CHECK_RESULT_ASSERT(env, fID); 00323 cached_FMIDs.Grid_Generator_div_ID = fID; 00324 jmethodID mID; 00325 mID = env->GetStaticMethodID(j_grid_generator_class, "grid_line", 00326 "(Lparma_polyhedra_library/Linear_Expression;)" 00327 "Lparma_polyhedra_library/Grid_Generator;"); 00328 CHECK_RESULT_ASSERT(env, mID); 00329 cached_FMIDs.Grid_Generator_grid_line_ID = mID; 00330 mID = env->GetStaticMethodID(j_grid_generator_class, "parameter", 00331 "(Lparma_polyhedra_library/Linear_Expression;" 00332 "Lparma_polyhedra_library/Coefficient;)" 00333 "Lparma_polyhedra_library/Grid_Generator;"); 00334 CHECK_RESULT_ASSERT(env, mID); 00335 cached_FMIDs.Grid_Generator_parameter_ID = mID; 00336 mID = env->GetStaticMethodID(j_grid_generator_class, "grid_point", 00337 "(Lparma_polyhedra_library/Linear_Expression;" 00338 "Lparma_polyhedra_library/Coefficient;)" 00339 "Lparma_polyhedra_library/Grid_Generator;"); 00340 CHECK_RESULT_ASSERT(env, mID); 00341 cached_FMIDs.Grid_Generator_grid_point_ID = mID; 00342 } 00343 00344 JNIEXPORT void JNICALL 00345 Java_parma_1polyhedra_1library_Grid_1Generator_1System_initIDs 00346 (JNIEnv* env, jclass j_gen_sys_class) { 00347 jmethodID mID; 00348 mID = env->GetMethodID(j_gen_sys_class, "<init>", "()V"); 00349 CHECK_RESULT_ASSERT(env, mID); 00350 cached_FMIDs.Grid_Generator_System_init_ID = mID; 00351 mID = env->GetMethodID(j_gen_sys_class, "add", "(Ljava/lang/Object;)Z"); 00352 CHECK_RESULT_ASSERT(env, mID); 00353 cached_FMIDs.Grid_Generator_System_add_ID = mID; 00354 } 00355 00356 JNIEXPORT void JNICALL 00357 Java_parma_1polyhedra_1library_Grid_1Generator_1Type_initIDs 00358 (JNIEnv* env, jclass j_grid_gen_type_class) { 00359 jmethodID mID; 00360 mID = env->GetMethodID(j_grid_gen_type_class, "ordinal", "()I"); 00361 CHECK_RESULT_ASSERT(env, mID); 00362 cached_FMIDs.Grid_Generator_Type_ordinal_ID = mID; 00363 } 00364 00365 JNIEXPORT void JNICALL 00366 Java_parma_1polyhedra_1library_Linear_1Expression_initIDs 00367 (JNIEnv* env, jclass j_le_class) { 00368 jmethodID mID; 00369 mID = env->GetMethodID(j_le_class, "sum", 00370 "(Lparma_polyhedra_library/Linear_Expression;)" 00371 "Lparma_polyhedra_library/Linear_Expression;"); 00372 CHECK_RESULT_ASSERT(env, mID); 00373 cached_FMIDs.Linear_Expression_sum_ID = mID; 00374 mID = env->GetMethodID(j_le_class, "times", 00375 "(Lparma_polyhedra_library/Coefficient;)" 00376 "Lparma_polyhedra_library/Linear_Expression;"); 00377 CHECK_RESULT_ASSERT(env, mID); 00378 cached_FMIDs.Linear_Expression_times_ID = mID; 00379 } 00380 00381 JNIEXPORT void JNICALL 00382 Java_parma_1polyhedra_1library_Linear_1Expression_1Coefficient_initIDs 00383 (JNIEnv* env, jclass j_le_coeff_class) { 00384 jfieldID fID; 00385 fID = env->GetFieldID(j_le_coeff_class, "coeff", 00386 "Lparma_polyhedra_library/Coefficient;"); 00387 CHECK_RESULT_ASSERT(env, fID); 00388 cached_FMIDs.Linear_Expression_Coefficient_coeff_ID = fID; 00389 jmethodID mID; 00390 mID = env->GetMethodID(j_le_coeff_class, "<init>", 00391 "(Lparma_polyhedra_library/Coefficient;)V"); 00392 CHECK_RESULT_ASSERT(env, mID); 00393 cached_FMIDs.Linear_Expression_Coefficient_init_ID = mID; 00394 } 00395 00396 JNIEXPORT void JNICALL 00397 Java_parma_1polyhedra_1library_Linear_1Expression_1Difference_initIDs 00398 (JNIEnv* env, jclass j_le_diff_class) { 00399 jfieldID fID; 00400 fID = env->GetFieldID(j_le_diff_class, "lhs", 00401 "Lparma_polyhedra_library/Linear_Expression;"); 00402 CHECK_RESULT_ASSERT(env, fID); 00403 cached_FMIDs.Linear_Expression_Difference_lhs_ID = fID; 00404 fID = env->GetFieldID(j_le_diff_class, "rhs", 00405 "Lparma_polyhedra_library/Linear_Expression;"); 00406 CHECK_RESULT_ASSERT(env, fID); 00407 cached_FMIDs.Linear_Expression_Difference_rhs_ID = fID; 00408 } 00409 00410 JNIEXPORT void JNICALL 00411 Java_parma_1polyhedra_1library_Linear_1Expression_1Sum_initIDs 00412 (JNIEnv* env, jclass j_le_sum_class) { 00413 jfieldID fID; 00414 fID = env->GetFieldID(j_le_sum_class, "lhs", 00415 "Lparma_polyhedra_library/Linear_Expression;"); 00416 CHECK_RESULT_ASSERT(env, fID); 00417 cached_FMIDs.Linear_Expression_Sum_lhs_ID = fID; 00418 fID = env->GetFieldID(j_le_sum_class, "rhs", 00419 "Lparma_polyhedra_library/Linear_Expression;"); 00420 CHECK_RESULT_ASSERT(env, fID); 00421 cached_FMIDs.Linear_Expression_Sum_rhs_ID = fID; 00422 } 00423 00424 JNIEXPORT void JNICALL 00425 Java_parma_1polyhedra_1library_Linear_1Expression_1Times_initIDs 00426 (JNIEnv* env, jclass j_le_times_class) { 00427 jfieldID fID; 00428 fID = env->GetFieldID(j_le_times_class, "coeff", 00429 "Lparma_polyhedra_library/Coefficient;"); 00430 CHECK_RESULT_ASSERT(env, fID); 00431 cached_FMIDs.Linear_Expression_Times_coeff_ID = fID; 00432 fID = env->GetFieldID(j_le_times_class, "lin_expr", 00433 "Lparma_polyhedra_library/Linear_Expression;"); 00434 CHECK_RESULT_ASSERT(env, fID); 00435 cached_FMIDs.Linear_Expression_Times_lin_expr_ID = fID; 00436 jmethodID mID; 00437 mID = env->GetMethodID(j_le_times_class, "<init>", 00438 "(Lparma_polyhedra_library/Coefficient;" 00439 "Lparma_polyhedra_library/Variable;)V"); 00440 CHECK_RESULT_ASSERT(env, mID); 00441 cached_FMIDs.Linear_Expression_Times_init_from_coeff_var_ID = mID; 00442 } 00443 00444 JNIEXPORT void JNICALL 00445 Java_parma_1polyhedra_1library_Linear_1Expression_1Unary_1Minus_initIDs 00446 (JNIEnv* env, jclass j_le_uminus_class) { 00447 jfieldID fID; 00448 fID = env->GetFieldID(j_le_uminus_class, "arg", 00449 "Lparma_polyhedra_library/Linear_Expression;"); 00450 CHECK_RESULT_ASSERT(env, fID); 00451 cached_FMIDs.Linear_Expression_Unary_Minus_arg_ID = fID; 00452 } 00453 00454 JNIEXPORT void JNICALL 00455 Java_parma_1polyhedra_1library_Linear_1Expression_1Variable_initIDs 00456 (JNIEnv* env, jclass j_le_var_class) { 00457 jmethodID mID; 00458 mID = env->GetMethodID(j_le_var_class, "<init>", 00459 "(Lparma_polyhedra_library/Variable;)V"); 00460 CHECK_RESULT_ASSERT(env, mID); 00461 cached_FMIDs.Linear_Expression_Variable_init_ID = mID; 00462 mID = env->GetMethodID(j_le_var_class, "var_id", "()I"); 00463 CHECK_RESULT_ASSERT(env, mID); 00464 cached_FMIDs.Linear_Expression_Variable_var_id_ID = mID; 00465 } 00466 00467 JNIEXPORT jboolean JNICALL 00468 Java_parma_1polyhedra_1library_Linear_1Expression_is_1zero 00469 (JNIEnv* env, jobject j_this) { 00470 try { 00471 return build_cxx_linear_expression(env, j_this).is_zero(); 00472 } 00473 CATCH_ALL 00474 return false; 00475 } 00476 00477 JNIEXPORT jboolean JNICALL 00478 Java_parma_1polyhedra_1library_Linear_1Expression_all_1homogeneous_1terms_1are_1zero 00479 (JNIEnv* env, jobject j_this) { 00480 try { 00481 return build_cxx_linear_expression(env, j_this).all_homogeneous_terms_are_zero(); 00482 } 00483 CATCH_ALL 00484 return false; 00485 } 00486 00487 JNIEXPORT void JNICALL 00488 Java_parma_1polyhedra_1library_MIP_1Problem_1Status_initIDs 00489 (JNIEnv* env, jclass j_mip_status_class) { 00490 jfieldID fID; 00491 fID = env->GetStaticFieldID(j_mip_status_class, "UNFEASIBLE_MIP_PROBLEM", 00492 "Lparma_polyhedra_library/MIP_Problem_Status;"); 00493 CHECK_RESULT_ASSERT(env, fID); 00494 cached_FMIDs.MIP_Problem_Status_UNFEASIBLE_MIP_PROBLEM_ID = fID; 00495 fID = env->GetStaticFieldID(j_mip_status_class, "UNBOUNDED_MIP_PROBLEM", 00496 "Lparma_polyhedra_library/MIP_Problem_Status;"); 00497 CHECK_RESULT_ASSERT(env, fID); 00498 cached_FMIDs.MIP_Problem_Status_UNBOUNDED_MIP_PROBLEM_ID = fID; 00499 fID = env->GetStaticFieldID(j_mip_status_class, "OPTIMIZED_MIP_PROBLEM", 00500 "Lparma_polyhedra_library/MIP_Problem_Status;"); 00501 CHECK_RESULT_ASSERT(env, fID); 00502 cached_FMIDs.MIP_Problem_Status_OPTIMIZED_MIP_PROBLEM_ID = fID; 00503 jmethodID mID; 00504 mID = env->GetMethodID(j_mip_status_class, "ordinal", "()I"); 00505 CHECK_RESULT_ASSERT(env, mID); 00506 cached_FMIDs.MIP_Problem_Status_ordinal_ID = mID; 00507 } 00508 00509 JNIEXPORT void JNICALL 00510 Java_parma_1polyhedra_1library_PIP_1Problem_1Status_initIDs 00511 (JNIEnv* env, jclass j_mip_status_class) { 00512 jfieldID fID; 00513 fID = env->GetStaticFieldID(j_mip_status_class, "UNFEASIBLE_PIP_PROBLEM", 00514 "Lparma_polyhedra_library/PIP_Problem_Status;"); 00515 CHECK_RESULT_ASSERT(env, fID); 00516 cached_FMIDs.PIP_Problem_Status_UNFEASIBLE_PIP_PROBLEM_ID = fID; 00517 fID = env->GetStaticFieldID(j_mip_status_class, "OPTIMIZED_PIP_PROBLEM", 00518 "Lparma_polyhedra_library/PIP_Problem_Status;"); 00519 CHECK_RESULT_ASSERT(env, fID); 00520 cached_FMIDs.PIP_Problem_Status_OPTIMIZED_PIP_PROBLEM_ID = fID; 00521 jmethodID mID; 00522 mID = env->GetMethodID(j_mip_status_class, "ordinal", "()I"); 00523 CHECK_RESULT_ASSERT(env, mID); 00524 cached_FMIDs.PIP_Problem_Status_ordinal_ID = mID; 00525 } 00526 00527 JNIEXPORT void JNICALL 00528 Java_parma_1polyhedra_1library_Optimization_1Mode_initIDs 00529 (JNIEnv* env, jclass j_opt_mode_class) { 00530 jfieldID fID; 00531 fID = env->GetStaticFieldID(j_opt_mode_class, "MAXIMIZATION", 00532 "Lparma_polyhedra_library/Optimization_Mode;"); 00533 CHECK_RESULT_ASSERT(env, fID); 00534 cached_FMIDs.Optimization_Mode_MAXIMIZATION_ID = fID; 00535 fID = env->GetStaticFieldID(j_opt_mode_class, "MINIMIZATION", 00536 "Lparma_polyhedra_library/Optimization_Mode;"); 00537 CHECK_RESULT_ASSERT(env, fID); 00538 cached_FMIDs.Optimization_Mode_MINIMIZATION_ID = fID; 00539 jmethodID mID; 00540 mID = env->GetMethodID(j_opt_mode_class, "ordinal", "()I"); 00541 CHECK_RESULT_ASSERT(env, mID); 00542 cached_FMIDs.Optimization_Mode_ordinal_ID = mID; 00543 } 00544 00545 JNIEXPORT void JNICALL 00546 Java_parma_1polyhedra_1library_Pair_initIDs 00547 (JNIEnv* env, jclass j_pair_class) { 00548 jfieldID fID; 00549 fID = env->GetFieldID(j_pair_class, "first", "Ljava/lang/Object;"); 00550 CHECK_RESULT_ASSERT(env, fID); 00551 cached_FMIDs.Pair_first_ID = fID; 00552 fID = env->GetFieldID(j_pair_class, "second", "Ljava/lang/Object;"); 00553 CHECK_RESULT_ASSERT(env, fID); 00554 cached_FMIDs.Pair_second_ID = fID; 00555 } 00556 00557 JNIEXPORT void JNICALL 00558 Java_parma_1polyhedra_1library_Poly_1Con_1Relation_initIDs 00559 (JNIEnv* env, jclass j_poly_con_relation_class) { 00560 jmethodID mID; 00561 mID = env->GetMethodID(j_poly_con_relation_class, "<init>", "(I)V"); 00562 CHECK_RESULT_ASSERT(env, mID); 00563 cached_FMIDs.Poly_Con_Relation_init_ID = mID; 00564 } 00565 00566 JNIEXPORT void JNICALL 00567 Java_parma_1polyhedra_1library_Poly_1Gen_1Relation_initIDs 00568 (JNIEnv* env, jclass j_poly_gen_relation_class) { 00569 jmethodID mID; 00570 mID = env->GetMethodID(j_poly_gen_relation_class, "<init>", "(I)V"); 00571 CHECK_RESULT_ASSERT(env, mID); 00572 cached_FMIDs.Poly_Gen_Relation_init_ID = mID; 00573 } 00574 00575 JNIEXPORT void JNICALL 00576 Java_parma_1polyhedra_1library_PPL_1Object_initIDs 00577 (JNIEnv* env, jclass j_ppl_object_class) { 00578 jfieldID fID = env->GetFieldID(j_ppl_object_class, "ptr", "J"); 00579 CHECK_RESULT_ASSERT(env, fID); 00580 cached_FMIDs.PPL_Object_ptr_ID = fID; 00581 } 00582 00583 JNIEXPORT void JNICALL 00584 Java_parma_1polyhedra_1library_Relation_1Symbol_initIDs 00585 (JNIEnv* env, jclass j_rel_sym_class) { 00586 jfieldID fID; 00587 fID = env->GetStaticFieldID(j_rel_sym_class, "EQUAL", 00588 "Lparma_polyhedra_library/Relation_Symbol;"); 00589 CHECK_RESULT_ASSERT(env, fID); 00590 cached_FMIDs.Relation_Symbol_EQUAL_ID = fID; 00591 fID = env->GetStaticFieldID(j_rel_sym_class, "GREATER_THAN", 00592 "Lparma_polyhedra_library/Relation_Symbol;"); 00593 CHECK_RESULT_ASSERT(env, fID); 00594 cached_FMIDs.Relation_Symbol_GREATER_THAN_ID = fID; 00595 fID = env->GetStaticFieldID(j_rel_sym_class, "GREATER_OR_EQUAL", 00596 "Lparma_polyhedra_library/Relation_Symbol;"); 00597 CHECK_RESULT_ASSERT(env, fID); 00598 cached_FMIDs.Relation_Symbol_GREATER_OR_EQUAL_ID = fID; 00599 jmethodID mID; 00600 mID = env->GetMethodID(j_rel_sym_class, "ordinal", "()I"); 00601 CHECK_RESULT_ASSERT(env, mID); 00602 cached_FMIDs.Relation_Symbol_ordinal_ID = mID; 00603 } 00604 00605 JNIEXPORT void JNICALL 00606 Java_parma_1polyhedra_1library_Bounded_1Integer_1Type_1Overflow_initIDs 00607 (JNIEnv* env, jclass j_bounded_overflow_class) { 00608 jfieldID fID; 00609 fID = env->GetStaticFieldID(j_bounded_overflow_class, "OVERFLOW_WRAPS", 00610 "Lparma_polyhedra_library/Bounded_Integer_Type_Overflow;"); 00611 CHECK_RESULT_ASSERT(env, fID); 00612 cached_FMIDs.Bounded_Integer_Type_Overflow_OVERFLOW_WRAPS_ID = fID; 00613 fID = env->GetStaticFieldID(j_bounded_overflow_class, "OVERFLOW_UNDEFINED", 00614 "Lparma_polyhedra_library/Bounded_Integer_Type_Overflow;"); 00615 CHECK_RESULT_ASSERT(env, fID); 00616 cached_FMIDs.Bounded_Integer_Type_Overflow_OVERFLOW_UNDEFINED_ID = fID; 00617 fID = env->GetStaticFieldID(j_bounded_overflow_class, "OVERFLOW_IMPOSSIBLE", 00618 "Lparma_polyhedra_library/Bounded_Integer_Type_Overflow;"); 00619 CHECK_RESULT_ASSERT(env, fID); 00620 cached_FMIDs.Bounded_Integer_Type_Overflow_OVERFLOW_IMPOSSIBLE_ID = fID; 00621 jmethodID mID; 00622 mID = env->GetMethodID(j_bounded_overflow_class, "ordinal", "()I"); 00623 CHECK_RESULT_ASSERT(env, mID); 00624 cached_FMIDs.Bounded_Integer_Type_Overflow_ordinal_ID = mID; 00625 } 00626 00627 JNIEXPORT void JNICALL 00628 Java_parma_1polyhedra_1library_Bounded_1Integer_1Type_1Representation_initIDs 00629 (JNIEnv* env, jclass j_bounded_rep_class) { 00630 jfieldID fID; 00631 fID = env->GetStaticFieldID(j_bounded_rep_class, "UNSIGNED", 00632 "Lparma_polyhedra_library/Bounded_Integer_Type_Representation;"); 00633 CHECK_RESULT_ASSERT(env, fID); 00634 cached_FMIDs.Bounded_Integer_Type_Representation_UNSIGNED_ID = fID; 00635 fID = env->GetStaticFieldID(j_bounded_rep_class, "SIGNED_2_COMPLEMENT", 00636 "Lparma_polyhedra_library/Bounded_Integer_Type_Representation;"); 00637 CHECK_RESULT_ASSERT(env, fID); 00638 cached_FMIDs.Bounded_Integer_Type_Representation_SIGNED_2_COMPLEMENT_ID = fID; 00639 jmethodID mID; 00640 mID = env->GetMethodID(j_bounded_rep_class, "ordinal", "()I"); 00641 CHECK_RESULT_ASSERT(env, mID); 00642 cached_FMIDs.Bounded_Integer_Type_Representation_ordinal_ID = mID; 00643 } 00644 00645 JNIEXPORT void JNICALL 00646 Java_parma_1polyhedra_1library_Bounded_1Integer_1Type_1Width_initIDs 00647 (JNIEnv* env, jclass j_bounded_width_class) { 00648 jfieldID fID; 00649 fID = env->GetStaticFieldID(j_bounded_width_class, "BITS_8", 00650 "Lparma_polyhedra_library/Bounded_Integer_Type_Width;"); 00651 CHECK_RESULT_ASSERT(env, fID); 00652 cached_FMIDs.Bounded_Integer_Type_Width_BITS_8_ID = fID; 00653 fID = env->GetStaticFieldID(j_bounded_width_class, "BITS_16", 00654 "Lparma_polyhedra_library/Bounded_Integer_Type_Width;"); 00655 CHECK_RESULT_ASSERT(env, fID); 00656 cached_FMIDs.Bounded_Integer_Type_Width_BITS_16_ID = fID; 00657 fID = env->GetStaticFieldID(j_bounded_width_class, "BITS_32", 00658 "Lparma_polyhedra_library/Bounded_Integer_Type_Width;"); 00659 CHECK_RESULT_ASSERT(env, fID); 00660 cached_FMIDs.Bounded_Integer_Type_Width_BITS_32_ID = fID; 00661 fID = env->GetStaticFieldID(j_bounded_width_class, "BITS_64", 00662 "Lparma_polyhedra_library/Bounded_Integer_Type_Width;"); 00663 CHECK_RESULT_ASSERT(env, fID); 00664 cached_FMIDs.Bounded_Integer_Type_Width_BITS_64_ID = fID; 00665 fID = env->GetStaticFieldID(j_bounded_width_class, "BITS_128", 00666 "Lparma_polyhedra_library/Bounded_Integer_Type_Width;"); 00667 CHECK_RESULT_ASSERT(env, fID); 00668 cached_FMIDs.Bounded_Integer_Type_Width_BITS_128_ID = fID; 00669 jmethodID mID; 00670 mID = env->GetMethodID(j_bounded_width_class, "ordinal", "()I"); 00671 CHECK_RESULT_ASSERT(env, mID); 00672 cached_FMIDs.Bounded_Integer_Type_Width_ordinal_ID = mID; 00673 } 00674 00675 JNIEXPORT void JNICALL 00676 Java_parma_1polyhedra_1library_Variable_initIDs 00677 (JNIEnv* env, jclass j_variable_class) { 00678 jfieldID fID = env->GetFieldID(j_variable_class, "varid", "I"); 00679 CHECK_RESULT_ASSERT(env, fID); 00680 cached_FMIDs.Variable_varid_ID = fID; 00681 jmethodID mID = env->GetMethodID(j_variable_class, "<init>", "(I)V"); 00682 CHECK_RESULT_ASSERT(env, mID); 00683 cached_FMIDs.Variable_init_ID = mID; 00684 } 00685 00686 JNIEXPORT void JNICALL 00687 Java_parma_1polyhedra_1library_Variables_1Set_initIDs 00688 (JNIEnv* env, jclass j_vset_class) { 00689 jmethodID mID; 00690 mID = env->GetMethodID(j_vset_class, "<init>", "()V"); 00691 CHECK_RESULT_ASSERT(env, mID); 00692 cached_FMIDs.Variables_Set_init_ID = mID; 00693 mID = env->GetMethodID(j_vset_class, "add", "(Ljava/lang/Object;)Z"); 00694 CHECK_RESULT_ASSERT(env, mID); 00695 cached_FMIDs.Variables_Set_add_ID = mID; 00696 mID = env->GetMethodID(j_vset_class, "iterator", "()Ljava/util/Iterator;"); 00697 CHECK_RESULT_ASSERT(env, mID); 00698 cached_FMIDs.Variables_Set_iterator_ID = mID; 00699 // Iterator on Variables_Set. 00700 jclass j_vset_iter_class = env->FindClass("java/util/Iterator"); 00701 CHECK_RESULT_ASSERT(env, j_vset_iter_class); 00702 mID = env->GetMethodID(j_vset_iter_class, "hasNext", "()Z"); 00703 CHECK_RESULT_ASSERT(env, mID); 00704 cached_FMIDs.Variables_Set_Iterator_has_next_ID = mID; 00705 mID = env->GetMethodID(j_vset_iter_class, "next", "()Ljava/lang/Object;"); 00706 CHECK_RESULT_ASSERT(env, mID); 00707 cached_FMIDs.Variables_Set_Iterator_next_ID = mID; 00708 } 00709 00710 00711 JNIEXPORT jint JNICALL 00712 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_version_1major 00713 (JNIEnv *, jclass) { 00714 return version_major(); 00715 } 00716 00717 JNIEXPORT jint JNICALL 00718 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_version_1minor 00719 (JNIEnv *, jclass) { 00720 return version_minor(); 00721 } 00722 00723 JNIEXPORT jint JNICALL 00724 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_version_1revision 00725 (JNIEnv *, jclass) { 00726 return version_revision(); 00727 } 00728 00729 JNIEXPORT jint JNICALL 00730 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_version_1beta 00731 (JNIEnv *, jclass) { 00732 return version_beta(); 00733 } 00734 00735 JNIEXPORT jstring JNICALL 00736 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_version 00737 (JNIEnv* env, jclass) { 00738 #if defined(__sun) || defined(__sun__) 00739 00740 // Some versions of Solaris declare a version() function that causes 00741 // the following function call to be ambiguous. 00742 return env->NewStringUTF(Parma_Polyhedra_Library::version()); 00743 00744 #else // !(defined(__sun) || defined(__sun__)) 00745 00746 return env->NewStringUTF(version()); 00747 00748 #endif // !(defined(__sun) || defined(__sun__)) 00749 } 00750 00751 JNIEXPORT jstring JNICALL 00752 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_banner 00753 (JNIEnv* env, jclass) { 00754 return env->NewStringUTF(banner()); 00755 } 00756 00757 JNIEXPORT void JNICALL 00758 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_set_1rounding_1for_1PPL 00759 (JNIEnv* env, jclass) { 00760 try { 00761 set_rounding_for_PPL(); 00762 } 00763 CATCH_ALL; 00764 } 00765 00766 JNIEXPORT void JNICALL 00767 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_restore_1pre_1PPL_1rounding 00768 (JNIEnv* env, jclass) { 00769 try { 00770 restore_pre_PPL_rounding(); 00771 } 00772 CATCH_ALL; 00773 } 00774 00775 JNIEXPORT jint JNICALL 00776 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_irrational_1precision 00777 (JNIEnv* env , jclass) { 00778 try { 00779 return irrational_precision(); 00780 } 00781 CATCH_ALL; 00782 return 0; 00783 } 00784 00785 JNIEXPORT void JNICALL 00786 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_set_1irrational_1precision 00787 (JNIEnv* env , jclass, jint p) { 00788 try { 00789 unsigned cxx_p = jtype_to_unsigned<unsigned>(p); 00790 set_irrational_precision(cxx_p); 00791 } 00792 CATCH_ALL; 00793 } 00794 00795 JNIEXPORT void JNICALL 00796 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_set_1timeout 00797 (JNIEnv* env, jclass, jint csecs) { 00798 try { 00799 // In case a timeout was already set. 00800 reset_timeout(); 00801 assert(csecs > 0); 00802 unsigned cxx_csecs = jtype_to_unsigned<unsigned>(csecs); 00803 assert(cxx_csecs > 0); 00804 static timeout_exception e; 00805 using Parma_Polyhedra_Library::Watchdog; 00806 p_timeout_object 00807 = new Watchdog(cxx_csecs, abandon_expensive_computations, e); 00808 } 00809 CATCH_ALL; 00810 } 00811 00812 JNIEXPORT void JNICALL 00813 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_reset_1timeout 00814 (JNIEnv* env, jclass) { 00815 try { 00816 reset_timeout(); 00817 } 00818 CATCH_ALL; 00819 } 00820 00821 JNIEXPORT void JNICALL 00822 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_set_1deterministic_1timeout 00823 (JNIEnv* env, jclass, jint unscaled_weight, jint scale) { 00824 try { 00825 // In case a timeout was already set. 00826 reset_deterministic_timeout(); 00827 // Note: let `unscaled_weight == 0' result in an exception. 00828 assert(unscaled_weight >= 0 && scale >= 0); 00829 unsigned long cxx_unscaled_weight 00830 = jtype_to_unsigned<unsigned long>(unscaled_weight); 00831 unsigned cxx_scale = jtype_to_unsigned<unsigned>(scale); 00832 static deterministic_timeout_exception e; 00833 typedef Parma_Polyhedra_Library::Weightwatch_Traits Traits; 00834 p_deterministic_timeout_object 00835 = new Weightwatch(Traits::compute_delta(cxx_unscaled_weight, cxx_scale), 00836 abandon_expensive_computations, e); 00837 } 00838 CATCH_ALL; 00839 } 00840 00841 JNIEXPORT void JNICALL 00842 Java_parma_1polyhedra_1library_Parma_1Polyhedra_1Library_reset_1deterministic_1timeout 00843 (JNIEnv* env, jclass) { 00844 try { 00845 reset_deterministic_timeout(); 00846 } 00847 CATCH_ALL; 00848 } 00849 00850 JNIEXPORT jlong JNICALL 00851 Java_parma_1polyhedra_1library_MIP_1Problem_max_1space_1dimension 00852 (JNIEnv* env , jobject j_this_mip_problem) { 00853 try { 00854 MIP_Problem* mip 00855 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00856 return mip->max_space_dimension(); 00857 } 00858 CATCH_ALL; 00859 return 0; 00860 } 00861 00862 JNIEXPORT jlong JNICALL 00863 Java_parma_1polyhedra_1library_MIP_1Problem_space_1dimension 00864 (JNIEnv* env , jobject j_this_mip_problem) { 00865 try { 00866 MIP_Problem* mip 00867 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00868 return mip->space_dimension(); 00869 } 00870 CATCH_ALL; 00871 return 0; 00872 } 00873 00874 JNIEXPORT jobject JNICALL 00875 Java_parma_1polyhedra_1library_MIP_1Problem_integer_1space_1dimensions 00876 (JNIEnv* env , jobject j_this_mip_problem) { 00877 try { 00878 MIP_Problem* mip 00879 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00880 return build_java_variables_set(env, mip->integer_space_dimensions()); 00881 } 00882 CATCH_ALL; 00883 jobject null = 0; 00884 return null; 00885 } 00886 00887 JNIEXPORT jobject JNICALL 00888 Java_parma_1polyhedra_1library_MIP_1Problem_objective_1function 00889 (JNIEnv* env , jobject j_this_mip_problem) { 00890 try { 00891 MIP_Problem* mip 00892 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00893 PPL_DIRTY_TEMP_COEFFICIENT(inhomogeneous_term); 00894 inhomogeneous_term = mip->objective_function().inhomogeneous_term(); 00895 jobject j_coeff_inhomogeneous_term 00896 = build_java_coeff(env, inhomogeneous_term); 00897 jobject j_le_coeff 00898 = env->NewObject(cached_classes.Linear_Expression_Coefficient, 00899 cached_FMIDs.Linear_Expression_Coefficient_init_ID, 00900 j_coeff_inhomogeneous_term); 00901 CHECK_RESULT_RETURN(env, j_le_coeff, 0); 00902 00903 jobject j_le = build_linear_expression(env, mip->objective_function()); 00904 return env->CallObjectMethod(j_le, 00905 cached_FMIDs.Linear_Expression_sum_ID, 00906 j_le_coeff); 00907 } 00908 CATCH_ALL; 00909 jobject null = 0; 00910 return null; 00911 } 00912 00913 JNIEXPORT jobject JNICALL 00914 Java_parma_1polyhedra_1library_MIP_1Problem_optimization_1mode 00915 (JNIEnv* env , jobject j_this_mip_problem) { 00916 try { 00917 MIP_Problem* mip 00918 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00919 return build_java_optimization_mode(env, mip->optimization_mode()); 00920 } 00921 CATCH_ALL; 00922 jobject null = 0; 00923 return null; 00924 } 00925 00926 JNIEXPORT jobject JNICALL 00927 Java_parma_1polyhedra_1library_MIP_1Problem_get_1control_1parameter 00928 (JNIEnv* env , jobject j_this_mip_problem, 00929 jobject j_cpn) { 00930 try { 00931 MIP_Problem* mip 00932 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00933 MIP_Problem::Control_Parameter_Name cpn 00934 = build_cxx_control_parameter_name(env, j_cpn); 00935 return 00936 build_java_control_parameter_value(env, 00937 mip->get_control_parameter(cpn)); 00938 } 00939 CATCH_ALL; 00940 jobject null = 0; 00941 return null; 00942 } 00943 00944 JNIEXPORT void JNICALL 00945 Java_parma_1polyhedra_1library_MIP_1Problem_set_1control_1parameter 00946 (JNIEnv* env , jobject j_this_mip_problem, 00947 jobject j_cpv) { 00948 try { 00949 MIP_Problem* mip 00950 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00951 MIP_Problem::Control_Parameter_Value cpv 00952 = build_cxx_control_parameter_value(env, j_cpv); 00953 mip->set_control_parameter(cpv); 00954 } 00955 CATCH_ALL; 00956 } 00957 00958 JNIEXPORT jobject JNICALL 00959 Java_parma_1polyhedra_1library_MIP_1Problem_constraints 00960 (JNIEnv* env, jobject j_this_mip_problem) { 00961 try { 00962 jobject j_cs = env->NewObject(cached_classes.Constraint_System, 00963 cached_FMIDs.Constraint_System_init_ID); 00964 CHECK_RESULT_RETURN(env, j_cs, 0); 00965 00966 MIP_Problem* mip 00967 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00968 for (MIP_Problem::const_iterator cs_it = mip->constraints_begin(), 00969 cs_end = mip->constraints_end(); cs_it != cs_end; ++cs_it) { 00970 jobject j_constraint = build_java_constraint(env, *cs_it); 00971 env->CallBooleanMethod(j_cs, 00972 cached_FMIDs.Constraint_System_add_ID, 00973 j_constraint); 00974 CHECK_EXCEPTION_RETURN(env, 0); 00975 } 00976 return j_cs; 00977 } 00978 CATCH_ALL; 00979 jobject null = 0; 00980 return null; 00981 } 00982 00983 JNIEXPORT void JNICALL 00984 Java_parma_1polyhedra_1library_MIP_1Problem_clear 00985 (JNIEnv* env , jobject j_this_mip_problem) { 00986 try { 00987 MIP_Problem* mip 00988 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 00989 mip->clear(); 00990 } 00991 CATCH_ALL; 00992 } 00993 00994 JNIEXPORT void JNICALL 00995 Java_parma_1polyhedra_1library_MIP_1Problem_add_1space_1dimensions_1and_1embed 00996 (JNIEnv* env , jobject j_this_mip_problem, jlong j_dim) { 00997 try { 00998 MIP_Problem* mip 00999 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01000 dimension_type ppl_dim = jtype_to_unsigned<dimension_type>(j_dim); 01001 mip->add_space_dimensions_and_embed(ppl_dim); 01002 } 01003 CATCH_ALL; 01004 } 01005 01006 JNIEXPORT void JNICALL 01007 Java_parma_1polyhedra_1library_MIP_1Problem_add_1to_1integer_1space_1dimensions 01008 (JNIEnv* env , jobject j_this_mip_problem, jobject j_vset) { 01009 try { 01010 MIP_Problem* mip 01011 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01012 Variables_Set v_set = build_cxx_variables_set(env, j_vset); 01013 mip->add_to_integer_space_dimensions(v_set); 01014 } 01015 CATCH_ALL; 01016 } 01017 01018 JNIEXPORT void JNICALL 01019 Java_parma_1polyhedra_1library_MIP_1Problem_add_1constraint 01020 (JNIEnv* env , jobject j_this_mip_problem, jobject j_c) { 01021 try { 01022 MIP_Problem* mip 01023 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01024 Constraint c = build_cxx_constraint(env, j_c); 01025 mip->add_constraint(c); 01026 } 01027 CATCH_ALL; 01028 } 01029 01030 JNIEXPORT void JNICALL 01031 Java_parma_1polyhedra_1library_MIP_1Problem_add_1constraints 01032 (JNIEnv* env , jobject j_this_mip_problem, jobject j_cs) { 01033 try { 01034 MIP_Problem* mip 01035 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01036 Constraint_System cs = build_cxx_constraint_system(env, j_cs); 01037 mip->add_constraints(cs); 01038 } 01039 CATCH_ALL; 01040 } 01041 01042 JNIEXPORT void JNICALL 01043 Java_parma_1polyhedra_1library_MIP_1Problem_set_1objective_1function 01044 (JNIEnv* env , jobject j_this_mip_problem, jobject j_le) { 01045 try { 01046 MIP_Problem* mip 01047 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01048 Linear_Expression le = build_cxx_linear_expression(env, j_le); 01049 mip->set_objective_function(le); 01050 } 01051 CATCH_ALL; 01052 } 01053 01054 JNIEXPORT void JNICALL 01055 Java_parma_1polyhedra_1library_MIP_1Problem_set_1optimization_1mode 01056 (JNIEnv* env , jobject j_this_mip_problem, jobject j_opt_mode) { 01057 try { 01058 MIP_Problem* mip 01059 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01060 Optimization_Mode opt_mode = build_cxx_optimization_mode(env, j_opt_mode); 01061 mip->set_optimization_mode(opt_mode); 01062 } 01063 CATCH_ALL; 01064 } 01065 01066 JNIEXPORT jboolean JNICALL 01067 Java_parma_1polyhedra_1library_MIP_1Problem_is_1satisfiable 01068 (JNIEnv* env , jobject j_this_mip_problem) { 01069 try { 01070 MIP_Problem* mip 01071 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01072 return mip->is_satisfiable(); 01073 } 01074 CATCH_ALL; 01075 return false; 01076 } 01077 01078 JNIEXPORT jobject JNICALL Java_parma_1polyhedra_1library_MIP_1Problem_solve 01079 (JNIEnv* env , jobject j_this_mip_problem) { 01080 try { 01081 MIP_Problem* mip 01082 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01083 return build_java_mip_status(env, mip->solve()); 01084 } 01085 CATCH_ALL; 01086 jobject null = 0; 01087 return null; 01088 } 01089 01090 JNIEXPORT void JNICALL 01091 Java_parma_1polyhedra_1library_MIP_1Problem_evaluate_1objective_1function 01092 (JNIEnv* env, jobject j_this_mip_problem, jobject j_gen, 01093 jobject j_coeff_num, jobject j_coeff_den) { 01094 try { 01095 MIP_Problem* mip 01096 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01097 Generator g = build_cxx_generator(env, j_gen); 01098 PPL_DIRTY_TEMP_COEFFICIENT(num); 01099 PPL_DIRTY_TEMP_COEFFICIENT(den); 01100 mip->evaluate_objective_function(g, num, den); 01101 set_coefficient(env, j_coeff_num, build_java_coeff(env, num)); 01102 set_coefficient(env, j_coeff_den, build_java_coeff(env, den)); 01103 } 01104 CATCH_ALL; 01105 } 01106 01107 JNIEXPORT jobject JNICALL 01108 Java_parma_1polyhedra_1library_MIP_1Problem_feasible_1point 01109 (JNIEnv* env , jobject j_this_mip_problem) { 01110 try { 01111 MIP_Problem* mip 01112 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01113 Generator g = mip->feasible_point(); 01114 return build_java_generator(env, g); 01115 } 01116 CATCH_ALL; 01117 jobject null = 0; 01118 return null; 01119 } 01120 01121 JNIEXPORT jobject JNICALL 01122 Java_parma_1polyhedra_1library_MIP_1Problem_optimizing_1point 01123 (JNIEnv* env , jobject j_this_mip_problem) { 01124 try { 01125 MIP_Problem* mip 01126 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01127 Generator g = mip->optimizing_point(); 01128 return build_java_generator(env, g); 01129 } 01130 CATCH_ALL; 01131 jobject null = 0; 01132 return null; 01133 } 01134 01135 JNIEXPORT void JNICALL 01136 Java_parma_1polyhedra_1library_MIP_1Problem_optimal_1value 01137 (JNIEnv* env, jobject j_this_mip_problem, 01138 jobject j_coeff_num, jobject j_coeff_den) { 01139 try { 01140 PPL_DIRTY_TEMP_COEFFICIENT(coeff_num); 01141 PPL_DIRTY_TEMP_COEFFICIENT(coeff_den); 01142 MIP_Problem* mip 01143 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01144 mip->optimal_value(coeff_num, coeff_den); 01145 set_coefficient(env, j_coeff_num, build_java_coeff(env, coeff_num)); 01146 set_coefficient(env, j_coeff_den, build_java_coeff(env, coeff_den)); 01147 } 01148 CATCH_ALL; 01149 } 01150 01151 JNIEXPORT jboolean JNICALL 01152 Java_parma_1polyhedra_1library_MIP_1Problem_OK 01153 (JNIEnv* env , jobject j_this_mip_problem) { 01154 try { 01155 MIP_Problem* mip 01156 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01157 return mip->OK(); 01158 } 01159 CATCH_ALL; 01160 return false; 01161 } 01162 01163 JNIEXPORT void JNICALL 01164 Java_parma_1polyhedra_1library_MIP_1Problem_build_1cpp_1object__J 01165 (JNIEnv* env, jobject j_this_mip_problem, jlong j_dim) { 01166 try { 01167 dimension_type ppl_dim = jtype_to_unsigned<dimension_type>(j_dim); 01168 MIP_Problem* mip_ptr = new MIP_Problem(ppl_dim); 01169 set_ptr(env, j_this_mip_problem, mip_ptr); 01170 } 01171 CATCH_ALL; 01172 } 01173 01174 JNIEXPORT void JNICALL 01175 Java_parma_1polyhedra_1library_MIP_1Problem_build_1cpp_1object__JLparma_1polyhedra_1library_Constraint_1System_2Lparma_1polyhedra_1library_Linear_1Expression_2Lparma_1polyhedra_1library_Optimization_1Mode_2 01176 (JNIEnv* env , jobject j_this_mip_problem, jlong j_dim, jobject j_cs, 01177 jobject j_le, jobject j_opt_mode) { 01178 try { 01179 dimension_type ppl_dim = jtype_to_unsigned<dimension_type>(j_dim); 01180 Constraint_System cs = build_cxx_constraint_system(env, j_cs); 01181 Linear_Expression le = build_cxx_linear_expression(env, j_le); 01182 Optimization_Mode opt_mode = build_cxx_optimization_mode(env, j_opt_mode); 01183 MIP_Problem* mip_ptr = new MIP_Problem(ppl_dim, cs, le, opt_mode); 01184 set_ptr(env, j_this_mip_problem, mip_ptr); 01185 } 01186 CATCH_ALL; 01187 } 01188 01189 JNIEXPORT void JNICALL 01190 Java_parma_1polyhedra_1library_MIP_1Problem_build_1cpp_1object__Lparma_1polyhedra_1library_MIP_1Problem_2 01191 (JNIEnv* env, jobject j_this, jobject j_y) 01192 { 01193 MIP_Problem* y_ptr = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_y)); 01194 MIP_Problem* this_ptr = new MIP_Problem(*y_ptr); 01195 set_ptr(env, j_this, this_ptr); 01196 } 01197 01198 JNIEXPORT void JNICALL 01199 Java_parma_1polyhedra_1library_MIP_1Problem_free 01200 (JNIEnv* env, jobject j_this) { 01201 MIP_Problem* mip = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this)); 01202 if (!is_java_marked(env, j_this)) { 01203 delete mip; 01204 void* null_ptr = 0; 01205 set_ptr(env, j_this, null_ptr); 01206 } 01207 } 01208 01209 JNIEXPORT void JNICALL 01210 Java_parma_1polyhedra_1library_MIP_1Problem_finalize 01211 (JNIEnv* env, jobject j_this) { 01212 MIP_Problem* mip = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this)); 01213 if (!is_java_marked(env, j_this)) 01214 delete mip; 01215 } 01216 01217 JNIEXPORT jlong JNICALL 01218 Java_parma_1polyhedra_1library_MIP_1Problem_total_1memory_1in_1bytes 01219 (JNIEnv* env , jobject j_this_mip_problem) { 01220 try { 01221 MIP_Problem* mip 01222 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this_mip_problem)); 01223 return mip->total_memory_in_bytes(); 01224 } 01225 CATCH_ALL; 01226 return 0; 01227 } 01228 01229 JNIEXPORT jstring JNICALL 01230 Java_parma_1polyhedra_1library_MIP_1Problem_toString 01231 (JNIEnv* env, jobject j_this) { 01232 MIP_Problem* this_ptr 01233 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this)); 01234 using namespace Parma_Polyhedra_Library::IO_Operators; 01235 std::ostringstream s; 01236 s << *this_ptr; 01237 return env->NewStringUTF(s.str().c_str()); 01238 } 01239 01240 JNIEXPORT jstring JNICALL 01241 Java_parma_1polyhedra_1library_MIP_1Problem_ascii_1dump 01242 (JNIEnv* env, jobject j_this) { 01243 try { 01244 MIP_Problem* this_ptr 01245 = reinterpret_cast<MIP_Problem*>(get_ptr(env, j_this)); 01246 std::ostringstream s; 01247 this_ptr->ascii_dump(s); 01248 return env->NewStringUTF(s.str().c_str()); 01249 } 01250 CATCH_ALL; 01251 return 0; 01252 } 01253 01254 JNIEXPORT jstring JNICALL 01255 Java_parma_1polyhedra_1library_Linear_1Expression_toString 01256 (JNIEnv* env, jobject j_this) { 01257 using namespace Parma_Polyhedra_Library::IO_Operators; 01258 Linear_Expression ppl_le = build_cxx_linear_expression(env, j_this); 01259 std::ostringstream s; 01260 s << ppl_le; 01261 return env->NewStringUTF(s.str().c_str()); 01262 } 01263 01264 JNIEXPORT jstring JNICALL 01265 Java_parma_1polyhedra_1library_Linear_1Expression_ascii_1dump 01266 (JNIEnv* env, jobject j_this) { 01267 try { 01268 std::ostringstream s; 01269 Linear_Expression le = build_cxx_linear_expression(env, j_this); 01270 le.ascii_dump(s); 01271 return env->NewStringUTF(s.str().c_str()); 01272 } 01273 CATCH_ALL; 01274 return 0; 01275 } 01276 01277 JNIEXPORT jstring JNICALL 01278 Java_parma_1polyhedra_1library_Generator_toString 01279 (JNIEnv* env, jobject g) { 01280 using namespace Parma_Polyhedra_Library::IO_Operators; 01281 std::ostringstream s; 01282 Generator ppl_g = build_cxx_generator(env, g); 01283 s << ppl_g; 01284 return env->NewStringUTF(s.str().c_str()); 01285 } 01286 01287 JNIEXPORT jstring JNICALL 01288 Java_parma_1polyhedra_1library_Generator_ascii_1dump 01289 (JNIEnv* env, jobject j_this) { 01290 try { 01291 std::ostringstream s; 01292 Generator g = build_cxx_generator(env, j_this); 01293 g.ascii_dump(s); 01294 return env->NewStringUTF(s.str().c_str()); 01295 } 01296 CATCH_ALL; 01297 return 0; 01298 } 01299 01300 JNIEXPORT jstring JNICALL 01301 Java_parma_1polyhedra_1library_Constraint_toString 01302 (JNIEnv* env, jobject c) { 01303 using namespace Parma_Polyhedra_Library::IO_Operators; 01304 std::ostringstream s; 01305 Constraint ppl_c = build_cxx_constraint(env, c); 01306 s << ppl_c; 01307 return env->NewStringUTF(s.str().c_str()); 01308 } 01309 01310 JNIEXPORT jstring JNICALL 01311 Java_parma_1polyhedra_1library_Constraint_ascii_1dump 01312 (JNIEnv* env, jobject j_this) { 01313 try { 01314 std::ostringstream s; 01315 Constraint c = build_cxx_constraint(env, j_this); 01316 c.ascii_dump(s); 01317 return env->NewStringUTF(s.str().c_str()); 01318 } 01319 CATCH_ALL; 01320 return 0; 01321 } 01322 01323 JNIEXPORT jstring JNICALL 01324 Java_parma_1polyhedra_1library_Grid_1Generator_toString 01325 (JNIEnv* env, jobject g) { 01326 using namespace Parma_Polyhedra_Library::IO_Operators; 01327 std::ostringstream s; 01328 Grid_Generator ppl_g = build_cxx_grid_generator(env, g); 01329 s << ppl_g; 01330 return env->NewStringUTF(s.str().c_str()); 01331 } 01332 01333 JNIEXPORT jstring JNICALL 01334 Java_parma_1polyhedra_1library_Grid_1Generator_ascii_1dump 01335 (JNIEnv* env, jobject j_this) { 01336 try { 01337 std::ostringstream s; 01338 Grid_Generator g = build_cxx_grid_generator(env, j_this); 01339 g.ascii_dump(s); 01340 return env->NewStringUTF(s.str().c_str()); 01341 } 01342 CATCH_ALL; 01343 return 0; 01344 } 01345 01346 JNIEXPORT jstring JNICALL 01347 Java_parma_1polyhedra_1library_Congruence_toString 01348 (JNIEnv* env, jobject g) { 01349 using namespace Parma_Polyhedra_Library::IO_Operators; 01350 std::ostringstream s; 01351 Congruence ppl_g = build_cxx_congruence(env, g); 01352 s << ppl_g; 01353 return env->NewStringUTF(s.str().c_str()); 01354 } 01355 01356 JNIEXPORT jstring JNICALL 01357 Java_parma_1polyhedra_1library_Congruence_ascii_1dump 01358 (JNIEnv* env, jobject j_this) { 01359 try { 01360 std::ostringstream s; 01361 Congruence c = build_cxx_congruence(env, j_this); 01362 c.ascii_dump(s); 01363 return env->NewStringUTF(s.str().c_str()); 01364 } 01365 CATCH_ALL; 01366 return 0; 01367 } 01368 01369 JNIEXPORT jstring JNICALL 01370 Java_parma_1polyhedra_1library_Grid_1Generator_1System_toString 01371 (JNIEnv* env, jobject ggs) { 01372 using namespace Parma_Polyhedra_Library::IO_Operators; 01373 std::ostringstream s; 01374 Grid_Generator_System ppl_ggs = build_cxx_grid_generator_system(env, ggs); 01375 s << ppl_ggs; 01376 return env->NewStringUTF(s.str().c_str()); 01377 } 01378 01379 JNIEXPORT jstring JNICALL 01380 Java_parma_1polyhedra_1library_Grid_1Generator_1System_ascii_1dump 01381 (JNIEnv* env, jobject j_this) { 01382 try { 01383 std::ostringstream s; 01384 Grid_Generator_System gs = build_cxx_grid_generator_system(env, j_this); 01385 gs.ascii_dump(s); 01386 return env->NewStringUTF(s.str().c_str()); 01387 } 01388 CATCH_ALL; 01389 return 0; 01390 } 01391 01392 JNIEXPORT jstring JNICALL 01393 Java_parma_1polyhedra_1library_Generator_1System_toString 01394 (JNIEnv* env, jobject gs) { 01395 using namespace Parma_Polyhedra_Library::IO_Operators; 01396 std::ostringstream s; 01397 Generator_System ppl_gs = build_cxx_generator_system(env, gs); 01398 s << ppl_gs; 01399 return env->NewStringUTF(s.str().c_str()); 01400 } 01401 01402 JNIEXPORT jstring JNICALL 01403 Java_parma_1polyhedra_1library_Generator_1System_ascii_1dump 01404 (JNIEnv* env, jobject j_this) { 01405 try { 01406 std::ostringstream s; 01407 Generator_System gs = build_cxx_generator_system(env, j_this); 01408 gs.ascii_dump(s); 01409 return env->NewStringUTF(s.str().c_str()); 01410 } 01411 CATCH_ALL; 01412 return 0; 01413 } 01414 01415 JNIEXPORT jstring JNICALL 01416 Java_parma_1polyhedra_1library_Constraint_1System_toString 01417 (JNIEnv* env, jobject cs) { 01418 using namespace Parma_Polyhedra_Library::IO_Operators; 01419 std::ostringstream s; 01420 Constraint_System ppl_cs = build_cxx_constraint_system(env, cs); 01421 s << ppl_cs; 01422 return env->NewStringUTF(s.str().c_str()); 01423 } 01424 01425 01426 JNIEXPORT jstring JNICALL 01427 Java_parma_1polyhedra_1library_Constraint_1System_ascii_1dump 01428 (JNIEnv* env, jobject j_this) { 01429 try { 01430 std::ostringstream s; 01431 Constraint_System cs = build_cxx_constraint_system(env, j_this); 01432 cs.ascii_dump(s); 01433 return env->NewStringUTF(s.str().c_str()); 01434 } 01435 CATCH_ALL; 01436 return 0; 01437 } 01438 01439 JNIEXPORT jstring JNICALL 01440 Java_parma_1polyhedra_1library_Congruence_1System_toString 01441 (JNIEnv* env, jobject cgs) { 01442 using namespace Parma_Polyhedra_Library::IO_Operators; 01443 std::ostringstream s; 01444 Congruence_System ppl_cgs = build_cxx_congruence_system(env, cgs); 01445 s << ppl_cgs; 01446 return env->NewStringUTF(s.str().c_str()); 01447 } 01448 01449 JNIEXPORT jstring JNICALL 01450 Java_parma_1polyhedra_1library_Congruence_1System_ascii_1dump 01451 (JNIEnv* env, jobject j_this) { 01452 try { 01453 std::ostringstream s; 01454 Congruence_System cs = build_cxx_congruence_system(env, j_this); 01455 cs.ascii_dump(s); 01456 return env->NewStringUTF(s.str().c_str()); 01457 } 01458 CATCH_ALL; 01459 return 0; 01460 } 01461 01462 JNIEXPORT jstring JNICALL 01463 Java_parma_1polyhedra_1library_IO_wrap_1string 01464 (JNIEnv* env, jclass, jstring str, jint indent_depth, 01465 jint preferred_first_line_length, jint preferred_line_length) { 01466 try { 01467 unsigned ind = jtype_to_unsigned<unsigned int>(indent_depth); 01468 unsigned pfll = jtype_to_unsigned<unsigned int> 01469 (preferred_first_line_length); 01470 unsigned pll = jtype_to_unsigned<unsigned int>(preferred_line_length); 01471 const char* chars = env->GetStringUTFChars(str, 0); 01472 CHECK_RESULT_RETURN(env, chars, 0); 01473 using namespace Parma_Polyhedra_Library::IO_Operators; 01474 std::string s = wrap_string(chars, ind, pfll, pll); 01475 env->ReleaseStringUTFChars(str, chars); 01476 return env->NewStringUTF(s.c_str()); 01477 } 01478 CATCH_ALL; 01479 return 0; 01480 } 01481 01482 JNIEXPORT void JNICALL 01483 Java_parma_1polyhedra_1library_PIP_1Problem_build_1cpp_1object__J 01484 (JNIEnv* env, jobject j_this_pip_problem, jlong j_dim) { 01485 try { 01486 dimension_type ppl_dim = jtype_to_unsigned<dimension_type>(j_dim); 01487 PIP_Problem* pip_ptr = new PIP_Problem(ppl_dim); 01488 set_ptr(env, j_this_pip_problem, pip_ptr); 01489 } 01490 CATCH_ALL; 01491 } 01492 01493 JNIEXPORT void JNICALL 01494 Java_parma_1polyhedra_1library_PIP_1Problem_build_1cpp_1object__JLparma_1polyhedra_1library_Constraint_1System_2Lparma_1polyhedra_1library_Variables_1Set_2 01495 (JNIEnv* env , jobject j_this_pip_problem, jlong j_dim, 01496 jobject j_cs, jobject j_vars) { 01497 try { 01498 dimension_type p_dim = jtype_to_unsigned<dimension_type>(j_dim); 01499 Constraint_System p_cs = build_cxx_constraint_system(env, j_cs); 01500 Variables_Set p_vars = build_cxx_variables_set(env, j_vars); 01501 PIP_Problem* pip_ptr = new PIP_Problem(p_dim, p_cs.begin(), 01502 p_cs.end(), p_vars); 01503 set_ptr(env, j_this_pip_problem, pip_ptr); 01504 } 01505 CATCH_ALL; 01506 } 01507 01508 JNIEXPORT void JNICALL 01509 Java_parma_1polyhedra_1library_PIP_1Problem_build_1cpp_1object__Lparma_1polyhedra_1library_PIP_1Problem_2 01510 (JNIEnv* env, jobject j_this, jobject j_y) 01511 { 01512 PIP_Problem* y_ptr = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_y)); 01513 PIP_Problem* this_ptr = new PIP_Problem(*y_ptr); 01514 set_ptr(env, j_this, this_ptr); 01515 } 01516 01517 JNIEXPORT jboolean JNICALL 01518 Java_parma_1polyhedra_1library_PIP_1Problem_OK 01519 (JNIEnv* env , jobject j_this_pip_problem) { 01520 try { 01521 PIP_Problem* pip 01522 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01523 return pip->OK(); 01524 } 01525 CATCH_ALL; 01526 return false; 01527 } 01528 01529 JNIEXPORT jlong JNICALL 01530 Java_parma_1polyhedra_1library_PIP_1Problem_total_1memory_1in_1bytes 01531 (JNIEnv* env , jobject j_this_pip_problem) { 01532 try { 01533 PIP_Problem* pip 01534 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01535 return pip->total_memory_in_bytes(); 01536 } 01537 CATCH_ALL; 01538 return 0; 01539 } 01540 01541 JNIEXPORT jlong JNICALL 01542 Java_parma_1polyhedra_1library_PIP_1Problem_external_1memory_1in_1bytes 01543 (JNIEnv* env , jobject j_this_pip_problem) { 01544 try { 01545 PIP_Problem* pip 01546 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01547 return pip->external_memory_in_bytes(); 01548 } 01549 CATCH_ALL; 01550 return 0; 01551 } 01552 01553 JNIEXPORT jstring JNICALL 01554 Java_parma_1polyhedra_1library_PIP_1Problem_toString 01555 (JNIEnv* env, jobject j_this) { 01556 PIP_Problem* this_ptr 01557 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this)); 01558 using namespace Parma_Polyhedra_Library::IO_Operators; 01559 std::ostringstream s; 01560 s << *this_ptr; 01561 return env->NewStringUTF(s.str().c_str()); 01562 } 01563 01564 JNIEXPORT jstring JNICALL 01565 Java_parma_1polyhedra_1library_PIP_1Problem_ascii_1dump 01566 (JNIEnv* env, jobject j_this) { 01567 try { 01568 PIP_Problem* this_ptr 01569 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this)); 01570 std::ostringstream s; 01571 this_ptr->ascii_dump(s); 01572 return env->NewStringUTF(s.str().c_str()); 01573 } 01574 CATCH_ALL; 01575 return 0; 01576 } 01577 01578 JNIEXPORT void JNICALL 01579 Java_parma_1polyhedra_1library_PIP_1Problem_free 01580 (JNIEnv* env, jobject j_this) { 01581 PIP_Problem* pip = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this)); 01582 if (!is_java_marked(env, j_this)) { 01583 delete pip; 01584 void* null_ptr = 0; 01585 set_ptr(env, j_this, null_ptr); 01586 } 01587 } 01588 01589 JNIEXPORT void JNICALL 01590 Java_parma_1polyhedra_1library_PIP_1_problem_finalize 01591 (JNIEnv* env, jobject j_this) { 01592 PIP_Problem* pip = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this)); 01593 if (!is_java_marked(env, j_this)) 01594 delete pip; 01595 } 01596 01597 JNIEXPORT jlong JNICALL 01598 Java_parma_1polyhedra_1library_PIP_1Problem_max_1space_1dimension 01599 (JNIEnv* env , jobject j_this_pip_problem) { 01600 try { 01601 PIP_Problem* pip 01602 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01603 return pip->max_space_dimension(); 01604 } 01605 CATCH_ALL; 01606 return 0; 01607 } 01608 01609 JNIEXPORT jlong JNICALL 01610 Java_parma_1polyhedra_1library_PIP_1Problem_space_1dimension 01611 (JNIEnv* env , jobject j_this_pip_problem) { 01612 try { 01613 PIP_Problem* pip 01614 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01615 return pip->space_dimension(); 01616 } 01617 CATCH_ALL; 01618 return 0; 01619 } 01620 01621 JNIEXPORT jlong JNICALL 01622 Java_parma_1polyhedra_1library_PIP_1Problem_get_1big_1parameter_1dimension 01623 (JNIEnv* env , jobject j_this_pip_problem) { 01624 try { 01625 PIP_Problem* pip 01626 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01627 return pip->get_big_parameter_dimension(); 01628 } 01629 CATCH_ALL; 01630 return 0; 01631 } 01632 01633 JNIEXPORT jobject JNICALL 01634 Java_parma_1polyhedra_1library_PIP_1Problem_parameter_1space_1dimensions 01635 (JNIEnv* env , jobject j_this_pip_problem) { 01636 try { 01637 PIP_Problem* pip 01638 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01639 return build_java_variables_set(env, pip->parameter_space_dimensions()); 01640 } 01641 CATCH_ALL; 01642 jobject null = 0; 01643 return null; 01644 } 01645 01646 JNIEXPORT void JNICALL 01647 Java_parma_1polyhedra_1library_PIP_1Problem_set_1big_1parameter_1dimension 01648 (JNIEnv* env , jobject j_this_pip_problem, jlong j_dim) { 01649 try { 01650 PIP_Problem* pip 01651 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01652 dimension_type ppl_dim = jtype_to_unsigned<dimension_type>(j_dim); 01653 pip->set_big_parameter_dimension(ppl_dim); 01654 } 01655 CATCH_ALL; 01656 } 01657 01658 JNIEXPORT jlong JNICALL 01659 Java_parma_1polyhedra_1library_PIP_1Problem_number_1of_1parameter_1space_1dimensions 01660 (JNIEnv* env , jobject j_this_pip_problem) { 01661 try { 01662 PIP_Problem* pip 01663 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01664 return pip->parameter_space_dimensions().size(); 01665 } 01666 CATCH_ALL; 01667 return 0; 01668 } 01669 01670 JNIEXPORT void JNICALL 01671 Java_parma_1polyhedra_1library_PIP_1Problem_add_1space_1dimensions_1and_1embed 01672 (JNIEnv* env , jobject j_this_pip_problem, jlong j_dim_vars, jlong j_dim_pars) { 01673 try { 01674 PIP_Problem* pip 01675 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01676 dimension_type ppl_dim_vars = jtype_to_unsigned<dimension_type>(j_dim_vars); 01677 dimension_type ppl_dim_pars = jtype_to_unsigned<dimension_type>(j_dim_pars); 01678 pip->add_space_dimensions_and_embed(ppl_dim_vars, ppl_dim_pars); 01679 } 01680 CATCH_ALL; 01681 } 01682 01683 JNIEXPORT void JNICALL 01684 Java_parma_1polyhedra_1library_PIP_1Problem_add_1to_1parameter_1space_1dimensions 01685 (JNIEnv* env , jobject j_this_pip_problem, jobject j_vars) { 01686 try { 01687 PIP_Problem* pip 01688 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01689 Variables_Set ppl_vars = build_cxx_variables_set(env, j_vars); 01690 pip->add_to_parameter_space_dimensions(ppl_vars); 01691 } 01692 CATCH_ALL; 01693 } 01694 01695 JNIEXPORT jlong JNICALL 01696 Java_parma_1polyhedra_1library_PIP_1Problem_number_1of_1constraints 01697 (JNIEnv* env , jobject j_this_pip_problem) { 01698 try { 01699 PIP_Problem* pip 01700 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01701 return pip->constraints_end() - pip->constraints_begin(); 01702 } 01703 CATCH_ALL; 01704 return 0; 01705 } 01706 01707 JNIEXPORT void JNICALL 01708 Java_parma_1polyhedra_1library_PIP_1Problem_add_1constraint 01709 (JNIEnv* env , jobject j_this_pip_problem, jobject j_c) { 01710 try { 01711 PIP_Problem* pip 01712 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01713 Constraint c = build_cxx_constraint(env, j_c); 01714 pip->add_constraint(c); 01715 } 01716 CATCH_ALL; 01717 } 01718 01719 JNIEXPORT void JNICALL 01720 Java_parma_1polyhedra_1library_PIP_1Problem_add_1constraints 01721 (JNIEnv* env , jobject j_this_pip_problem, jobject j_cs) { 01722 try { 01723 PIP_Problem* pip 01724 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01725 Constraint_System cs = build_cxx_constraint_system(env, j_cs); 01726 pip->add_constraints(cs); 01727 } 01728 CATCH_ALL; 01729 } 01730 01731 JNIEXPORT jboolean JNICALL 01732 Java_parma_1polyhedra_1library_PIP_1Problem_is_1satisfiable 01733 (JNIEnv* env , jobject j_this_pip_problem) { 01734 try { 01735 PIP_Problem* pip 01736 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01737 return pip->is_satisfiable(); 01738 } 01739 CATCH_ALL; 01740 return false; 01741 } 01742 01743 JNIEXPORT jobject JNICALL Java_parma_1polyhedra_1library_PIP_1Problem_solve 01744 (JNIEnv* env , jobject j_this_pip_problem) { 01745 try { 01746 PIP_Problem* pip 01747 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01748 return build_java_pip_status(env, pip->solve()); 01749 } 01750 CATCH_ALL; 01751 jobject null = 0; 01752 return null; 01753 } 01754 01755 JNIEXPORT jobject JNICALL Java_parma_1polyhedra_1library_PIP_1Problem_solution 01756 (JNIEnv* env , jobject j_this_pip_problem) { 01757 try { 01758 PIP_Problem* pip 01759 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01760 const PIP_Tree_Node* solution = pip->solution(); 01761 01762 jclass j_class_s = env->FindClass("parma_polyhedra_library/PIP_Tree_Node"); 01763 CHECK_RESULT_ASSERT(env, j_class_s); 01764 jmethodID j_ctr_id_s = env->GetMethodID(j_class_s, "<init>", "()V"); 01765 CHECK_RESULT_ASSERT(env, j_ctr_id_s); 01766 jobject j_obj_s = env->NewObject(j_class_s, j_ctr_id_s); 01767 CHECK_RESULT_RETURN(env, j_obj_s, 0); 01768 set_ptr(env, j_obj_s, solution); 01769 return j_obj_s; 01770 } 01771 CATCH_ALL; 01772 jobject null = 0; 01773 return null; 01774 } 01775 01776 JNIEXPORT jobject JNICALL 01777 Java_parma_1polyhedra_1library_PIP_1Problem_optimizing_1solution 01778 (JNIEnv* env , jobject j_this_pip_problem) { 01779 try { 01780 PIP_Problem* pip 01781 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01782 const PIP_Tree_Node* solution = pip->optimizing_solution(); 01783 01784 jclass j_class_s = env->FindClass("parma_polyhedra_library/PIP_Tree_Node"); 01785 CHECK_RESULT_ASSERT(env, j_class_s); 01786 jmethodID j_ctr_id_s = env->GetMethodID(j_class_s, "<init>", "()V"); 01787 CHECK_RESULT_ASSERT(env, j_ctr_id_s); 01788 jobject j_obj_s = env->NewObject(j_class_s, j_ctr_id_s); 01789 CHECK_RESULT_RETURN(env, j_obj_s, 0); 01790 set_ptr(env, j_obj_s, solution); 01791 return j_obj_s; 01792 } 01793 CATCH_ALL; 01794 jobject null = 0; 01795 return null; 01796 } 01797 01798 JNIEXPORT jobject JNICALL 01799 Java_parma_1polyhedra_1library_PIP_1Problem_get_1pip_1problem_1control_1parameter 01800 (JNIEnv* env , jobject j_this_pip_problem, 01801 jobject j_cpn) { 01802 try { 01803 PIP_Problem* pip 01804 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01805 PIP_Problem::Control_Parameter_Name ppl_cpn 01806 = build_cxx_pip_problem_control_parameter_name(env, j_cpn); 01807 return 01808 build_java_pip_problem_control_parameter_value 01809 (env, pip->get_control_parameter(ppl_cpn)); 01810 } 01811 CATCH_ALL; 01812 jobject null = 0; 01813 return null; 01814 } 01815 01816 JNIEXPORT jobject JNICALL 01817 Java_parma_1polyhedra_1library_PIP_1Problem_constraint_1at_1index 01818 (JNIEnv* env, jobject j_this_pip_problem, jlong j_index) { 01819 try { 01820 PIP_Problem* pip 01821 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01822 dimension_type p_index = jtype_to_unsigned<dimension_type>(j_index); 01823 return build_java_constraint(env, *(pip->constraints_begin() + p_index)); 01824 } 01825 CATCH_ALL; 01826 jobject null = 0; 01827 return null; 01828 } 01829 01830 JNIEXPORT jobject JNICALL 01831 Java_parma_1polyhedra_1library_PIP_1Problem_constraints 01832 (JNIEnv* env, jobject j_this_pip_problem) { 01833 try { 01834 jobject j_cs = env->NewObject(cached_classes.Constraint_System, 01835 cached_FMIDs.Constraint_System_init_ID); 01836 CHECK_RESULT_RETURN(env, j_cs, 0); 01837 01838 PIP_Problem* pip 01839 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01840 for (PIP_Problem::const_iterator cs_it = pip->constraints_begin(), 01841 cs_end = pip->constraints_end(); cs_it != cs_end; ++cs_it) { 01842 jobject j_constraint = build_java_constraint(env, *cs_it); 01843 env->CallBooleanMethod(j_cs, 01844 cached_FMIDs.Constraint_System_add_ID, 01845 j_constraint); 01846 CHECK_EXCEPTION_RETURN(env, 0); 01847 } 01848 return j_cs; 01849 } 01850 CATCH_ALL; 01851 jobject null = 0; 01852 return null; 01853 } 01854 01855 JNIEXPORT void JNICALL 01856 Java_parma_1polyhedra_1library_PIP_1Problem_set_1pip_1problem_1control_1parameter 01857 (JNIEnv* env, jobject j_this_pip_problem, jobject j_cpv) { 01858 try { 01859 PIP_Problem* pip 01860 = reinterpret_cast<PIP_Problem*>(get_ptr(env, j_this_pip_problem)); 01861 PIP_Problem::Control_Parameter_Value ppl_cpv 01862 = build_cxx_pip_problem_control_parameter_value(env, j_cpv); 01863 pip->set_control_parameter(ppl_cpv); 01864 } 01865 CATCH_ALL; 01866 } 01867 01868 JNIEXPORT jboolean JNICALL 01869 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_OK 01870 (JNIEnv* env, jobject j_this_pip_tree) { 01871 try { 01872 PIP_Tree_Node* pip 01873 = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this_pip_tree)); 01874 return pip->OK(); 01875 } 01876 CATCH_ALL; 01877 return false; 01878 } 01879 01880 JNIEXPORT void JNICALL 01881 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_free 01882 (JNIEnv* env, jobject j_this) { 01883 PIP_Tree_Node* pip = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this)); 01884 if (!is_java_marked(env, j_this)) { 01885 delete pip; 01886 void* null_ptr = 0; 01887 set_ptr(env, j_this, null_ptr); 01888 } 01889 } 01890 01891 JNIEXPORT void JNICALL 01892 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_finalize 01893 (JNIEnv* env, jobject j_this) { 01894 PIP_Tree_Node* pip = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this)); 01895 if (!is_java_marked(env, j_this)) 01896 delete pip; 01897 } 01898 01899 JNIEXPORT jobject JNICALL 01900 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_constraints 01901 (JNIEnv* env, jobject j_this_pip_node) { 01902 try { 01903 jobject j_cs = env->NewObject(cached_classes.Constraint_System, 01904 cached_FMIDs.Constraint_System_init_ID); 01905 CHECK_RESULT_RETURN(env, j_cs, 0); 01906 01907 PIP_Tree_Node* pip 01908 = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this_pip_node)); 01909 return build_java_constraint_system(env, pip->constraints()); 01910 } 01911 CATCH_ALL; 01912 jobject null = 0; 01913 return null; 01914 } 01915 01916 JNIEXPORT jobject JNICALL 01917 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_as_1solution 01918 (JNIEnv* env, jobject j_this) { 01919 try { 01920 PIP_Tree_Node* pip = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this)); 01921 const PIP_Solution_Node* solution = pip->as_solution(); 01922 if (solution == 0) { 01923 jobject null = 0; 01924 return null; 01925 } 01926 // Here we have a solution node. 01927 jclass j_class_s 01928 = env->FindClass("parma_polyhedra_library/PIP_Solution_Node"); 01929 CHECK_RESULT_ASSERT(env, j_class_s); 01930 jmethodID j_ctr_id_s = env->GetMethodID(j_class_s, "<init>", "()V"); 01931 CHECK_RESULT_ASSERT(env, j_ctr_id_s); 01932 jobject j_obj_s = env->NewObject(j_class_s, j_ctr_id_s); 01933 CHECK_RESULT_RETURN(env, j_obj_s, 0); 01934 set_ptr(env, j_obj_s, solution); 01935 return j_obj_s; 01936 } 01937 CATCH_ALL; 01938 jobject null = 0; 01939 return null; 01940 } 01941 01942 JNIEXPORT jobject JNICALL 01943 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_as_1decision 01944 (JNIEnv* env, jobject j_this) { 01945 try { 01946 PIP_Tree_Node* pip = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this)); 01947 const PIP_Decision_Node* decision = pip->as_decision(); 01948 if (decision == 0) { 01949 jobject null = 0; 01950 return null; 01951 } 01952 // Here we have a decision node. 01953 jclass j_class_d 01954 = env->FindClass("parma_polyhedra_library/PIP_Decision_Node"); 01955 CHECK_RESULT_ASSERT(env, j_class_d); 01956 jmethodID j_ctr_id_d = env->GetMethodID(j_class_d, "<init>", "()V"); 01957 CHECK_RESULT_ASSERT(env, j_ctr_id_d); 01958 jobject j_obj_d = env->NewObject(j_class_d, j_ctr_id_d); 01959 CHECK_RESULT_RETURN(env, j_obj_d, 0); 01960 set_ptr(env, j_obj_d, decision); 01961 return j_obj_d; 01962 } 01963 CATCH_ALL; 01964 jobject null = 0; 01965 return null; 01966 } 01967 01968 JNIEXPORT jlong JNICALL 01969 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_number_1of_1artificials 01970 (JNIEnv* env , jobject j_this) { 01971 try { 01972 PIP_Tree_Node* pip = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this)); 01973 return pip->art_parameter_count(); 01974 } 01975 CATCH_ALL; 01976 return 0; 01977 } 01978 01979 JNIEXPORT jobject JNICALL 01980 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_artificials 01981 (JNIEnv* env, jobject j_this_pip_node) { 01982 try { 01983 jobject j_arts 01984 = env->NewObject(cached_classes.Artificial_Parameter_Sequence, 01985 cached_FMIDs.Artificial_Parameter_Sequence_init_ID); 01986 CHECK_RESULT_RETURN(env, j_arts, 0); 01987 01988 const PIP_Tree_Node* pip_node 01989 = reinterpret_cast<const PIP_Tree_Node*>(get_ptr(env, j_this_pip_node)); 01990 for (PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator 01991 i = pip_node->art_parameter_begin(), 01992 i_end = pip_node->art_parameter_end(); i != i_end; ++i) { 01993 jobject j_art = build_java_artificial_parameter(env, *i); 01994 env->CallBooleanMethod(j_arts, 01995 cached_FMIDs.Artificial_Parameter_Sequence_add_ID, 01996 j_art); 01997 CHECK_EXCEPTION_RETURN(env, 0); 01998 } 01999 return j_arts; 02000 } 02001 CATCH_ALL; 02002 jobject null = 0; 02003 return null; 02004 } 02005 02006 JNIEXPORT jstring JNICALL 02007 Java_parma_1polyhedra_1library_PIP_1Tree_1Node_toString 02008 (JNIEnv* env, jobject j_this) { 02009 PIP_Tree_Node* this_ptr 02010 = reinterpret_cast<PIP_Tree_Node*>(get_ptr(env, j_this)); 02011 using namespace Parma_Polyhedra_Library::IO_Operators; 02012 std::ostringstream s; 02013 s << *this_ptr; 02014 return env->NewStringUTF(s.str().c_str()); 02015 } 02016 02017 JNIEXPORT jobject JNICALL 02018 Java_parma_1polyhedra_1library_PIP_1Decision_1Node_child_1node 02019 (JNIEnv* env, jobject j_this, jboolean j_branch) { 02020 try { 02021 PIP_Decision_Node* dec_node 02022 = reinterpret_cast<PIP_Decision_Node*>(get_ptr(env, j_this)); 02023 const PIP_Tree_Node* child = dec_node->child_node(j_branch); 02024 if (child == 0) { 02025 jobject null = 0; 02026 return null; 02027 } 02028 jclass j_class_s = env->FindClass("parma_polyhedra_library/PIP_Tree_Node"); 02029 CHECK_RESULT_ASSERT(env, j_class_s); 02030 jmethodID j_ctr_id_s = env->GetMethodID(j_class_s, "<init>", "()V"); 02031 CHECK_RESULT_ASSERT(env, j_ctr_id_s); 02032 jobject j_obj_s = env->NewObject(j_class_s, j_ctr_id_s); 02033 CHECK_RESULT_RETURN(env, j_obj_s, 0); 02034 set_ptr(env, j_obj_s, child); 02035 return j_obj_s; 02036 } 02037 CATCH_ALL; 02038 jobject null = 0; 02039 return null; 02040 } 02041 02042 JNIEXPORT jobject JNICALL 02043 Java_parma_1polyhedra_1library_PIP_1Solution_1Node_parametric_1values 02044 (JNIEnv* env, jobject j_this, jobject j_var) { 02045 PIP_Solution_Node* pip 02046 = reinterpret_cast<PIP_Solution_Node*>(get_ptr(env, j_this)); 02047 Variable v = build_cxx_variable(env, j_var); 02048 return build_linear_expression(env, pip->parametric_values(v)); 02049 } 02050 02051 JNIEXPORT void JNICALL 02052 Java_parma_1polyhedra_1library_Artificial_1Parameter_initIDs 02053 (JNIEnv* env, jclass j_artificial_parameter_class) { 02054 jfieldID fID; 02055 fID = env->GetFieldID(j_artificial_parameter_class, "le", 02056 "Lparma_polyhedra_library/Linear_Expression;"); 02057 CHECK_RESULT_ASSERT(env, fID); 02058 cached_FMIDs.Artificial_Parameter_le_ID = fID; 02059 fID = env->GetFieldID(j_artificial_parameter_class, "den", 02060 "Lparma_polyhedra_library/Coefficient;"); 02061 CHECK_RESULT_ASSERT(env, fID); 02062 cached_FMIDs.Artificial_Parameter_den_ID = fID; 02063 jmethodID mID; 02064 mID = env->GetMethodID(j_artificial_parameter_class, "<init>", 02065 "(Lparma_polyhedra_library/Linear_Expression;" 02066 "Lparma_polyhedra_library/Coefficient;)V"); 02067 CHECK_RESULT_ASSERT(env, mID); 02068 cached_FMIDs.Artificial_Parameter_init_ID = mID; 02069 } 02070 02071 JNIEXPORT jstring JNICALL 02072 Java_parma_1polyhedra_1library_Artificial_1Parameter_ascii_1dump 02073 (JNIEnv* env, jobject j_this) { 02074 try { 02075 std::ostringstream s; 02076 PIP_Tree_Node::Artificial_Parameter art 02077 = build_cxx_artificial_parameter(env, j_this); 02078 art.ascii_dump(s); 02079 return env->NewStringUTF(s.str().c_str()); 02080 } 02081 CATCH_ALL; 02082 return 0; 02083 } 02084 02085 JNIEXPORT jstring JNICALL 02086 Java_parma_1polyhedra_1library_Artificial_1Parameter_toString 02087 (JNIEnv* env, jobject j_this) { 02088 using namespace Parma_Polyhedra_Library::IO_Operators; 02089 std::ostringstream s; 02090 PIP_Tree_Node::Artificial_Parameter ppl_art 02091 = build_cxx_artificial_parameter(env, j_this); 02092 s << ppl_art; 02093 return env->NewStringUTF(s.str().c_str()); 02094 } 02095 02096 JNIEXPORT void JNICALL 02097 Java_parma_1polyhedra_1library_Artificial_1Parameter_1Sequence_initIDs 02098 (JNIEnv* env, jclass j_aps_class) { 02099 jmethodID mID; 02100 mID = env->GetMethodID(j_aps_class, "<init>", "()V"); 02101 CHECK_RESULT_ASSERT(env, mID); 02102 cached_FMIDs.Artificial_Parameter_Sequence_init_ID = mID; 02103 mID = env->GetMethodID(j_aps_class, "add", "(Ljava/lang/Object;)Z"); 02104 CHECK_RESULT_ASSERT(env, mID); 02105 cached_FMIDs.Artificial_Parameter_Sequence_add_ID = mID; 02106 } 02107 02108 02109 JNIEXPORT void JNICALL 02110 Java_parma_1polyhedra_1library_Partial_1Function_build_1cpp_1object 02111 (JNIEnv* env, jobject j_this_pfunc) { 02112 try { 02113 Partial_Function* pfunc_ptr = new Partial_Function; 02114 set_ptr(env, j_this_pfunc, pfunc_ptr); 02115 } 02116 CATCH_ALL; 02117 } 02118 02119 JNIEXPORT jboolean JNICALL 02120 Java_parma_1polyhedra_1library_Partial_1Function_has_1empty_1codomain 02121 (JNIEnv* env , jobject j_this_pfunc) { 02122 try { 02123 Partial_Function* pfunc 02124 = reinterpret_cast<Partial_Function*>(get_ptr(env, j_this_pfunc)); 02125 return pfunc->has_empty_codomain(); 02126 } 02127 CATCH_ALL; 02128 return 0; 02129 } 02130 02131 JNIEXPORT jlong JNICALL 02132 Java_parma_1polyhedra_1library_Partial_1Function_max_1in_1codomain 02133 (JNIEnv* env , jobject j_this_pfunc) { 02134 try { 02135 Partial_Function* pfunc 02136 = reinterpret_cast<Partial_Function*>(get_ptr(env, j_this_pfunc)); 02137 return pfunc->max_in_codomain(); 02138 } 02139 CATCH_ALL; 02140 return 0; 02141 } 02142 02143 JNIEXPORT jlong JNICALL 02144 Java_parma_1polyhedra_1library_Partial_1Function_maps 02145 (JNIEnv* env, jobject j_this_pfunc, jlong j_i) { 02146 Partial_Function* pfunc 02147 = reinterpret_cast<Partial_Function*>(get_ptr(env, j_this_pfunc)); 02148 dimension_type i = jtype_to_unsigned<dimension_type>(j_i); 02149 dimension_type j; 02150 if (pfunc->maps(i, j)) 02151 return j; 02152 else 02153 return -1; 02154 } 02155 02156 JNIEXPORT void JNICALL 02157 Java_parma_1polyhedra_1library_Partial_1Function_insert 02158 (JNIEnv* env , jobject j_this_pfunc, jlong i, jlong j) { 02159 try { 02160 Partial_Function* pfunc 02161 = reinterpret_cast<Partial_Function*>(get_ptr(env, j_this_pfunc)); 02162 pfunc->insert(i, j); 02163 } 02164 CATCH_ALL; 02165 } 02166 02167 JNIEXPORT void JNICALL 02168 Java_parma_1polyhedra_1library_Partial_1Function_free 02169 (JNIEnv* env, jobject j_this) { 02170 Partial_Function* pfunc 02171 = reinterpret_cast<Partial_Function*>(get_ptr(env, j_this)); 02172 if (!is_java_marked(env, j_this)) { 02173 delete pfunc; 02174 void* null_ptr = 0; 02175 set_ptr(env, j_this, null_ptr); 02176 } 02177 } 02178 02179 JNIEXPORT void JNICALL 02180 Java_parma_1polyhedra_1library_Partial_1Function_finalize 02181 (JNIEnv* env, jobject j_this) { 02182 Partial_Function* pfunc 02183 = reinterpret_cast<Partial_Function*>(get_ptr(env, j_this)); 02184 if (!is_java_marked(env, j_this)) 02185 delete pfunc; 02186 }