Mercurial > hg > octave-lyh
diff liboctave/Array.cc @ 10370:9c4daf174387
implement IDs for common liboctave exceptions
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Sun, 28 Feb 2010 08:19:49 +0100 |
parents | e5ae13b8b2c2 |
children | 0677c5d80b77 |
line wrap: on
line diff
--- a/liboctave/Array.cc +++ b/liboctave/Array.cc @@ -209,7 +209,9 @@ T& Array<T>::checkelem (octave_idx_type n) { - if (n < 0 || n >= slice_len) + if (n < 0) + gripe_invalid_index (); + if (n >= slice_len) gripe_index_out_of_range (1, 1, n+1, slice_len); return elem (n); @@ -219,9 +221,11 @@ T& Array<T>::checkelem (octave_idx_type i, octave_idx_type j) { - if (i < 0 || i >= dim1 ()) + if (i < 0 || j < 0) + gripe_invalid_index (); + if (i >= dim1 ()) gripe_index_out_of_range (2, 1, i+1, dim1 ()); - if (j < 0 || j >= dimensions.numel (1)) + if (j >= dimensions.numel (1)) gripe_index_out_of_range (2, 2, j+1, dimensions.numel (1)); return elem (i, j); @@ -231,11 +235,13 @@ T& Array<T>::checkelem (octave_idx_type i, octave_idx_type j, octave_idx_type k) { - if (i < 0 || i >= dim1 ()) + if (i < 0 || j < 0 || k < 0) + gripe_invalid_index (); + if (i >= dim1 ()) gripe_index_out_of_range (3, 1, i+1, dim1 ()); - if (j < 0 || j >= dim2 ()) + if (j >= dim2 ()) gripe_index_out_of_range (3, 2, j+1, dim2 ()); - if (k < 0 || k >= dimensions.numel (2)) + if (k >= dimensions.numel (2)) gripe_index_out_of_range (3, 3, k+1, dimensions.numel (2)); return elem (i, j, k); @@ -248,8 +254,12 @@ int nd = ra_idx.length (); const dim_vector dv = dimensions.redim (nd); for (int d = 0; d < nd; d++) - if (ra_idx(d) < 0 || ra_idx(d) >= dv(d)) - gripe_index_out_of_range (nd, d+1, ra_idx(d)+1, dv(d)); + { + if (ra_idx(d) < 0) + gripe_invalid_index (); + if (ra_idx(d) >= dv(d)) + gripe_index_out_of_range (nd, d+1, ra_idx(d)+1, dv(d)); + } return elem (ra_idx); } @@ -258,7 +268,9 @@ typename Array<T>::crefT Array<T>::checkelem (octave_idx_type n) const { - if (n < 0 || n >= slice_len) + if (n < 0) + gripe_invalid_index (); + if (n >= slice_len) gripe_index_out_of_range (1, 1, n+1, slice_len); return elem (n); @@ -268,9 +280,11 @@ typename Array<T>::crefT Array<T>::checkelem (octave_idx_type i, octave_idx_type j) const { - if (i < 0 || i >= dim1 ()) + if (i < 0 || j < 0) + gripe_invalid_index (); + if (i >= dim1 ()) gripe_index_out_of_range (2, 1, i+1, dim1 ()); - if (j < 0 || j >= dimensions.numel (1)) + if (j >= dimensions.numel (1)) gripe_index_out_of_range (2, 2, j+1, dimensions.numel (1)); return elem (i, j); @@ -280,11 +294,13 @@ typename Array<T>::crefT Array<T>::checkelem (octave_idx_type i, octave_idx_type j, octave_idx_type k) const { - if (i < 0 || i >= dim1 ()) + if (i < 0 || j < 0 || k < 0) + gripe_invalid_index (); + if (i >= dim1 ()) gripe_index_out_of_range (3, 1, i+1, dim1 ()); - if (j < 0 || j >= dim2 ()) + if (j >= dim2 ()) gripe_index_out_of_range (3, 2, j+1, dim2 ()); - if (k < 0 || k >= dimensions.numel (2)) + if (k >= dimensions.numel (2)) gripe_index_out_of_range (3, 3, k+1, dimensions.numel (2)); return elem (i, j, k); @@ -297,8 +313,12 @@ int nd = ra_idx.length (); const dim_vector dv = dimensions.redim (nd); for (int d = 0; d < nd; d++) - if (ra_idx(d) < 0 || ra_idx(d) >= dv(d)) - gripe_index_out_of_range (nd, d+1, ra_idx(d)+1, dv(d)); + { + if (ra_idx(d) < 0) + gripe_invalid_index (); + if (ra_idx(d) >= dv(d)) + gripe_index_out_of_range (nd, d+1, ra_idx(d)+1, dv(d)); + } return elem (ra_idx); }