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.