Mercurial > octave
changeset 32125:fc5a9a9e5cea
new set_nargin and set_nargout functions for evaluator
* pt-eval.h, pt-eval.cc (tree_evaluator::set_nargin,
tree_evaluator::set_nargout): New functions.
* call-stack.h, call-stack.cc (call_stack::set_nargin,
call_stack::set_nargout): New functions.
* stack-frame.h (stack_frame::set_nargin, stack_frame::set_nargout):
New virtual functions.
author | Petter T. <petter.vilhelm@gmail.com> |
---|---|
date | Thu, 15 Jun 2023 10:53:23 -0400 |
parents | 1006c3c6d827 |
children | b1e1830e2cff |
files | libinterp/corefcn/call-stack.cc libinterp/corefcn/call-stack.h libinterp/corefcn/stack-frame.h libinterp/parse-tree/pt-eval.cc libinterp/parse-tree/pt-eval.h |
diffstat | 5 files changed, 33 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/call-stack.cc Thu Jun 15 10:51:50 2023 -0400 +++ b/libinterp/corefcn/call-stack.cc Thu Jun 15 10:53:23 2023 -0400 @@ -1131,6 +1131,18 @@ m_cs[m_curr_frame]->set_auto_fcn_var (avt, val); } +void +call_stack::set_nargin (int nargin) +{ + m_cs[m_curr_frame]->set_nargin (nargin); +} + +void +call_stack::set_nargout (int nargout) +{ + m_cs[m_curr_frame]->set_nargout (nargout); +} + octave_value call_stack::get_auto_fcn_var (stack_frame::auto_var_type avt) const { return m_cs[m_curr_frame]->get_auto_fcn_var (avt);
--- a/libinterp/corefcn/call-stack.h Thu Jun 15 10:51:50 2023 -0400 +++ b/libinterp/corefcn/call-stack.h Thu Jun 15 10:53:23 2023 -0400 @@ -299,6 +299,9 @@ void set_auto_fcn_var (stack_frame::auto_var_type avt, const octave_value& val); + void set_nargin (int nargin); + void set_nargout (int nargout); + octave_value get_auto_fcn_var (stack_frame::auto_var_type avt) const; private:
--- a/libinterp/corefcn/stack-frame.h Thu Jun 15 10:51:50 2023 -0400 +++ b/libinterp/corefcn/stack-frame.h Thu Jun 15 10:53:23 2023 -0400 @@ -427,6 +427,9 @@ virtual void set_auto_fcn_var (auto_var_type, const octave_value&) = 0; + virtual void set_nargin (int nargin) { set_auto_fcn_var (NARGIN, nargin); } + virtual void set_nargout (int nargout) { set_auto_fcn_var (NARGOUT, nargout); } + virtual octave_value varval (const symbol_record& sym) const = 0; virtual octave_value varval (std::size_t data_offset) const;
--- a/libinterp/parse-tree/pt-eval.cc Thu Jun 15 10:51:50 2023 -0400 +++ b/libinterp/parse-tree/pt-eval.cc Thu Jun 15 10:53:23 2023 -0400 @@ -2180,6 +2180,18 @@ m_call_stack.set_auto_fcn_var (avt, val); } +void +tree_evaluator::set_nargin (int nargin) +{ + m_call_stack.set_nargin (nargin); +} + +void +tree_evaluator::set_nargout (int nargout) +{ + m_call_stack.set_nargout (nargout); +} + octave_value tree_evaluator::get_auto_fcn_var (stack_frame::auto_var_type avt) const {
--- a/libinterp/parse-tree/pt-eval.h Thu Jun 15 10:51:50 2023 -0400 +++ b/libinterp/parse-tree/pt-eval.h Thu Jun 15 10:53:23 2023 -0400 @@ -395,6 +395,9 @@ void set_auto_fcn_var (stack_frame::auto_var_type avt, const octave_value& val = octave_value ()); + void set_nargin (int nargin); + void set_nargout (int nargout); + octave_value get_auto_fcn_var (stack_frame::auto_var_type avt) const; void define_parameter_list_from_arg_vector