Mercurial > octave
diff libinterp/octave-value/ov-cell.cc @ 23481:73558a835b64
eliminate lvalue list arguments from evaluator functions
* ov.cc, ov.h, ov-base.cc, ov-base.h, ov-builtin.cc, ov-builtin.h,
ov-cell.cc, ov-cell.h, ov-fcn-handle.cc, ov-fcn-handle.h,
ov-usr-fcn.cc, ov-usr-fcn.h: Eliminate lvalue_list arguments from
subsref, next_subsref, and do_multi_index_op methods. Change all
callers.
* pt-eval.cc, pt-eval.h (tree_evaluator::ignored_fcn_outputs):
New function.
* ov-usr-fcn.h, ov-usr-fcn.cc
(octave_user_function::bind_automatic_vars): Get list of ignored
output arguments from evaluator.
* pt-eval.cc, pt-eval.h (tree_evaluator::visit_simple_assignment,
tree_evaluator::visit_multi_assignment): Push lvalue list on stack
here, not in tree_evaluator::evaluate or tree_evaluator::evaluate_n.
Use unwind_protect frame to pop from stack. Don't pass lvalue list to
evaluate or evaluate_n functions.
* pt-arg-list.cc, pt-arg-list.h (tree_argument_list::lvalue_list):
Delete.
* pt-eval.cc, pt-eval.h (tree_evaluator::make_lvalue_list):
New function.
(tree_evaluator::visit_multi_assignment): Use it instead of
tree_argument_list::lvalue_list.
* ov-builtin.cc, ov-builtin.h (octave_builtin::curr_lvalue_list):
Delete data member and all uses.
* defun.cc (defun_isargout): Get current lvalue_list from evaluator.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 May 2017 11:09:52 -0400 |
parents | f267a982478f |
children | e95738a119da |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-cell.cc Wed May 10 15:04:28 2017 +0200 +++ b/libinterp/octave-value/ov-cell.cc Wed May 10 11:09:52 2017 -0400 @@ -131,8 +131,7 @@ octave_value_list octave_cell::subsref (const std::string& type, const std::list<octave_value_list>& idx, - int nargout, - const std::list<octave_lvalue> *lvalue_list) + int nargout) { octave_value_list retval; @@ -174,9 +173,7 @@ // octave_user_function::subsref. if (idx.size () > 1) - retval = (lvalue_list - ? retval(0).next_subsref (nargout, type, idx, lvalue_list) - : retval(0).next_subsref (nargout, type, idx)); + retval = retval(0).next_subsref (nargout, type, idx); return retval; }