[GIT] ppl/ppl(master): Corrected PIP_Problem test04 to properly call predicate ppl_*_artificials( ).

Module: ppl/ppl Branch: master Commit: cac4da6e7ece70ff7ebd8b0bfc16e07d41e375af URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=cac4da6e7ece7...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Mon Apr 5 20:46:24 2010 +0200
Corrected PIP_Problem test04 to properly call predicate ppl_*_artificials(). Applied a few renamings to the implementation of the predicate.
---
interfaces/Prolog/ppl_prolog_common.cc | 25 +++++++++++-------------- interfaces/Prolog/ppl_prolog_common.defs.hh | 2 +- interfaces/Prolog/tests/pl_check.pl | 9 ++++++--- 3 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/interfaces/Prolog/ppl_prolog_common.cc b/interfaces/Prolog/ppl_prolog_common.cc index 2b5a2bc..1c945a2 100644 --- a/interfaces/Prolog/ppl_prolog_common.cc +++ b/interfaces/Prolog/ppl_prolog_common.cc @@ -1405,13 +1405,11 @@ grid_generator_term(const Grid_Generator& g) { }
Prolog_term_ref - artificial_parameter_term(const PIP_Tree_Node::Artificial_Parameter& art) { +artificial_parameter_term(const PIP_Tree_Node::Artificial_Parameter& art) { Prolog_term_ref t = Prolog_new_term_ref(); - Prolog_construct_compound - (t, - a_divided_by, - get_linear_expression(art), - Coefficient_to_integer_term(art.denominator())); + Prolog_construct_compound(t, a_divided_by, + get_linear_expression(art), + Coefficient_to_integer_term(art.denominator())); return t; }
@@ -3036,25 +3034,24 @@ ppl_PIP_Tree_Node_as_decision(Prolog_term_ref t_pip, CATCH_ALL; }
-/* FIXME: (Commented) test in pl_check.pl gives segmentation fault! */ extern "C" Prolog_foreign_return_type -ppl_PIP_Tree_Node_artificials(Prolog_term_ref t_pip, +ppl_PIP_Tree_Node_artificials(Prolog_term_ref t_tree_node, Prolog_term_ref t_artlist) { static const char* where = "ppl_PIP_Tree_Node_artificials/2"; try { - const PIP_Tree_Node* pip = term_to_handle<PIP_Tree_Node>(t_pip, where); - PPL_CHECK(pip); + const PIP_Tree_Node* node + = term_to_handle<PIP_Tree_Node>(t_tree_node, where); + PPL_CHECK(node);
Prolog_term_ref tail = Prolog_new_term_ref(); Prolog_put_atom(tail, a_nil); for (PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator - i = pip->art_parameter_begin(), - arts_end = pip->art_parameter_end(); i != arts_end; ++i) + i = node->art_parameter_begin(), + arts_end = node->art_parameter_end(); i != arts_end; ++i) Prolog_construct_cons(tail, artificial_parameter_term(*i), tail);
- if (Prolog_unify(t_artlist, tail)) { + if (Prolog_unify(t_artlist, tail)) return PROLOG_SUCCESS; - } } CATCH_ALL; } diff --git a/interfaces/Prolog/ppl_prolog_common.defs.hh b/interfaces/Prolog/ppl_prolog_common.defs.hh index e935de8..e1be161 100644 --- a/interfaces/Prolog/ppl_prolog_common.defs.hh +++ b/interfaces/Prolog/ppl_prolog_common.defs.hh @@ -1054,7 +1054,7 @@ ppl_PIP_Tree_Node_as_decision(Prolog_term_ref t_tree_node, Prolog_term_ref t_dec_node);
extern "C" Prolog_foreign_return_type -ppl_PIP_Tree_Node_artificials(Prolog_term_ref t_pip_tree, +ppl_PIP_Tree_Node_artificials(Prolog_term_ref t_tree_node, Prolog_term_ref t_artlist);
extern "C" Prolog_foreign_return_type diff --git a/interfaces/Prolog/tests/pl_check.pl b/interfaces/Prolog/tests/pl_check.pl index d0cb260..0db2379 100644 --- a/interfaces/Prolog/tests/pl_check.pl +++ b/interfaces/Prolog/tests/pl_check.pl @@ -2457,9 +2457,8 @@ pip_solution :- clean_ppl_new_PIP_Problem( 4, [3*J >= -2*I + 8, J =< 4*I - 4, J =< M, I =< N], [M,N], PIP), ppl_PIP_Problem_solution(PIP, Tree_Node), -%% ppl_PIP_Tree_Node_artificials(PIP, Artificials), -%% write(Artificials), nl, -%% compare_artificials_lists(Artificials, ), + ppl_PIP_Tree_Node_artificials(Tree_Node, Artificials), + Artificials = [], + ppl_PIP_Tree_Node_as_solution(Tree_Node, _Sol), ppl_PIP_Tree_Node_constraints(Tree_Node, _CS), ppl_PIP_Tree_Node_as_decision(Tree_Node, Dec), @@ -2472,6 +2471,10 @@ pip_solution :- ppl_PIP_Tree_Node_as_solution(TTChild, TTChild_Sol), ppl_PIP_Solution_Node_get_parametric_values(TTChild_Sol, I, _TPV), ppl_PIP_Decision_Node_get_false_child(TChild_Dec, FTChild), + ppl_PIP_Tree_Node_artificials(FTChild, FTChild_Artificials), + FTChild_Artificials = [Art_LinExpr/Art_Den], + compare_lin_expressions(Art_LinExpr, M), + Art_Den = 2, ppl_PIP_Tree_Node_as_solution(FTChild, FTChild_Sol), ppl_PIP_Solution_Node_get_parametric_values(FTChild_Sol, I, _FPV), ppl_PIP_Problem_OK(PIP),
participants (1)
-
Enea Zaffanella