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

Module: ppl/ppl Branch: master Commit: 8354fb40ac3b479de4176560139e6daba5d46bc7 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=8354fb40ac3b4...
Author: Patricia Hill p.m.hill@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]),
participants (1)
-
Patricia Hill