Mercurial > octave
diff liboctave/Array.cc @ 4929:585e9a8c2ef8
[project @ 2004-08-03 20:45:34 by jwe]
author | jwe |
---|---|
date | Tue, 03 Aug 2004 20:45:34 +0000 |
parents | c45f14873b5e |
children | 8fa98abef34a |
line wrap: on
line diff
--- a/liboctave/Array.cc Tue Aug 03 19:00:24 2004 +0000 +++ b/liboctave/Array.cc Tue Aug 03 20:45:34 2004 +0000 @@ -71,50 +71,45 @@ { Array<T> retval = *this; - bool dims_changed = false; - - dim_vector new_dimensions = dimensions; - - int k = 0; - - for (int i = 0; i < ndims (); i++) + if (ndims () > 2) { - if (dimensions(i) == 1) - dims_changed = true; - else - new_dimensions(k++) = dimensions(i); - } - - if (dims_changed) - { - switch (k) + bool dims_changed = false; + + dim_vector new_dimensions = dimensions; + + int k = 0; + + for (int i = 0; i < ndims (); i++) { - case 0: - new_dimensions = dim_vector (1, 1); - break; - - case 1: - { - int tmp = new_dimensions(0); - - new_dimensions.resize (2); - - if (dimensions(0) == 1) + if (dimensions(i) == 1) + dims_changed = true; + else + new_dimensions(k++) = dimensions(i); + } + + if (dims_changed) + { + switch (k) + { + case 0: + new_dimensions = dim_vector (1, 1); + break; + + case 1: { - new_dimensions(0) = 1; - new_dimensions(1) = tmp; - } - else - { + int tmp = new_dimensions(0); + + new_dimensions.resize (2); + new_dimensions(0) = tmp; new_dimensions(1) = 1; } - } - break; - - default: - new_dimensions.resize (k); - break; + break; + + default: + new_dimensions.resize (k); + break; + } } retval.make_unique ();