[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