Mercurial > hg > octave-nkf
diff liboctave/DiagArray2.h @ 14590:6250e1232c9c stable
Implement proper op() indexing for diagonal matrices (bug #36368)
* DiagArray2.h (DiagArray2<T>::check_idx): New function.
(DiagArray2<T>::checkelem): Deleted. (DiagArray2<T>::operator()): New
non-const version, returns references. Conditionally call check_idx.
* DiagArray2.cc (DiagArray2<T>::check_idx): Contents copied over from
checkelem.
(DiagArray2<T>::checkelem): Deleted.
* ov-base-diag.cc (octave_base_diag<DMT, MT>::do_index_op): Replace
call to now-inaccessible checkelem() with elem().
* ov-cx-diag.cc: Add a test for this bug.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Wed, 02 May 2012 17:29:40 -0400 |
parents | 72c96de7a403 |
children | 13cc11418393 63ae976ac2e7 |
line wrap: on
line diff
--- a/liboctave/DiagArray2.h +++ b/liboctave/DiagArray2.h @@ -119,15 +119,22 @@ T& dgelem (octave_idx_type i) { return Array<T>::elem (i); } - T checkelem (octave_idx_type r, octave_idx_type c) const; + void check_idx (octave_idx_type r, octave_idx_type c) const; T operator () (octave_idx_type r, octave_idx_type c) const { #if defined (BOUNDS_CHECKING) - return checkelem (r, c); -#else + check_idx (r, c); +#endif return elem (r, c); + } + + T& operator () (octave_idx_type r, octave_idx_type c) + { +#if defined (BOUNDS_CHECKING) + check_idx (r, c); #endif + return elem (r, c); } // No checking.