[GIT] ppl/ppl(master): Fixed a couple of name hiding issues in Expression_Hide_Inhomo adapter.

Module: ppl/ppl Branch: master Commit: 19bb7a9c716c6b4bbd1b61a0a5dd39170fbed5e7 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=19bb7a9c716c6...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Tue Aug 14 16:26:45 2012 +0200
Fixed a couple of name hiding issues in Expression_Hide_Inhomo adapter. This commit is meanto to be part of 9e4c9c57ae8ffca73bb9ee6c75a43d6ed6cd4096
---
src/BD_Shape.templates.hh | 20 ++++++++++++-------- src/Expression_Hide_Inhomo.defs.hh | 13 +++++++++++++ src/Expression_Hide_Inhomo.inlines.hh | 19 +++++++++++++++++++ src/Generator.defs.hh | 4 ---- 4 files changed, 44 insertions(+), 12 deletions(-)
diff --git a/src/BD_Shape.templates.hh b/src/BD_Shape.templates.hh index 6649a27..f5aad6e 100644 --- a/src/BD_Shape.templates.hh +++ b/src/BD_Shape.templates.hh @@ -90,14 +90,16 @@ BD_Shape<T>::BD_Shape(const Generator_System& gs) const Coefficient& g_i = g.expression().get(Variable(i - 1)); DB_Row<N>& dbm_i = dbm[i]; for (dimension_type j = space_dim; j > 0; --j) - if (i != j) - div_round_up(dbm_i[j], - g.expression().get(Variable(j - 1)) - g_i, - d); + if (i != j) { + const Coefficient& g_j = g.expression().get(Variable(j - 1)); + div_round_up(dbm_i[j], g_j - g_i, d); + } div_round_up(dbm_i[0], -g_i, d); } - for (dimension_type j = space_dim; j > 0; --j) - div_round_up(dbm_0[j], g.expression().get(Variable(j - 1)), d); + for (dimension_type j = space_dim; j > 0; --j) { + const Coefficient& g_j = g.expression().get(Variable(j - 1)); + div_round_up(dbm_0[j], g_j, d); + } // Note: no need to initialize the first element of the main diagonal. } else { @@ -111,14 +113,16 @@ BD_Shape<T>::BD_Shape(const Generator_System& gs) DB_Row<N>& dbm_i = dbm[i]; // The loop correctly handles the case when i == j. for (dimension_type j = space_dim; j > 0; --j) { - div_round_up(tmp, g.expression().get(Variable(j - 1)) - g_i, d); + const Coefficient& g_j = g.expression().get(Variable(j - 1)); + div_round_up(tmp, g_j - g_i, d); max_assign(dbm_i[j], tmp); } div_round_up(tmp, -g_i, d); max_assign(dbm_i[0], tmp); } for (dimension_type j = space_dim; j > 0; --j) { - div_round_up(tmp, g.expression().get(Variable(j - 1)), d); + const Coefficient& g_j = g.expression().get(Variable(j - 1)); + div_round_up(tmp, g_j, d); max_assign(dbm_0[j], tmp); } } diff --git a/src/Expression_Hide_Inhomo.defs.hh b/src/Expression_Hide_Inhomo.defs.hh index b6386dd..ffe2076 100644 --- a/src/Expression_Hide_Inhomo.defs.hh +++ b/src/Expression_Hide_Inhomo.defs.hh @@ -55,6 +55,15 @@ public: //! Returns the i-th coefficient. Coefficient_traits::const_reference get(dimension_type i) const;
+ //! Returns the coefficient of v. + Coefficient_traits::const_reference get(Variable v) const; + + /*! \brief + Returns <CODE>true</CODE> if the coefficient of each variable in + \p vars[i] is \f$0\f$. + */ + bool all_zeroes(const Variables_Set& vars) const; + /*! \brief Returns <CODE>true</CODE> if (*this)[i] is \f$0\f$, for each i in [start, end). @@ -72,6 +81,10 @@ public: */ Coefficient gcd(dimension_type start, dimension_type end) const;
+ //! Returns the index of the last nonzero element, or 0 if there are no + //! nonzero elements. + dimension_type last_nonzero() const; + //! Returns the index of the last nonzero element in [first,last), or last //! if there are no nonzero elements. dimension_type last_nonzero(dimension_type first, dimension_type last) const; diff --git a/src/Expression_Hide_Inhomo.inlines.hh b/src/Expression_Hide_Inhomo.inlines.hh index 16e2b2e..603a0bd 100644 --- a/src/Expression_Hide_Inhomo.inlines.hh +++ b/src/Expression_Hide_Inhomo.inlines.hh @@ -67,6 +67,19 @@ Expression_Hide_Inhomo<T>::get(dimension_type i) const { }
template <typename T> +inline Coefficient_traits::const_reference +Expression_Hide_Inhomo<T>::get(Variable v) const { + return this->obj_expr().get(v); +} + +template <typename T> +inline bool +Expression_Hide_Inhomo<T> +::all_zeroes(const Variables_Set& vars) const { + return this->obj_expr().all_zeroes(vars); +} + +template <typename T> inline bool Expression_Hide_Inhomo<T>::all_zeroes(dimension_type start, dimension_type end) const { @@ -105,6 +118,12 @@ Expression_Hide_Inhomo<T>::gcd(dimension_type start,
template <typename T> inline dimension_type +Expression_Hide_Inhomo<T>::last_nonzero() const { + return this->obj_expr().last_nonzero(); +} + +template <typename T> +inline dimension_type Expression_Hide_Inhomo<T>::last_nonzero(dimension_type first, dimension_type last) const { if (first == last) diff --git a/src/Generator.defs.hh b/src/Generator.defs.hh index ae931fa..d3d9b7c 100644 --- a/src/Generator.defs.hh +++ b/src/Generator.defs.hh @@ -736,10 +736,6 @@ private: friend class Parma_Polyhedra_Library::MIP_Problem; friend class Parma_Polyhedra_Library::Grid;
- // friend - // Parma_Polyhedra_Library - // ::Linear_Expression::Linear_Expression(const Generator& g); - friend std::ostream& Parma_Polyhedra_Library::IO_Operators::operator<<(std::ostream& s, const Generator& g);
participants (1)
-
Enea Zaffanella