[GIT] ppl/ppl(pip): Added increment, dereference and equal functions

Module: ppl/ppl Branch: pip Commit: 65ebba9954ea5539339c264d4a20493002d31607 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=65ebba9954ea5...
Author: Patricia Hill p.m.hill@leeds.ac.uk Date: Sat Oct 24 17:34:19 2009 +0100
Added increment, dereference and equal functions for ppl_Artificial_Parameter_Sequence_const_iterator_t's
Fixed a couple of bugs.
---
interfaces/C/ppl_c_header.h | 31 +++++++++++++++++++++++++- interfaces/C/ppl_c_implementation_common.cc | 30 ++++++++++++++++++++++++++ interfaces/C/tests/pip_test.c | 2 +- 3 files changed, 60 insertions(+), 3 deletions(-)
diff --git a/interfaces/C/ppl_c_header.h b/interfaces/C/ppl_c_header.h index 8dc92be..065ef0a 100644 --- a/interfaces/C/ppl_c_header.h +++ b/interfaces/C/ppl_c_header.h @@ -2780,7 +2780,7 @@ ppl_PIP_Problem_solve PPL_PROTO((ppl_const_PIP_Problem_t pip)); Thrown if the PIP problem is not satisfiable. */ int -ppl_PPL_Problem_solution PPL_PROTO((ppl_const_PIP_Problem_t pip, +ppl_PIP_Problem_solution PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_const_PIP_Tree_Node_t* pip_tree));
/*! \relates ppl_PIP_Problem_tag \brief @@ -2797,7 +2797,7 @@ ppl_PPL_Problem_solution PPL_PROTO((ppl_const_PIP_Problem_t pip, if the PIP problem is unbounded or not satisfiable. */ int -ppl_PPL_Problem_optimizing_solution +ppl_PIP_Problem_optimizing_solution PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_const_PIP_Tree_Node_t* pip_tree));
@@ -2975,6 +2975,33 @@ int ppl_Artificial_Parameter_get_denominator PPL_PROTO((ppl_const_Artificial_Parameter_t ap, ppl_const_Coefficient_t* coef));
+/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief + Dereference \p git writing a const handle to the resulting + grid generator at address \p pg. +*/ +int +ppl_Artificial_Parameter_Sequence_const_iterator_dereference +PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit, + ppl_const_Artificial_Parameter_t* pap)); + +/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief + Increment \p git so that it "points" to the next grid generator. +*/ +int +ppl_Artificial_Parameter_Sequence_const_iterator_increment +PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t apit)); + +/*! \relates ppl_Artificial_Parameter_Sequence_const_iterator_tag \brief + Returns a positive integer if the iterators corresponding to \p x and + \p y are equal; returns 0 if they are different. +*/ +int +ppl_Artificial_Parameter_Sequence_const_iterator_equal_test +PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t x, + ppl_const_Artificial_Parameter_Sequence_const_iterator_t y)); + +/*@}*/ /* Dereferencing, Incrementing and Equality Testing */ + /*@}*/ /* Querying/Setting Control Parameters */
PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(MIP_Problem) diff --git a/interfaces/C/ppl_c_implementation_common.cc b/interfaces/C/ppl_c_implementation_common.cc index 1ef11f1..5d6dc0a 100644 --- a/interfaces/C/ppl_c_implementation_common.cc +++ b/interfaces/C/ppl_c_implementation_common.cc @@ -2431,6 +2431,36 @@ ppl_Artificial_Parameter_get_denominator(ppl_const_Artificial_Parameter_t ap, CATCH_ALL
int +ppl_Artificial_Parameter_Sequence_const_iterator_dereference +(ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit, + ppl_const_Artificial_Parameter_t* pap) try { + const Artificial_Parameter_Sequence::const_iterator& papit = *to_const(apit); + const Artificial_Parameter& ap = *papit; + *pap = to_const(&ap); + return 0; +} +CATCH_ALL + +int +ppl_Artificial_Parameter_Sequence_const_iterator_increment +(ppl_Artificial_Parameter_Sequence_const_iterator_t apit) try { + Artificial_Parameter_Sequence::const_iterator& papit = *to_nonconst(apit); + ++papit; + return 0; +} +CATCH_ALL + +int +ppl_Artificial_Parameter_Sequence_const_iterator_equal_test +(ppl_const_Artificial_Parameter_Sequence_const_iterator_t x, + ppl_const_Artificial_Parameter_Sequence_const_iterator_t y) try { + const Artificial_Parameter_Sequence::const_iterator& xx = *to_const(x); + const Artificial_Parameter_Sequence::const_iterator& yy = *to_const(y); + return (xx == yy) ? 1 : 0; +} +CATCH_ALL + +int ppl_io_print_variable(ppl_dimension_type var) try { const char* b = c_variable_output_function(var); if (b == 0 || puts(b) < 0) diff --git a/interfaces/C/tests/pip_test.c b/interfaces/C/tests/pip_test.c index 5152853..ab56dbf 100644 --- a/interfaces/C/tests/pip_test.c +++ b/interfaces/C/tests/pip_test.c @@ -104,7 +104,7 @@ main(int argc, char **argv) { ppl_dimension_type dim; ppl_const_PIP_Tree_Node_t solution; ppl_PIP_Problem_space_dimension(pip, &dim); - ppl_PPL_Problem_solution(pip, &solution); + ppl_PIP_Problem_solution(pip, &solution); /* display_solution(solution, N_VARS, N_PARAMETERS, parameter_dim); */ }
participants (1)
-
Patricia Hill