Mercurial > octave
diff libinterp/octave-value/ov.cc @ 16091:1785493171ac
pass lvalue_list to more subsref calls (bug #38374)
* pt-id.h, pt-id.cc (tree_identifier::rvalue): Handle lvalue_list.
* ov-cell.h, ov-cell.cc (octave_cell::subsref): Likewise.
* ov.h, ov.cc (octave_value::next_subsref): Likewise.
* ov-usr-fcn.cc (octave_usr_function::do_multi_index_op):
Forward lvalue_list to rvalue call for special expression.
(Fisargout): New tests.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 22 Feb 2013 19:01:10 -0500 |
parents | e665645fb402 |
children | 0259254a3ccc e769440b39db |
line wrap: on
line diff
--- a/libinterp/octave-value/ov.cc Fri Feb 22 11:22:21 2013 -0500 +++ b/libinterp/octave-value/ov.cc Fri Feb 22 19:01:10 2013 -0500 @@ -1312,6 +1312,23 @@ return *this; } +octave_value_list +octave_value::next_subsref (int nargout, const std::string& type, + const std::list<octave_value_list>& idx, + const std::list<octave_lvalue> *lvalue_list, + size_t skip) +{ + if (! error_state && idx.size () > skip) + { + std::list<octave_value_list> new_idx (idx); + for (size_t i = 0; i < skip; i++) + new_idx.erase (new_idx.begin ()); + return subsref (type.substr (skip), new_idx, nargout, lvalue_list); + } + else + return *this; +} + octave_value octave_value::next_subsref (bool auto_add, const std::string& type, const std::list<octave_value_list>& idx,