comparison 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
comparison
equal deleted inserted replaced
14627:a7be1e7e5831 14628:63ae976ac2e7
117 { return Array<T>::elem (i); } 117 { return Array<T>::elem (i); }
118 118
119 T& dgelem (octave_idx_type i) 119 T& dgelem (octave_idx_type i)
120 { return Array<T>::elem (i); } 120 { return Array<T>::elem (i); }
121 121
122 void check_idx (octave_idx_type r, octave_idx_type c) const; 122 T checkelem (octave_idx_type r, octave_idx_type c) const
123 {
124 return check_idx (r, c) ? elem (r, c) : T (0);
125 }
123 126
124 T operator () (octave_idx_type r, octave_idx_type c) const 127 T operator () (octave_idx_type r, octave_idx_type c) const
125 { 128 {
126 #if defined (BOUNDS_CHECKING) 129 #if defined (BOUNDS_CHECKING)
127 check_idx (r, c); 130 checkelem (r, c);
131 #else
132 return elem (r, c);
128 #endif 133 #endif
129 return elem (r, c); 134 }
135
136 T& checkelem (octave_idx_type r, octave_idx_type c)
137 {
138 static T zero (0);
139 return check_idx (r, c) ? elem (r, c) : zero;
130 } 140 }
131 141
132 T& operator () (octave_idx_type r, octave_idx_type c) 142 T& operator () (octave_idx_type r, octave_idx_type c)
133 { 143 {
134 #if defined (BOUNDS_CHECKING) 144 #if defined (BOUNDS_CHECKING)
135 check_idx (r, c); 145 return checkelem (r, c);
146 #else
147 return elem (r, c);
136 #endif 148 #endif
137 return elem (r, c);
138 } 149 }
139 150
140 // No checking. 151 // No checking.
141 152
142 T xelem (octave_idx_type r, octave_idx_type c) const 153 T xelem (octave_idx_type r, octave_idx_type c) const
164 175
165 T *fortran_vec (void) { return Array<T>::fortran_vec (); } 176 T *fortran_vec (void) { return Array<T>::fortran_vec (); }
166 177
167 void print_info (std::ostream& os, const std::string& prefix) const 178 void print_info (std::ostream& os, const std::string& prefix) const
168 { Array<T>::print_info (os, prefix); } 179 { Array<T>::print_info (os, prefix); }
180
181 private:
182
183 bool check_idx (octave_idx_type r, octave_idx_type c) const;
169 }; 184 };
170 185
171 #endif 186 #endif