[PPL-devel] [GIT] ppl/ppl(master): ...get_big_parameter_dimension/2 changed to

Patricia Hill p.m.hill at leeds.ac.uk
Tue Apr 6 10:54:59 CEST 2010


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

Author: Patricia Hill <p.m.hill at leeds.ac.uk>
Date:   Tue Apr  6 09:52:31 2010 +0100

..get_big_parameter_dimension/2 changed to
..has_big_parameter_dimension/2
and now this fails if the "big dimension" == not_a_dimension().

---

 ...erface_generator_prolog_procedure_generators.m4 |    2 +-
 interfaces/Prolog/ppl_prolog_common.cc             |    7 +++++--
 interfaces/Prolog/ppl_prolog_common.defs.hh        |    2 +-
 interfaces/Prolog/tests/pl_check.pl                |   19 +++++++++++--------
 4 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/interfaces/Prolog/ppl_interface_generator_prolog_procedure_generators.m4 b/interfaces/Prolog/ppl_interface_generator_prolog_procedure_generators.m4
index e29aeda..1d80e1c 100644
--- a/interfaces/Prolog/ppl_interface_generator_prolog_procedure_generators.m4
+++ b/interfaces/Prolog/ppl_interface_generator_prolog_procedure_generators.m4
@@ -98,7 +98,7 @@ ppl_PIP_Problem_add_constraint/2,
 ppl_PIP_Problem_add_constraints/2,
 ppl_PIP_Problem_set_control_parameter/2 *nofail,
 ppl_PIP_Problem_get_control_parameter/3,
-ppl_PIP_Problem_get_big_parameter_dimension/2,
+ppl_PIP_Problem_has_big_parameter_dimension/2,
 ppl_PIP_Problem_set_big_parameter_dimension/2,
 ppl_PIP_Problem_is_satisfiable/1,
 ppl_PIP_Problem_solve/2,
diff --git a/interfaces/Prolog/ppl_prolog_common.cc b/interfaces/Prolog/ppl_prolog_common.cc
index 1c945a2..fbb985d 100644
--- a/interfaces/Prolog/ppl_prolog_common.cc
+++ b/interfaces/Prolog/ppl_prolog_common.cc
@@ -2846,13 +2846,16 @@ ppl_PIP_Problem_set_control_parameter(Prolog_term_ref t_pip,
 }
 
 extern "C" Prolog_foreign_return_type
-ppl_PIP_Problem_get_big_parameter_dimension(Prolog_term_ref t_pip,
+ppl_PIP_Problem_has_big_parameter_dimension(Prolog_term_ref t_pip,
                                             Prolog_term_ref t_d) {
   static const char* where = "ppl_PIP_Problem_get_big_parameter_dimension/2";
   try {
     PIP_Problem* pip = term_to_handle<PIP_Problem>(t_pip, where);
     PPL_CHECK(pip);
-    if (unify_ulong(t_d, pip->get_big_parameter_dimension()))
+    dimension_type dim = pip->get_big_parameter_dimension();
+    if (dim == not_a_dimension())
+      return PROLOG_FAILURE;
+    if (unify_ulong(t_d, dim))
       return PROLOG_SUCCESS;
   }
   CATCH_ALL;
diff --git a/interfaces/Prolog/ppl_prolog_common.defs.hh b/interfaces/Prolog/ppl_prolog_common.defs.hh
index e1be161..337b9fc 100644
--- a/interfaces/Prolog/ppl_prolog_common.defs.hh
+++ b/interfaces/Prolog/ppl_prolog_common.defs.hh
@@ -1028,7 +1028,7 @@ ppl_PIP_Problem_optimizing_solution(Prolog_term_ref t_pip,
                                     Prolog_term_ref t_pip_tree);
 
 extern "C" Prolog_foreign_return_type
-ppl_PIP_Problem_get_big_parameter_dimension(Prolog_term_ref t_pip,
+ppl_PIP_Problem_has_big_parameter_dimension(Prolog_term_ref t_pip,
                                             Prolog_term_ref t_d);
 
 extern "C" Prolog_foreign_return_type
diff --git a/interfaces/Prolog/tests/pl_check.pl b/interfaces/Prolog/tests/pl_check.pl
index c3a29ad..d291960 100644
--- a/interfaces/Prolog/tests/pl_check.pl
+++ b/interfaces/Prolog/tests/pl_check.pl
@@ -2428,16 +2428,19 @@ pip_set :-
   make_vars(3, [A, B, C]),
   clean_ppl_new_PIP_Problem(
     3, [A >= 0, A =< 3, A + B + C >= 9, B >= 5, C =< 5], [B], PIP),
-  pl_check_prolog_flag(bounded, Y),
-  (Y == false ->
-      ppl_PIP_Problem_get_big_parameter_dimension(PIP, _X)
-%  ppl_PIP_Problem_set_big_parameter_dimension(PIP, X),
-  ;
-      true
-  ),
+  \+ ppl_PIP_Problem_has_big_parameter_dimension(PIP, _X),
   ppl_PIP_Problem_solve(PIP, optimized),
   !,
-  ppl_delete_PIP_Problem(PIP).
+  ppl_delete_PIP_Problem(PIP),
+
+  make_vars(4, [X, Y, P, M]),
+  clean_ppl_new_PIP_Problem(
+    4, [Y - M >= -2*X + 2*M - 4, 2*Y - 2*M =< X - M + 2*P], [P, M], PIP1),
+  ppl_PIP_Problem_set_big_parameter_dimension(PIP1, 3),
+  ppl_PIP_Problem_has_big_parameter_dimension(PIP1, 3),
+  ppl_PIP_Problem_solve(PIP1, optimized),
+  !,
+  ppl_delete_PIP_Problem(PIP1).
 
 pip_solve :-
   make_vars(3, [A, B, C]),




More information about the PPL-devel mailing list