[PPL-devel] [GIT] ppl/ppl(bounded_arithmetic): Added the declaration and a stub implementation of new method

Roberto Bagnara bagnara at cs.unipr.it
Tue Apr 21 11:36:44 CEST 2009


Module: ppl/ppl
Branch: bounded_arithmetic
Commit: 3879ecb87976c3fec4e498b45f75d2424ee98c2e
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=3879ecb87976c3fec4e498b45f75d2424ee98c2e

Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date:   Tue Apr 21 11:34:24 2009 +0200

Added the declaration and a stub implementation of new method
Polyhedron::wrap_assign().

---

 src/Polyhedron.defs.hh   |   40 ++++++++++++++++++++++++++++++++++++++++
 src/Polyhedron_public.cc |   10 ++++++++++
 2 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/src/Polyhedron.defs.hh b/src/Polyhedron.defs.hh
index 6e4ba7f..0c8f1e9 100644
--- a/src/Polyhedron.defs.hh
+++ b/src/Polyhedron.defs.hh
@@ -1423,6 +1423,46 @@ public:
   */
   void time_elapse_assign(const Polyhedron& y);
 
+  /*! \brief
+    \ref Wrapping_Operator "Wraps" the specified dimensions of the
+    vector space.
+
+    \param vars
+    The set of Variable objects corresponding to the space dimensions
+    to be wrapped.
+
+    \param w
+    The width of the bounded integer type corresponding to
+    all the dimensions to be wrapped.
+
+    \param s
+    The signedness of the bounded integer type corresponding to
+    all the dimensions to be wrapped.
+
+    \param w
+    The overflow behavior of the bounded integer type corresponding to
+    all the dimensions to be wrapped.
+
+    \param wrap_individually
+    <CODE>true</CODE> if the dimensions should be wrapped individually
+    (something that results in greater efficiency to the detriment of
+    precision).
+
+    \param k_threshold
+    A precision parameter of the \ref Wrap_Operator "wrapping operator":
+    higher values result in possibly improved precision.
+
+    \exception std::invalid_argument
+    Thrown if \p *this is dimension-incompatible with one of the
+    Variable objects contained in \p vars.
+  */
+  void wrap_assign(const Variables_Set& vars,
+                   Bounded_Integer_Type_Width w,
+                   Bounded_Integer_Type_Signedness s,
+                   Bounded_Integer_Type_Overflow o,
+                   bool wrap_individually = true,
+                   unsigned k_threshold = 16);
+
   //! Assigns to \p *this its topological closure.
   void topological_closure_assign();
 
diff --git a/src/Polyhedron_public.cc b/src/Polyhedron_public.cc
index 5f95530..ea0b69e 100644
--- a/src/Polyhedron_public.cc
+++ b/src/Polyhedron_public.cc
@@ -3460,6 +3460,16 @@ PPL::Polyhedron::time_elapse_assign(const Polyhedron& y) {
 }
 
 void
+PPL::Polyhedron::wrap_assign(const Variables_Set& vars,
+                             Bounded_Integer_Type_Width w,
+                             Bounded_Integer_Type_Signedness s,
+                             Bounded_Integer_Type_Overflow o,
+                             bool wrap_individually,
+                             unsigned k_threshold) {
+  // FIXME: to be written.
+}
+
+void
 PPL::Polyhedron::topological_closure_assign() {
   // Necessarily closed polyhedra are trivially closed.
   if (is_necessarily_closed())




More information about the PPL-devel mailing list