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

Patricia Hill p.m.hill at leeds.ac.uk
Sat Oct 24 18:36:17 CEST 2009


Module: ppl/ppl
Branch: pip
Commit: 65ebba9954ea5539339c264d4a20493002d31607
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=65ebba9954ea5539339c264d4a20493002d31607

Author: Patricia Hill <p.m.hill at 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); */
   }
 




More information about the PPL-devel mailing list