Mercurial > hg > octave-lyh
diff src/data.cc @ 9706:71160b139b07
simplify length,ndims,size and size_equal
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 08 Oct 2009 08:09:12 +0200 |
parents | 5acd99c3e794 |
children | 192d94cff6c1 |
line wrap: on
line diff
--- a/src/data.cc +++ b/src/data.cc @@ -2293,12 +2293,7 @@ octave_value retval; if (args.length () == 1) - { - int len = args(0).length (); - - if (! error_state) - retval = len; - } + retval = args(0).length (); else print_usage (); @@ -2316,12 +2311,7 @@ octave_value retval; if (args.length () == 1) - { - int n_dims = args(0).ndims (); - - if (! error_state) - retval = n_dims; - } + retval = args(0).ndims (); else print_usage (); @@ -2402,34 +2392,23 @@ if (nargin == 1) { - dim_vector dimensions = args(0).dims (); - - int ndims = dimensions.length (); - - Matrix m (1, ndims); + const dim_vector dimensions = args(0).dims (); if (nargout > 1) { - for (int i = nargout-1; i >= ndims; i--) - retval(i) = 1; - - if (ndims > nargout) - { - octave_idx_type d = 1; - - while (ndims >= nargout) - d *= dimensions(--ndims); - - retval(ndims) = d; - } - - while (ndims--) - retval(ndims) = dimensions(ndims); + const dim_vector rdims = dimensions.redim (nargout); + retval.resize (nargout); + for (int i = 0; i < nargout; i++) + retval(i) = rdims(i); } else { + int ndims = dimensions.length (); + + NoAlias<Matrix> m (1, ndims); + for (int i = 0; i < ndims; i++) - m(0, i) = dimensions(i); + m(i) = dimensions(i); retval(0) = m; } @@ -2442,7 +2421,7 @@ error ("size: expecting scalar as second argument"); else { - dim_vector dv = args(0).dims (); + const dim_vector dv = args(0).dims (); if (nd > 0) { @@ -2479,12 +2458,10 @@ retval = true; dim_vector a_dims = args(0).dims (); - a_dims.chop_trailing_singletons (); for (int i = 1; i < nargin; ++i) { dim_vector b_dims = args(i).dims (); - b_dims.chop_trailing_singletons (); if (a_dims != b_dims) {