diff liboctave/DiagArray2.h @ 14628:63ae976ac2e7 stable

preserve DiagArray2 interface for stable release series * DiagArray2.h (DiagArray2::checkelem): Restore function. Provide non-const version. (DiagArray2::check_idx): Return bool status. (DiagArray2::operator ()): Call checkelem, not check_idx.
author John W. Eaton <jwe@octave.org>
date Sat, 12 May 2012 12:31:34 -0400
parents 6250e1232c9c
children 9e4ad3f1f291 fd5c0159b588
line wrap: on
line diff
--- a/liboctave/DiagArray2.h	Fri May 11 16:24:25 2012 -0400
+++ b/liboctave/DiagArray2.h	Sat May 12 12:31:34 2012 -0400
@@ -119,22 +119,33 @@
   T& dgelem (octave_idx_type i)
     { return Array<T>::elem (i); }
 
-  void check_idx (octave_idx_type r, octave_idx_type c) const;
+  T checkelem (octave_idx_type r, octave_idx_type c) const
+    {
+      return check_idx (r, c) ? elem (r, c) : T (0);
+    }
 
   T operator () (octave_idx_type r, octave_idx_type c) const
     {
 #if defined (BOUNDS_CHECKING)
-      check_idx (r, c);
+      checkelem (r, c);
+#else
+      return elem (r, c);
 #endif
-      return elem (r, c);
+    }
+
+  T& checkelem (octave_idx_type r, octave_idx_type c)
+    {
+      static T zero (0);
+      return check_idx (r, c) ? elem (r, c) : zero;
     }
 
   T& operator () (octave_idx_type r, octave_idx_type c)
     {
 #if defined (BOUNDS_CHECKING)
-      check_idx (r, c);
+      return checkelem (r, c);
+#else
+      return elem (r, c);
 #endif
-      return elem (r, c);
     }
 
   // No checking.
@@ -166,6 +177,10 @@
 
   void print_info (std::ostream& os, const std::string& prefix) const
     { Array<T>::print_info (os, prefix); }
+
+private:
+
+  bool check_idx (octave_idx_type r, octave_idx_type c) const;
 };
 
 #endif