[GIT] ppl/ppl(sparse_matrices): Improved documentation for {Dense, Sparse}_Row::add_zeroes_and_shift().

Module: ppl/ppl Branch: sparse_matrices Commit: e2c41692d4e10b772903dfcffcc1482fa9e279c6 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=e2c41692d4e10...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Sat Mar 24 09:21:26 2012 +0100
Improved documentation for {Dense,Sparse}_Row::add_zeroes_and_shift(). Prefer using `coeff_allocator' rather than operator new.
---
src/Dense_Row.cc | 11 +++-------- src/Dense_Row.defs.hh | 8 ++++---- src/Sparse_Row.defs.hh | 18 +++++++++--------- 3 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/src/Dense_Row.cc b/src/Dense_Row.cc index 1f5d618..3884c1e 100644 --- a/src/Dense_Row.cc +++ b/src/Dense_Row.cc @@ -136,13 +136,9 @@ PPL::Dense_Row::add_zeroes_and_shift(dimension_type n, dimension_type i) { const dimension_type new_size = size() + n; if (new_size > capacity()) { Dense_Row new_row; - const dimension_type new_capacity = compute_capacity(new_size, max_size()); - // This may throw. - new_row.impl.vec - = static_cast<Coefficient*>(operator new(sizeof(Coefficient) - * new_capacity)); + new_row.impl.vec = new_row.impl.coeff_allocator.allocate(new_capacity); new_row.impl.capacity = new_capacity;
dimension_type j = i; @@ -157,7 +153,6 @@ PPL::Dense_Row::add_zeroes_and_shift(dimension_type n, dimension_type i) { --j; new_row.impl.vec[j].~Coefficient(); } - // The new_row's destructor will de-allocate the memory. throw; } @@ -170,7 +165,7 @@ PPL::Dense_Row::add_zeroes_and_shift(dimension_type n, dimension_type i) { using std::swap; swap(impl.vec, new_row.impl.vec); swap(impl.capacity, new_row.impl.capacity); - + // *this now owns all coefficients, including the newly-added zeroes. impl.size = new_size;
@@ -201,7 +196,7 @@ PPL::Dense_Row::add_zeroes_and_shift(dimension_type n, dimension_type i) { throw; } } - + PPL_ASSERT(OK()); }
diff --git a/src/Dense_Row.defs.hh b/src/Dense_Row.defs.hh index 614e5b3..2627978 100644 --- a/src/Dense_Row.defs.hh +++ b/src/Dense_Row.defs.hh @@ -106,11 +106,11 @@ public:
//! Resizes the row to \p sz, with capacity \p capacity. void resize(dimension_type sz, dimension_type capacity); - + //! Resets all the elements of this row. void clear();
- //! Adds \p n zeroes before index i. + //! Adds \p n zeroes before index \p i. /*! \param n The number of zeroes that will be added to the row. @@ -118,8 +118,8 @@ public: \param i The index of the element before which the zeroes will be added.
- Existing elements with index greater than or equal to i are shifted to - the right by n positions. The size is increased by \p n. + Existing elements with index greater than or equal to \p i are shifted + to the right by \p n positions. The size is increased by \p n.
Existing iterators are invalidated. */ diff --git a/src/Sparse_Row.defs.hh b/src/Sparse_Row.defs.hh index 6e963e3..17ecf7a 100644 --- a/src/Sparse_Row.defs.hh +++ b/src/Sparse_Row.defs.hh @@ -206,7 +206,7 @@ public: */ void delete_element_and_shift(dimension_type i);
- //! Adds \p n zeroes before index i. + //! Adds \p n zeroes before index \p i. /*! \param n The number of non-stored zeroes that will be added to the row. @@ -214,16 +214,16 @@ public: \param i The index of the element before which the zeroes will be added.
- Existing elements with index greater than or equal to i are shifted to - the right by n positions. The size is increased by \p n. + Existing elements with index greater than or equal to \p i are shifted to + the right by \p n positions. The size is increased by \p n.
- Existing iterators are not invalidated, but are shifted to the right by n - if they pointed at or after index i (i.e. they point to the same, - possibly shifted, values as before). + Existing iterators are not invalidated, but are shifted to the right + by \p n if they pointed at or after index \p i (i.e., they point to + the same, possibly shifted, values as before).
- This method takes \f$O(k+\log n)\f$ expected time, where k is the number - of elements with index greater than or equal to i and n the number of - stored elements (not the parameter to this method). + This method takes \f$O(k + \log m)\f$ expected time, where \f$k\f$ is + the number of elements with index greater than or equal to \p i and + \f$m\f$ the number of stored elements. */ void add_zeroes_and_shift(dimension_type n, dimension_type i);
participants (1)
-
Enea Zaffanella