Mercurial > octave-nkf
comparison liboctave/DiagArray2.cc @ 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 | 63ae976ac2e7 |
comparison
equal
deleted
inserted
replaced
14583:89504d0a5c5b | 14590:6250e1232c9c |
---|---|
80 return DiagArray2<T> (Array<T>::template map<T> (fcn), d2, d1); | 80 return DiagArray2<T> (Array<T>::template map<T> (fcn), d2, d1); |
81 } | 81 } |
82 | 82 |
83 // A two-dimensional array with diagonal elements only. | 83 // A two-dimensional array with diagonal elements only. |
84 | 84 |
85 template <class T> | 85 template <typename T> |
86 T | 86 void |
87 DiagArray2<T>::checkelem (octave_idx_type r, octave_idx_type c) const | 87 DiagArray2<T>::check_idx (octave_idx_type r, octave_idx_type c) const |
88 { | 88 { |
89 if (r < 0 || r >= dim1 ()) | 89 if (r < 0 || r >= dim1 ()) |
90 gripe_index_out_of_range (2, 1, r+1, dim1 ()); | 90 gripe_index_out_of_range (2, 1, r+1, dim1 ()); |
91 if (c < 0 || c >= dim2 ()) | 91 if (c < 0 || c >= dim2 ()) |
92 gripe_index_out_of_range (2, 2, c+1, dim2 ()); | 92 gripe_index_out_of_range (2, 2, c+1, dim2 ()); |
93 | |
94 return elem (r, c); | |
95 } | 93 } |
96 | 94 |
97 template <class T> | 95 template <class T> |
98 void | 96 void |
99 DiagArray2<T>::resize (octave_idx_type r, octave_idx_type c, | 97 DiagArray2<T>::resize (octave_idx_type r, octave_idx_type c, |