# HG changeset patch # User jwe # Date 1091565934 0 # Node ID 585e9a8c2ef85fea96bfe4f13487d7f831b39cb2 # Parent 1cf16fb3459a2febd30a5d301a0b9e5f1544ac57 [project @ 2004-08-03 20:45:34 by jwe] diff -r 1cf16fb3459a -r 585e9a8c2ef8 liboctave/Array.cc --- 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 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 (); diff -r 1cf16fb3459a -r 585e9a8c2ef8 liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Aug 03 19:00:24 2004 +0000 +++ b/liboctave/ChangeLog Tue Aug 03 20:45:34 2004 +0000 @@ -1,3 +1,9 @@ +2004-08-03 John W. Eaton + + * Array.cc (Array::squeeze): Do nothing for 2-d arrays. For + arrays with more than two dimensions and only one non-singleton + dimension, return a column vector. + 2004-07-28 John W. Eaton * oct-cmplx.h (pow (const Complex&, const double&): diff -r 1cf16fb3459a -r 585e9a8c2ef8 src/ChangeLog --- a/src/ChangeLog Tue Aug 03 19:00:24 2004 +0000 +++ b/src/ChangeLog Tue Aug 03 20:45:34 2004 +0000 @@ -1,5 +1,11 @@ 2004-08-03 John W. Eaton + * ov-usr-fcn.cc (octave_user_fcn::do_multi_index_op): Call + install_automatic_vars here. + (octave_user_fcn::octave_user_fcn): Not here. + (install_automatic_vars): Don't mark argn_sr, nargin_sr, + nargout_sr, or varargin_sr as static. + * oct-stream.cc (octave_scan): Avoid need for pushing two characters back on the input stream. diff -r 1cf16fb3459a -r 585e9a8c2ef8 src/ov-usr-fcn.cc --- a/src/ov-usr-fcn.cc Tue Aug 03 19:00:24 2004 +0000 +++ b/src/ov-usr-fcn.cc Tue Aug 03 20:45:34 2004 +0000 @@ -79,8 +79,6 @@ curr_va_arg_number (0), vr_list (0), symtab_entry (0), argn_sr (0), nargin_sr (0), nargout_sr (0), varargin_sr (0) { - install_automatic_vars (); - if (param_list) { num_named_args = param_list->length (); @@ -379,6 +377,8 @@ if (vr_list) vr_list->clear (); + install_automatic_vars (); + // Force symbols to be undefined again when this function exits. unwind_protect::add (clear_symbol_table, sym_tab); @@ -556,15 +556,8 @@ nargin_sr = sym_tab->lookup ("__nargin__", true); nargout_sr = sym_tab->lookup ("__nargout__", true); - argn_sr->mark_as_static (); - nargin_sr->mark_as_static (); - nargout_sr->mark_as_static (); - if (takes_varargs ()) - { - varargin_sr = sym_tab->lookup ("varargin", true); - varargin_sr->mark_as_static (); - } + varargin_sr = sym_tab->lookup ("varargin", true); } }