Mercurial > hg > octave-lyh
comparison liboctave/Array.cc @ 10075:84b0725f4b09
return class types by reference in const Array element access functions
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 08 Jan 2010 11:25:08 +0100 |
parents | bb30843c4929 |
children | eb8ac0eed9f1 |
comparison
equal
deleted
inserted
replaced
10074:5e2b4b7967cc | 10075:84b0725f4b09 |
---|---|
186 | 186 |
187 return retval; | 187 return retval; |
188 } | 188 } |
189 | 189 |
190 template <class T> | 190 template <class T> |
191 T | 191 T& |
192 Array<T>::range_error (const char *fcn, octave_idx_type n) const | 192 Array<T>::range_error (const char *fcn, octave_idx_type n) const |
193 { | |
194 (*current_liboctave_error_handler) ("%s (%d): range error", fcn, n); | |
195 return T (); | |
196 } | |
197 | |
198 template <class T> | |
199 T& | |
200 Array<T>::range_error (const char *fcn, octave_idx_type n) | |
201 { | 193 { |
202 (*current_liboctave_error_handler) ("%s (%d): range error", fcn, n); | 194 (*current_liboctave_error_handler) ("%s (%d): range error", fcn, n); |
203 static T foo; | 195 static T foo; |
204 return foo; | 196 return foo; |
205 } | 197 } |
206 | 198 |
207 template <class T> | 199 template <class T> |
208 T | 200 T& |
209 Array<T>::range_error (const char *fcn, octave_idx_type i, octave_idx_type j) const | 201 Array<T>::range_error (const char *fcn, octave_idx_type i, octave_idx_type j) const |
210 { | |
211 (*current_liboctave_error_handler) | |
212 ("%s (%d, %d): range error", fcn, i, j); | |
213 return T (); | |
214 } | |
215 | |
216 template <class T> | |
217 T& | |
218 Array<T>::range_error (const char *fcn, octave_idx_type i, octave_idx_type j) | |
219 { | 202 { |
220 (*current_liboctave_error_handler) | 203 (*current_liboctave_error_handler) |
221 ("%s (%d, %d): range error", fcn, i, j); | 204 ("%s (%d, %d): range error", fcn, i, j); |
222 static T foo; | 205 static T foo; |
223 return foo; | 206 return foo; |
224 } | 207 } |
225 | 208 |
226 template <class T> | 209 template <class T> |
227 T | 210 T& |
228 Array<T>::range_error (const char *fcn, octave_idx_type i, octave_idx_type j, octave_idx_type k) const | 211 Array<T>::range_error (const char *fcn, octave_idx_type i, octave_idx_type j, octave_idx_type k) const |
229 { | |
230 (*current_liboctave_error_handler) | |
231 ("%s (%d, %d, %d): range error", fcn, i, j, k); | |
232 return T (); | |
233 } | |
234 | |
235 template <class T> | |
236 T& | |
237 Array<T>::range_error (const char *fcn, octave_idx_type i, octave_idx_type j, octave_idx_type k) | |
238 { | 212 { |
239 (*current_liboctave_error_handler) | 213 (*current_liboctave_error_handler) |
240 ("%s (%d, %d, %d): range error", fcn, i, j, k); | 214 ("%s (%d, %d, %d): range error", fcn, i, j, k); |
241 static T foo; | 215 static T foo; |
242 return foo; | 216 return foo; |
243 } | 217 } |
244 | 218 |
245 template <class T> | 219 template <class T> |
246 T | 220 T& |
247 Array<T>::range_error (const char *fcn, const Array<octave_idx_type>& ra_idx) const | 221 Array<T>::range_error (const char *fcn, const Array<octave_idx_type>& ra_idx) const |
248 { | |
249 std::ostringstream buf; | |
250 | |
251 buf << fcn << " ("; | |
252 | |
253 octave_idx_type n = ra_idx.length (); | |
254 | |
255 if (n > 0) | |
256 buf << ra_idx(0); | |
257 | |
258 for (octave_idx_type i = 1; i < n; i++) | |
259 buf << ", " << ra_idx(i); | |
260 | |
261 buf << "): range error"; | |
262 | |
263 std::string buf_str = buf.str (); | |
264 | |
265 (*current_liboctave_error_handler) (buf_str.c_str ()); | |
266 | |
267 return T (); | |
268 } | |
269 | |
270 template <class T> | |
271 T& | |
272 Array<T>::range_error (const char *fcn, const Array<octave_idx_type>& ra_idx) | |
273 { | 222 { |
274 std::ostringstream buf; | 223 std::ostringstream buf; |
275 | 224 |
276 buf << fcn << " ("; | 225 buf << fcn << " ("; |
277 | 226 |