Mercurial > hg > octave-nkf
diff src/pt-arg-list.cc @ 3977:95663a3a2682
[project @ 2002-07-05 17:43:37 by jwe]
author | jwe |
---|---|
date | Fri, 05 Jul 2002 17:43:38 +0000 |
parents | d14c483b3c12 |
children | b79da8779a0e |
line wrap: on
line diff
--- a/src/pt-arg-list.cc +++ b/src/pt-arg-list.cc @@ -55,6 +55,25 @@ } } +int +tree_argument_list::nargout_count (void) const +{ + int retval = 0; + + for (Pix p = first (); p != 0; next (p)) + { + tree_expression *elt = this->operator () (p); + + // XXX FIXME XXX -- need to be able to determine whether elt is + // an expression that could evaluate to a cs-list object, and if + // so, how many elements are in that list. Ugly! + + retval++; + } + + return retval; +} + bool tree_argument_list::all_elements_are_constant (void) const { @@ -79,7 +98,8 @@ // token. octave_value_list args; - args.resize (len); + int args_len = len; + args.resize (args_len); Pix p = first (); int j = 0; @@ -106,6 +126,8 @@ octave_value_list tva; tva = curr_function->octave_all_va_args (); int n = tva.length (); + args_len += n - 1; + args.resize (args_len); for (int i = 0; i < n; i++) args(j++) = tva(i); } @@ -116,6 +138,15 @@ break; } } + else if (tmp.is_cs_list ()) + { + octave_value_list tl = tmp.list_value (); + int n = tl.length (); + args_len += n - 1; + args.resize (args_len); + for (int i = 0; i < n; i++) + args(j++) = tl(i); + } else args(j++) = tmp; }