[PPL-devel] [GIT] ppl/ppl(sparse_matrices): Dense_Row: add find() and find_create() methods, for compatibility with Sparse_Row.
Marco Poletti
poletti.marco at gmail.com
Tue Mar 9 13:37:13 CET 2010
Module: ppl/ppl
Branch: sparse_matrices
Commit: 72882a3727550d333b7faeb80c172a54b88b5ecd
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=72882a3727550d333b7faeb80c172a54b88b5ecd
Author: Marco Poletti <poletti.marco at gmail.com>
Date: Tue Mar 9 13:35:53 2010 +0100
Dense_Row: add find() and find_create() methods, for compatibility with Sparse_Row.
---
src/Dense_Row.defs.hh | 14 ++++++++++++++
src/Dense_Row.inlines.hh | 25 +++++++++++++++++++++++++
2 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/src/Dense_Row.defs.hh b/src/Dense_Row.defs.hh
index 44decef..ebb6e68 100644
--- a/src/Dense_Row.defs.hh
+++ b/src/Dense_Row.defs.hh
@@ -167,6 +167,20 @@ public:
void get2(const dimension_type c1,const dimension_type c2,
const Coefficient*& p1,const Coefficient*& p2) const;
+ //! Provided for compatibility with Sparse_Row.
+ iterator find(dimension_type i);
+
+ //! Provided for compatibility with Sparse_Row.
+ //! itr must point to an element before the searched one.
+ iterator find(dimension_type i,iterator itr);
+
+ //! Provided for compatibility with Sparse_Row.
+ iterator find_create(dimension_type i,const Coefficient& x);
+
+ //! Provided for compatibility with Sparse_Row.
+ //! itr must point to an element before the modified one.
+ iterator find_create(dimension_type i,const Coefficient& x,iterator itr);
+
//! \name Subscript operators
//@{
//! Returns a reference to the element of the row indexed by \p k.
diff --git a/src/Dense_Row.inlines.hh b/src/Dense_Row.inlines.hh
index 7e766d7..7232a3c 100644
--- a/src/Dense_Row.inlines.hh
+++ b/src/Dense_Row.inlines.hh
@@ -161,6 +161,31 @@ Dense_Row::get2(const dimension_type c1,const dimension_type c2,
p2 = &(get(c2));
}
+inline Dense_Row::iterator
+Dense_Row::find(dimension_type i) {
+ return iterator(*this,i);
+}
+
+inline Dense_Row::iterator
+Dense_Row::find(dimension_type i,iterator itr) {
+ PPL_ASSERT((*itr).first < i);
+ return iterator(*this,i);
+}
+
+inline Dense_Row::iterator
+Dense_Row::find_create(dimension_type i,const Coefficient& x) {
+ (*this)[i] = x;
+ return find(i);
+}
+
+inline Dense_Row::iterator
+Dense_Row::find_create(dimension_type i,const Coefficient& x,iterator itr) {
+ PPL_ASSERT(itr != end());
+ PPL_ASSERT((*itr).first < i);
+ (*this)[i] = x;
+ return find(i);
+}
+
inline Coefficient&
Dense_Row::operator[](const dimension_type k) {
return row[k];
More information about the PPL-devel
mailing list