# HG changeset patch # User jwe # Date 1095294703 0 # Node ID 6690d8cd9beec8fb9701614d646bb1586696b281 # Parent 9a7ec88c8b5ef71a28bfd8c454949eec46f471b3 [project @ 2004-09-16 00:31:42 by jwe] diff -r 9a7ec88c8b5e -r 6690d8cd9bee src/ChangeLog --- a/src/ChangeLog Wed Sep 15 22:03:24 2004 +0000 +++ b/src/ChangeLog Thu Sep 16 00:31:43 2004 +0000 @@ -1,5 +1,8 @@ 2004-09-15 John W. Eaton + * ov.cc (octave_value::assign): Handle subsref for containers. + * oct-lvalue.cc (octave_lvale::value): Likewise. + * DLD-FUNCTIONS/sort.cc (mx_sort): Return octave_value, not octave_value list. diff -r 9a7ec88c8b5e -r 6690d8cd9bee src/DLD-FUNCTIONS/sort.cc --- a/src/DLD-FUNCTIONS/sort.cc Wed Sep 15 22:03:24 2004 +0000 +++ b/src/DLD-FUNCTIONS/sort.cc Thu Sep 16 00:31:43 2004 +0000 @@ -653,7 +653,7 @@ int nargin = args.length (); sortmode smode = ASCENDING; - if (nargin < 1 && nargin > 3) + if (nargin < 1 || nargin > 3) { print_usage ("sort"); return retval; diff -r 9a7ec88c8b5e -r 6690d8cd9bee src/oct-lvalue.cc --- a/src/oct-lvalue.cc Wed Sep 15 22:03:24 2004 +0000 +++ b/src/oct-lvalue.cc Thu Sep 16 00:31:43 2004 +0000 @@ -65,6 +65,28 @@ *val = tmp; } +octave_value +octave_lvalue::value (void) +{ + octave_value retval; + + if (idx.empty ()) + retval = *val; + else + { + if (val->is_constant ()) + retval = val->subsref (type, idx); + else + { + octave_value_list t = val->subsref (type, idx, 1); + if (t.length () > 0) + retval = t(0); + } + } + + return retval; +} + /* ;;; Local Variables: *** ;;; mode: C++ *** diff -r 9a7ec88c8b5e -r 6690d8cd9bee src/oct-lvalue.h --- a/src/oct-lvalue.h Wed Sep 15 22:03:24 2004 +0000 +++ b/src/oct-lvalue.h Thu Sep 16 00:31:43 2004 +0000 @@ -82,8 +82,7 @@ void do_unary_op (octave_value::unary_op op); - octave_value value (void) - { return idx.empty () ? *val : val->subsref (type, idx); } + octave_value value (void); const octave_value *object (void) const { return val; } diff -r 9a7ec88c8b5e -r 6690d8cd9bee src/ov.cc --- a/src/ov.cc Wed Sep 15 22:03:24 2004 +0000 +++ b/src/ov.cc Thu Sep 16 00:31:43 2004 +0000 @@ -926,7 +926,15 @@ // a specific function to call to handle the op= operation for // the types we have. - octave_value t = subsref (type, idx); + octave_value t; + if (is_constant ()) + t = subsref (type, idx); + else + { + octave_value_list tl = subsref (type, idx, 1); + if (tl.length () > 0) + t = tl(0); + } if (! error_state) { diff -r 9a7ec88c8b5e -r 6690d8cd9bee test/octave.test/matrix/sort-3.m --- a/test/octave.test/matrix/sort-3.m Wed Sep 15 22:03:24 2004 +0000 +++ b/test/octave.test/matrix/sort-3.m Thu Sep 16 00:31:43 2004 +0000 @@ -1,1 +1,1 @@ -sort (1, 2, 3) +sort (1, 2, 3, 4)