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