# HG changeset patch # User jwe # Date 779984328 0 # Node ID 36ba0576bd1be95850bf8ea4025fd2784103ee02 # Parent 5f15ab42a631c1796764fb4da88969055d7be06a [project @ 1994-09-19 14:18:15 by jwe] diff -r 5f15ab42a631 -r 36ba0576bd1b src/balance.cc --- a/src/balance.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/balance.cc Mon Sep 19 14:18:48 1994 +0000 @@ -66,7 +66,7 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 4 || nargout < 0 || nargout > 4) + if (nargin < 1 || nargin > 3 || nargout < 0 || nargout > 4) { print_usage ("balance"); return retval; @@ -81,15 +81,15 @@ if (args(nargin-1).is_string ()) { bal_job = args(nargin-1).string_value (); - my_nargin = nargin-2; + my_nargin = nargin-1; } else { bal_job = "B"; - my_nargin = nargin-1; + my_nargin = nargin; } - tree_constant arg_a = args(1); + tree_constant arg_a = args(0); int a_nr = arg_a.rows (); int a_nc = arg_a.columns (); @@ -157,7 +157,7 @@ // 1st we have to check argument 2 dimensions and type... - tree_constant arg_b = args(2); + tree_constant arg_b = args(1); int b_nr = arg_b.rows (); int b_nc = arg_b.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/chol.cc --- a/src/chol.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/chol.cc Mon Sep 19 14:18:48 1994 +0000 @@ -41,13 +41,15 @@ { Octave_object retval; - if (args.length () != 2 || nargout > 1) + int nargin = args.length (); + + if (nargin != 1 || nargout > 1) { print_usage ("chol"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int nr = arg.rows (); int nc = arg.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/colloc.cc --- a/src/colloc.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/colloc.cc Mon Sep 19 14:18:48 1994 +0000 @@ -40,19 +40,19 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 4) + if (nargin < 1 || nargin > 3) { print_usage ("colloc"); return retval; } - if (! args(1).is_scalar_type ()) + if (! args(0).is_scalar_type ()) { error ("colloc: first argument must be a scalar"); return retval; } - double tmp = args(1).double_value (); + double tmp = args(0).double_value (); if (error_state) return retval; @@ -68,7 +68,7 @@ int left = 0; int right = 0; - for (int i = 2; i < nargin; i++) + for (int i = 1; i < nargin; i++) { if (args(i).is_defined ()) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/dassl.cc --- a/src/dassl.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/dassl.cc Mon Sep 19 14:18:48 1994 +0000 @@ -52,10 +52,8 @@ assert (nstates == xdot.capacity ()); -// tree_constant name (dassl_fcn->name ()); Octave_object args; - args(3) = t; -// args(0) = name; + args(2) = t; if (nstates > 1) { @@ -68,8 +66,8 @@ } tree_constant state (m1); tree_constant deriv (m2); - args(1) = state; - args(2) = deriv; + args(1) = deriv; + args(0) = state; } else { @@ -77,8 +75,8 @@ double d2 = xdot.elem (0); tree_constant state (d1); tree_constant deriv (d2); - args(1) = state; - args(2) = deriv; + args(1) = deriv; + args(0) = state; } if (dassl_fcn) @@ -120,17 +118,17 @@ int nargin = args.length (); - if (nargin < 5 || nargin > 6) + if (nargin < 4 || nargin > 5) { print_usage ("dassl"); return retval; } - dassl_fcn = is_valid_function (args(1), "dassl", 1); + dassl_fcn = is_valid_function (args(0), "dassl", 1); if (! dassl_fcn || takes_correct_nargs (dassl_fcn, 4, "dassl", 1) != 1) return retval; - ColumnVector state = args(2).vector_value (); + ColumnVector state = args(1).vector_value (); if (error_state) { @@ -138,7 +136,7 @@ return retval; } - ColumnVector deriv = args(3).vector_value (); + ColumnVector deriv = args(2).vector_value (); if (error_state) { @@ -146,7 +144,7 @@ return retval; } - ColumnVector out_times = args(4).vector_value (); + ColumnVector out_times = args(3).vector_value (); if (error_state) { @@ -156,9 +154,9 @@ ColumnVector crit_times; int crit_times_set = 0; - if (nargin > 5) + if (nargin > 4) { - crit_times = args(5).vector_value (); + crit_times = args(4).vector_value (); if (error_state) { @@ -305,18 +303,18 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { print_dassl_option_list (); return retval; } - else if (nargin == 3) + else if (nargin == 2) { - char *keyword = args(1).string_value (); + char *keyword = args(0).string_value (); if (! error_state) { - double val = args(2).double_value (); + double val = args(1).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/data.cc --- a/src/data.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/data.cc Mon Sep 19 14:18:48 1994 +0000 @@ -44,32 +44,32 @@ #define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif -DEFUN ("all", Fall, Sall, 2, 1, +DEFUN ("all", Fall, Sall, 1, 1, "all (X): are all elements of X nonzero?") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).all (); + else print_usage ("all"); - else if (nargin > 0 && args(1).is_defined ()) - retval = args(1).all (); return retval; } -DEFUN ("any", Fany, Sany, 2, 1, +DEFUN ("any", Fany, Sany, 1, 1, "any (X): are any elements of X nonzero?") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).any (); + else print_usage ("any"); - else if (nargin > 0 && args(1).is_defined ()) - retval = args(1).any (); return retval; } @@ -128,17 +128,17 @@ return retval; } -DEFUN ("atan2", Fatan2, Satan2, 3, 1, +DEFUN ("atan2", Fatan2, Satan2, 2, 1, "atan2 (Y, X): atan (Y / X) in range -pi to pi") { Octave_object retval; - if (args.length () != 3) - print_usage ("atan2"); - else + int nargin = args.length (); + + if (nargin == 2 && args(0).is_defined () && args(1).is_defined ()) { - tree_constant arg_y = args(1); - tree_constant arg_x = args(2); + tree_constant arg_y = args(0); + tree_constant arg_x = args(1); int y_nr = arg_y.rows (); int y_nc = arg_y.columns (); @@ -212,169 +212,162 @@ else error ("atan2: nonconformant matrices"); } + else + print_usage ("atan2"); return retval; } -DEFUN ("cumprod", Fcumprod, Scumprod, 2, 1, +DEFUN ("cumprod", Fcumprod, Scumprod, 1, 1, "cumprod (X): cumulative products") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).cumprod (); + else print_usage ("cumprod"); - else if (nargin > 0 && args(1).is_defined ()) - retval = args(1).cumprod (); return retval; } -DEFUN ("cumsum", Fcumsum, Scumsum, 2, 1, +DEFUN ("cumsum", Fcumsum, Scumsum, 1, 1, "cumsum (X): cumulative sums") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).cumsum (); + else print_usage ("cumsum"); - else if (nargin > 0 && args(1).is_defined ()) - retval = args(1).cumsum (); return retval; } -DEFUN ("diag", Fdiag, Sdiag, 3, 1, +DEFUN ("diag", Fdiag, Sdiag, 2, 1, "diag (X [,k]): form/extract diagonals") { Octave_object retval; int nargin = args.length (); - if (nargin == 2) - retval = args(1).diag (); - else if (nargin == 3) - retval = args(1).diag (args(2)); + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).diag (); + else if (nargin == 2 && args(0).is_defined () && args(1).is_defined ()) + retval = args(0).diag (args(1)); else print_usage ("diag"); return retval; } -DEFUN ("isstr", Fisstr, Sisstr, 2, 1, +DEFUN ("isstr", Fisstr, Sisstr, 1, 1, "isstr (X): return 1 if X is a string, 0 otherwise") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) - print_usage ("isstr"); + if (nargin == 1 && args(0).is_defined ()) + retval = (double) args(0).is_string (); else - { - if (nargin > 0 && args(1).is_defined ()) - retval = (double) args(1).is_string (); - } + print_usage ("isstr"); return retval; } -DEFUN ("prod", Fprod, Sprod, 2, 1, +DEFUN ("prod", Fprod, Sprod, 1, 1, "prod (X): products") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).prod (); + else print_usage ("prod"); - else if (nargin > 0 && args(1).is_defined ()) - retval = args(1).prod (); return retval; } -DEFUN ("setstr", Fsetstr, Ssetstr, 2, 1, +DEFUN ("setstr", Fsetstr, Ssetstr, 1, 1, "setstr (V): convert a vector to a string") { Octave_object retval; int nargin = args.length (); - if (nargin == 2) - retval = args(1).convert_to_str (); + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).convert_to_str (); else print_usage ("setstr"); return retval; } -DEFUN ("size", Fsize, Ssize, 2, 1, +DEFUN ("size", Fsize, Ssize, 1, 1, "[m, n] = size (x): return rows and columns of X") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) - print_usage ("size"); - else + if (nargin == 1 && args(0).is_defined ()) { - if (nargin > 0 && args(1).is_defined ()) + int nr = args(0).rows (); + int nc = args(0).columns (); + if (nargout == 0 || nargout == 1) { - int nr = args(1).rows (); - int nc = args(1).columns (); - if (nargout == 0 || nargout == 1) - { - Matrix m (1, 2); - m.elem (0, 0) = nr; - m.elem (0, 1) = nc; - retval = m; - } - else if (nargout == 2) - { - retval(1) = (double) nc; - retval(0) = (double) nr; - } - else - print_usage ("size"); + Matrix m (1, 2); + m.elem (0, 0) = nr; + m.elem (0, 1) = nc; + retval = m; } + else if (nargout == 2) + { + retval(1) = (double) nc; + retval(0) = (double) nr; + } + else + print_usage ("size"); } + else + print_usage ("size"); return retval; } -DEFUN ("sum", Fsum, Ssum, 2, 1, +DEFUN ("sum", Fsum, Ssum, 1, 1, "sum (X): sum of elements") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) - print_usage ("sum"); + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).sum (); else - { - if (nargin > 0 && args(1).is_defined ()) - retval = args(1).sum (); - } + print_usage ("sum"); return retval; } -DEFUN ("sumsq", Fsumsq, Ssumsq, 2, 1, +DEFUN ("sumsq", Fsumsq, Ssumsq, 1, 1, "sumsq (X): sum of squares of elements") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin == 1 && args(0).is_defined ()) + retval = args(0).sumsq (); + else print_usage ("sumsq"); - else if (nargin > 0 && args(1).is_defined ()) - retval = args(1).sumsq (); return retval; } @@ -468,7 +461,7 @@ return m; } -DEFUN ("ones", Fones, Sones, 3, 1, +DEFUN ("ones", Fones, Sones, 2, 1, "ones (N), ones (N, M), ones (X): create a matrix of all ones") { Octave_object retval; @@ -477,14 +470,14 @@ switch (nargin) { + case 0: + retval = 1.0; + break; case 1: - retval = 1.0; + retval = fill_matrix (args(0), 1.0, "ones"); break; case 2: - retval = fill_matrix (args(1), 1.0, "ones"); - break; - case 3: - retval = fill_matrix (args(1), args(2), 1.0, "ones"); + retval = fill_matrix (args(0), args(1), 1.0, "ones"); break; default: print_usage ("ones"); @@ -494,7 +487,7 @@ return retval; } -DEFUN ("zeros", Fzeros, Szeros, 3, 1, +DEFUN ("zeros", Fzeros, Szeros, 2, 1, "zeros (N), zeros (N, M), zeros (X): create a matrix of all zeros") { Octave_object retval; @@ -503,14 +496,14 @@ switch (nargin) { + case 0: + retval = 0.0; + break; case 1: - retval = 0.0; + retval = fill_matrix (args(0), 0.0, "zeros"); break; case 2: - retval = fill_matrix (args(1), 0.0, "zeros"); - break; - case 3: - retval = fill_matrix (args(1), args(2), 0.0, "zeros"); + retval = fill_matrix (args(0), args(1), 0.0, "zeros"); break; default: print_usage ("zeros"); @@ -562,7 +555,7 @@ return m; } -DEFUN ("eye", Feye, Seye, 3, 1, +DEFUN ("eye", Feye, Seye, 2, 1, "eye (N), eye (N, M), eye (X): create an identity matrix") { Octave_object retval; @@ -571,14 +564,14 @@ switch (nargin) { + case 0: + retval = 1.0; + break; case 1: - retval = 1.0; + retval = identity_matrix (args(0)); break; case 2: - retval = identity_matrix (args(1)); - break; - case 3: - retval = identity_matrix (args(1), args(2)); + retval = identity_matrix (args(0), args(1)); break; default: print_usage ("eye"); diff -r 5f15ab42a631 -r 36ba0576bd1b src/defun-int.h --- a/src/defun-int.h Sun Sep 18 23:34:35 1994 +0000 +++ b/src/defun-int.h Mon Sep 19 14:18:48 1994 +0000 @@ -92,7 +92,7 @@ // use them? #define DEFINE_ARGV(fcn_name) \ - int argc = args.length (); \ + int argc = args.length () + 1; \ int save_argc = argc; \ char **argv = make_argv (args, fcn_name); \ char **save_argv = argv; \ diff -r 5f15ab42a631 -r 36ba0576bd1b src/det.cc --- a/src/det.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/det.cc Mon Sep 19 14:18:48 1994 +0000 @@ -43,13 +43,13 @@ int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) { print_usage ("det"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int nr = arg.rows (); int nc = arg.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/eig.cc --- a/src/eig.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/eig.cc Mon Sep 19 14:18:48 1994 +0000 @@ -40,13 +40,15 @@ { Octave_object retval; - if (args.length () != 2 || nargout > 2) + int nargin = args.length (); + + if (nargin != 1 || nargout > 2) { print_usage ("eig"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int nr = arg.rows (); int nc = arg.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/error.cc --- a/src/error.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/error.cc Mon Sep 19 14:18:48 1994 +0000 @@ -134,7 +134,7 @@ abort (); } -DEFUN ("error", Ferror, Serror, 2, 1, +DEFUN ("error", Ferror, Serror, 1, 1, "error (MESSAGE): print MESSAGE and set the error state.\n\ This should eventually take us up to the top level, possibly\n\ printing traceback messages as we go.\n\ @@ -148,11 +148,11 @@ int nargin = args.length (); - if (nargin == 2 && args(1).is_defined ()) + if (nargin == 1 && args(0).is_defined ()) { - if (args(1).is_string ()) + if (args(0).is_string ()) { - msg = args(1).string_value (); + msg = args(0).string_value (); if (! msg || ! *msg) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/expm.cc --- a/src/expm.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/expm.cc Mon Sep 19 14:18:48 1994 +0000 @@ -60,13 +60,13 @@ int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) { print_usage ("expm"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); // Constants for matrix exponential calculation. diff -r 5f15ab42a631 -r 36ba0576bd1b src/fft.cc --- a/src/fft.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/fft.cc Mon Sep 19 14:18:48 1994 +0000 @@ -45,17 +45,17 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 3) + if (nargin < 1 || nargin > 2) { print_usage ("fft"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int n_points = arg.rows (); - if (nargin == 3) - n_points = NINT (args(2).double_value ()); + if (nargin == 2) + n_points = NINT (args(1).double_value ()); if (error_state) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/fft2.cc --- a/src/fft2.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/fft2.cc Mon Sep 19 14:18:48 1994 +0000 @@ -47,24 +47,24 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 4) + if (nargin < 1 || nargin > 3) { print_usage ("fft2"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int n_rows = arg.rows (); - if (nargin > 2) - n_rows = NINT (args(2).double_value ()); + if (nargin > 1) + n_rows = NINT (args(1).double_value ()); if (error_state) return retval; int n_cols = arg.columns (); - if (nargin > 3) - n_cols = NINT (args(3).double_value ()); + if (nargin > 2) + n_cols = NINT (args(2).double_value ()); if (error_state) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/file-io.cc --- a/src/file-io.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/file-io.cc Mon Sep 19 14:18:48 1994 +0000 @@ -280,14 +280,14 @@ return p; } -DEFUN ("fclose", Ffclose, Sfclose, 2, 1, +DEFUN ("fclose", Ffclose, Sfclose, 1, 1, "fclose (FILENAME or FILENUM): close a file") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("fclose"); else retval = fclose_internal (args); @@ -300,7 +300,7 @@ { Octave_object retval; - Pix p = return_valid_file (args(1)); + Pix p = return_valid_file (args(0)); if (! p) return retval; @@ -328,14 +328,14 @@ return retval; } -DEFUN ("fflush", Ffflush, Sfflush, 2, 1, +DEFUN ("fflush", Ffflush, Sfflush, 1, 1, "fflush (FILENAME or FILENUM): flush buffered data to output file") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("fflush"); else retval = fflush_internal (args); @@ -348,7 +348,7 @@ { Octave_object retval; - Pix p = return_valid_file (args(1)); + Pix p = return_valid_file (args(0)); if (! p) return retval; @@ -394,7 +394,7 @@ return 0; } -DEFUN ("fgets", Ffgets, Sfgets, 3, 2, +DEFUN ("fgets", Ffgets, Sfgets, 2, 2, "[STRING, LENGTH] = fgets (FILENAME or FILENUM, LENGTH)\n\ \n\ read a string from a file") @@ -403,7 +403,7 @@ int nargin = args.length (); - if (nargin != 3) + if (nargin != 2) print_usage ("fgets"); else retval = fgets_internal (args, nargout); @@ -416,13 +416,13 @@ { Octave_object retval; - Pix p = file_io_get_file (args(1), "r", "fgets"); + Pix p = file_io_get_file (args(0), "r", "fgets"); if (! p) return retval; - double dlen = args(2).double_value (); + double dlen = args(1).double_value (); if (error_state) return retval; @@ -454,7 +454,7 @@ return retval; } -DEFUN ("fopen", Ffopen, Sfopen, 3, 1, +DEFUN ("fopen", Ffopen, Sfopen, 2, 1, "FILENUM = fopen (FILENAME, MODE): open a file\n\ \n\ Valid values for mode include:\n\ @@ -471,7 +471,7 @@ int nargin = args.length (); - if (nargin != 3) + if (nargin != 2) print_usage ("fopen"); else retval = fopen_internal (args); @@ -485,13 +485,13 @@ Octave_object retval; Pix p; - if (! args(1).is_string ()) + if (! args(0).is_string ()) { error ("fopen: file name must be a string"); return retval; } - p = return_valid_file (args(1)); + p = return_valid_file (args(0)); if (p) { @@ -502,14 +502,14 @@ return retval; } - if (! args(2).is_string ()) + if (! args(1).is_string ()) { error ("fopen: file mode must be a string"); return retval; } - char *name = args(1).string_value (); - char *mode = args(2).string_value (); + char *name = args(0).string_value (); + char *mode = args(1).string_value (); if (! valid_mode (mode)) { @@ -542,14 +542,14 @@ return retval; } -DEFUN ("freport", Ffreport, Sfreport, 1, 1, +DEFUN ("freport", Ffreport, Sfreport, 0, 1, "freport (): list open files and their status") { Octave_object retval; int nargin = args.length (); - if (nargin > 1) + if (nargin > 0) warning ("freport: ignoring extra arguments"); retval = freport_internal (); @@ -580,14 +580,14 @@ return retval; } -DEFUN ("frewind", Ffrewind, Sfrewind, 2, 1, +DEFUN ("frewind", Ffrewind, Sfrewind, 1, 1, "frewind (FILENAME or FILENUM): set file position at beginning of file") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("frewind"); else retval = frewind_internal (args); @@ -600,7 +600,7 @@ { Octave_object retval; - Pix p = file_io_get_file (args(1), "a+", "frewind"); + Pix p = file_io_get_file (args(0), "a+", "frewind"); if (p) { @@ -611,7 +611,7 @@ return retval; } -DEFUN ("fseek", Ffseek, Sfseek, 4, 1, +DEFUN ("fseek", Ffseek, Sfseek, 3, 1, "fseek (FILENAME or FILENUM, OFFSET [, ORIGIN])\n\ \n\ set file position for reading or writing") @@ -620,7 +620,7 @@ int nargin = args.length (); - if (nargin != 3 && nargin != 4) + if (nargin != 2 && nargin != 3) print_usage ("fseek"); else retval = fseek_internal (args); @@ -635,14 +635,14 @@ int nargin = args.length (); - Pix p = file_io_get_file (args(1), "a+", "fseek"); + Pix p = file_io_get_file (args(0), "a+", "fseek"); if (! p) return retval; long origin = SEEK_SET; - double doff = args(2).double_value (); + double doff = args(1).double_value (); if (error_state) return retval; @@ -655,9 +655,9 @@ return retval; } - if (nargin == 4) + if (nargin == 3) { - double dorig = args(3).double_value (); + double dorig = args(2).double_value (); if (error_state) return retval; @@ -698,14 +698,14 @@ /* * Tell current position of file. */ -DEFUN ("ftell", Fftell, Sftell, 2, 1, +DEFUN ("ftell", Fftell, Sftell, 1, 1, "POSITION = ftell (FILENAME or FILENUM): returns the current file position") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("ftell"); else retval = ftell_internal (args); @@ -718,7 +718,7 @@ { Octave_object retval; - Pix p = file_io_get_file (args(1), "a+", "ftell"); + Pix p = file_io_get_file (args(0), "a+", "ftell"); if (p) { @@ -781,7 +781,7 @@ if (*s == '*') { - if (fmt_arg_count >= nargin) + if (fmt_arg_count > nargin) { error ("%s: not enough arguments", type); return -1; @@ -822,7 +822,7 @@ if (*(s-1) == '*') goto invalid_format; - if (fmt_arg_count >= nargin) + if (fmt_arg_count > nargin) { error ("%s: not enough arguments", type); return -1; @@ -861,7 +861,7 @@ if (*s == '\0') goto invalid_format; - if (fmt_arg_count >= nargin) + if (fmt_arg_count > nargin) { error ("%s: not enough arguments", type); return -1; @@ -963,7 +963,7 @@ int nargin = args.length (); - if (nargin < 3) + if (nargin < 2) print_usage ("fprintf"); else retval = do_printf ("fprintf", args, nargout); @@ -981,7 +981,7 @@ int nargin = args.length (); - if (nargin < 2) + if (nargin < 1) print_usage ("printf"); else retval = do_printf ("printf", args, nargout); @@ -999,7 +999,7 @@ int nargin = args.length (); - if (nargin < 2) + if (nargin < 1) print_usage ("sprintf"); else retval = do_printf ("sprintf", args, nargout); @@ -1011,13 +1011,13 @@ do_printf (const char *type, const Octave_object& args, int nargout) { Octave_object retval; - fmt_arg_count = 1; + fmt_arg_count = 0; char *fmt; file_info file; if (strcmp (type, "fprintf") == 0) { - Pix p = file_io_get_file (args(1), "a+", type); + Pix p = file_io_get_file (args(0), "a+", type); if (! p) return retval; @@ -1030,7 +1030,7 @@ return retval; } - fmt = args(2).string_value (); + fmt = args(1).string_value (); if (error_state) { @@ -1042,7 +1042,7 @@ } else { - fmt = args(1).string_value (); + fmt = args(0).string_value (); if (error_state) { @@ -1159,7 +1159,7 @@ // Even if we don't have a place to store them, attempt to convert // everything specified by the format string. - if (fmt_arg_count >= (nargout ? nargout : 1)) + if (fmt_arg_count > (nargout ? nargout : 1)) store_value = 0; switch (*s) @@ -1280,14 +1280,14 @@ /* * Formatted reading from a file. */ -DEFUN ("fscanf", Ffscanf, Sfscanf, 3, -1, +DEFUN ("fscanf", Ffscanf, Sfscanf, 2, -1, "[A, B, C, ...] = fscanf (FILENAME or FILENUM, FORMAT)") { Octave_object retval; int nargin = args.length (); - if (nargin != 2 && nargin != 3) + if (nargin != 1 && nargin != 2) print_usage ("fscanf"); else retval = do_scanf ("fscanf", args, nargout); @@ -1298,14 +1298,14 @@ /* * Formatted reading. */ -DEFUN ("scanf", Fscanf, Sscanf, 2, -1, +DEFUN ("scanf", Fscanf, Sscanf, 1, -1, "[A, B, C, ...] = scanf (FORMAT)") { Octave_object retval; int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("scanf"); else retval = do_scanf ("scanf", args, nargout); @@ -1316,14 +1316,14 @@ /* * Formatted reading from a string. */ -DEFUN ("sscanf", Fsscanf, Ssscanf, 3, -1, +DEFUN ("sscanf", Fsscanf, Ssscanf, 2, -1, "[A, B, C, ...] = sscanf (STRING, FORMAT)") { Octave_object retval; int nargin = args.length (); - if (nargin != 3) + if (nargin != 2) print_usage ("sscanf"); else retval = do_scanf ("sscanf", args, nargout); @@ -1345,7 +1345,7 @@ if (strcmp (type, "scanf") != 0) { - scanf_fmt = args(2).string_value (); + scanf_fmt = args(1).string_value (); if (error_state) { @@ -1358,7 +1358,7 @@ if (doing_fscanf) { - Pix p = file_io_get_file (args(1), "r", type); + Pix p = file_io_get_file (args(0), "r", type); if (! p) return retval; @@ -1374,13 +1374,13 @@ fptr = file.fptr (); } - if ((! fptr && args(1).is_string ()) + if ((! fptr && args(0).is_string ()) || (doing_fscanf && file.number () == 0)) { char *string; if (strcmp (type, "scanf") == 0) - scanf_fmt = args(1).string_value (); + scanf_fmt = args(0).string_value (); if (strcmp (type, "scanf") == 0 || (doing_fscanf && file.number () == 0)) @@ -1390,7 +1390,7 @@ maybe_save_history (string); } else - string = args(1).string_value (); + string = args(0).string_value (); tmp_file = octave_tmp_file_name (); @@ -1510,7 +1510,7 @@ return len / size; } -DEFUN ("fread", Ffread, Sfread, 4, 2, +DEFUN ("fread", Ffread, Sfread, 3, 2, "[DATA, COUNT] = fread (FILENUM, SIZE, PRECISION)\n\ \n\ Reads data in binary form of type PRECISION from a file.\n\ @@ -1529,7 +1529,7 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 4) + if (nargin < 1 || nargin > 3) print_usage ("fread"); else retval = fread_internal (args, nargout); @@ -1567,16 +1567,16 @@ int nargin = args.length (); - Pix p = file_io_get_file (args(1), "r", "fread"); + Pix p = file_io_get_file (args(0), "r", "fread"); if (! p) return retval; // Get type and number of bytes per element to read. char *prec = "uchar"; - if (nargin > 3) + if (nargin > 2) { - prec = args(3).string_value (); + prec = args(2).string_value (); if (error_state) { @@ -1599,11 +1599,11 @@ int nr; int nc; - if (nargin > 2) + if (nargin > 1) { - if (args(2).is_scalar_type ()) + if (args(1).is_scalar_type ()) { - dnr = args(2).double_value (); + dnr = args(1).double_value (); if (error_state) return retval; @@ -1612,7 +1612,7 @@ } else { - ColumnVector tmp = args(2).vector_value (); + ColumnVector tmp = args(1).vector_value (); if (error_state || tmp.length () != 2) { @@ -1676,7 +1676,7 @@ return retval; } -DEFUN ("fwrite", Ffwrite, Sfwrite, 4, 1, +DEFUN ("fwrite", Ffwrite, Sfwrite, 3, 1, "COUNT = fwrite (FILENUM, DATA, PRECISION)\n\ \n\ Writes data to a file in binary form of size PRECISION\n\ @@ -1694,7 +1694,7 @@ int nargin = args.length (); - if (nargin < 3 || nargin > 4) + if (nargin < 2 || nargin > 3) print_usage ("fwrite"); else retval = fwrite_internal (args, nargout); @@ -1732,7 +1732,7 @@ // Get type and number of bytes per element to read. char *prec = "uchar"; - if (nargin > 3) + if (nargin > 2) { prec = args(3).string_value (); @@ -1757,7 +1757,7 @@ return retval; } -DEFUN ("feof", Ffeof, Sfeof, 2, 1, +DEFUN ("feof", Ffeof, Sfeof, 1, 1, "ERROR = feof (FILENAME or FILENUM)\n\ \n\ Returns a non zero value for an end of file condition for the\n\ @@ -1767,7 +1767,7 @@ int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("feof"); else retval = feof_internal (args, nargout); @@ -1801,7 +1801,7 @@ return retval; } -DEFUN ("ferror", Fferror, Sferror, 2, 1, +DEFUN ("ferror", Fferror, Sferror, 1, 1, "ERROR = ferror (FILENAME or FILENUM)\n\ \n\ Returns a non zero value for an error condition on the\n\ @@ -1811,7 +1811,7 @@ int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) print_usage ("ferror"); else retval = ferror_internal (args, nargout); @@ -1834,7 +1834,7 @@ Octave_object retval; // Get file info. - Pix p = return_valid_file (args(1)); + Pix p = return_valid_file (args(0)); if (! p) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/find.cc --- a/src/find.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/find.cc Mon Sep 19 14:18:48 1994 +0000 @@ -159,13 +159,13 @@ int nargin = args.length (); - if (nargin != 2 || nargout > 3) + if (nargin != 1 || nargout > 3) { print_usage ("find"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); if (arg.is_real_type ()) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/fsolve.cc --- a/src/fsolve.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/fsolve.cc Mon Sep 19 14:18:48 1994 +0000 @@ -84,10 +84,8 @@ int n = x.capacity (); -// tree_constant name = fsolve_fcn->name (); Octave_object args; - args.resize (2); -// args(0) = name; + args.resize (1); if (n > 1) { @@ -95,13 +93,13 @@ for (int i = 0; i < n; i++) m (i, 0) = x.elem (i); tree_constant vars (m); - args(1) = vars; + args(0) = vars; } else { double d = x.elem (0); tree_constant vars (d); - args(1) = vars; + args(0) = vars; } if (fsolve_fcn) @@ -137,17 +135,17 @@ int nargin = args.length (); - if (nargin < 3 || nargin > 7 || nargout > 3) + if (nargin < 2 || nargin > 6 || nargout > 3) { print_usage ("fsolve"); return retval; } - fsolve_fcn = is_valid_function (args(1), "fsolve", 1); + fsolve_fcn = is_valid_function (args(0), "fsolve", 1); if (! fsolve_fcn || takes_correct_nargs (fsolve_fcn, 2, "fsolve", 1) != 1) return retval; - ColumnVector x = args(2).vector_value (); + ColumnVector x = args(1).vector_value (); if (error_state) { @@ -155,7 +153,7 @@ return retval; } - if (nargin > 3) + if (nargin > 2) warning ("fsolve: ignoring extra arguments"); if (nargout > 2) @@ -271,18 +269,18 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { print_fsolve_option_list (); return retval; } - else if (nargin == 3) + else if (nargin == 2) { - char *keyword = args(1).string_value (); + char *keyword = args(0).string_value (); if (! error_state) { - double val = args(2).double_value (); + double val = args(1).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/givens.cc --- a/src/givens.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/givens.cc Mon Sep 19 14:18:48 1994 +0000 @@ -57,14 +57,16 @@ { Octave_object retval; - if (args.length () != 3 || nargout > 2) + int nargin = args.length (); + + if (nargin != 2 || nargout > 2) { print_usage ("givens"); return retval; } - tree_constant arg_a = args(1); - tree_constant arg_b = args(2); + tree_constant arg_a = args(0); + tree_constant arg_b = args(1); if (! arg_a.is_scalar_type () && arg_b.is_scalar_type ()) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/hess.cc --- a/src/hess.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/hess.cc Mon Sep 19 14:18:48 1994 +0000 @@ -41,13 +41,15 @@ { Octave_object retval; - if (args.length () != 2 || nargout > 2) + int nargin = args.length (); + + if (nargin != 1 || nargout > 2) { print_usage ("hess"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int nr = arg.rows (); int nc = arg.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/ifft.cc --- a/src/ifft.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/ifft.cc Mon Sep 19 14:18:48 1994 +0000 @@ -45,17 +45,17 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 3) + if (nargin < 1 || nargin > 2) { print_usage ("ifft"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int n_points = arg.rows (); - if (nargin == 3) - n_points = NINT (args(2).double_value ()); + if (nargin == 2) + n_points = NINT (args(1).double_value ()); if (error_state) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/ifft2.cc --- a/src/ifft2.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/ifft2.cc Mon Sep 19 14:18:48 1994 +0000 @@ -47,24 +47,24 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 4) + if (nargin < 1 || nargin > 3) { print_usage ("ifft2"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int n_rows = arg.rows (); - if (nargin > 2) - n_rows = NINT (args(2).double_value ()); + if (nargin > 1) + n_rows = NINT (args(1).double_value ()); if (error_state) return retval; int n_cols = arg.columns (); - if (nargin > 3) - n_cols = NINT (args(3).double_value ()); + if (nargin > 2) + n_cols = NINT (args(2).double_value ()); if (error_state) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/input.cc --- a/src/input.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/input.cc Mon Sep 19 14:18:48 1994 +0000 @@ -757,13 +757,13 @@ int read_as_string = 0; - if (nargin == 3) + if (nargin == 2) read_as_string++; char *prompt = "debug> "; - if (nargin > 1) + if (nargin > 0) { - prompt = args(1).string_value (); + prompt = args(0).string_value (); if (error_state) { @@ -820,7 +820,7 @@ return retval; } -DEFUN ("input", Finput, Sinput, 3, 1, +DEFUN ("input", Finput, Sinput, 2, 1, "input (PROMPT [, S])\n\ \n\ Prompt user for input. If the second argument is present, return @@ -830,7 +830,7 @@ int nargin = args.length (); - if (nargin == 2 || nargin == 3) + if (nargin == 1 || nargin == 2) retval = get_user_input (args, nargout); else print_usage ("input"); @@ -838,7 +838,7 @@ return retval; } -DEFUN ("keyboard", Fkeyboard, Skeyboard, 2, 1, +DEFUN ("keyboard", Fkeyboard, Skeyboard, 1, 1, "keyboard (PROMPT)\n\ \n\ maybe help in debugging function files") @@ -847,7 +847,7 @@ int nargin = args.length (); - if (nargin == 1 || nargin == 2) + if (nargin == 0 || nargin == 1) retval = get_user_input (args, nargout, 1); else print_usage ("keyboard"); diff -r 5f15ab42a631 -r 36ba0576bd1b src/inv.cc --- a/src/inv.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/inv.cc Mon Sep 19 14:18:48 1994 +0000 @@ -43,13 +43,13 @@ int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) { print_usage ("inv"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int nr = arg.rows (); int nc = arg.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/log.cc --- a/src/log.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/log.cc Mon Sep 19 14:18:48 1994 +0000 @@ -42,13 +42,15 @@ { Octave_object retval; - if (args.length () != 2) + int nargin = args.length (); + + if (nargin != 1) { print_usage ("logm"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); if (empty_arg ("logm", arg.rows (), arg.columns ()) < 0) return retval; @@ -148,13 +150,15 @@ { Octave_object retval; - if (args.length () != 2) + int nargin = args.length (); + + if (nargin != 1) { print_usage ("sqrtm"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); if (empty_arg ("sqrtm", arg.rows (), arg.columns ())) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/lsode.cc --- a/src/lsode.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/lsode.cc Mon Sep 19 14:18:48 1994 +0000 @@ -50,10 +50,8 @@ int nstates = x.capacity (); -// tree_constant name (lsode_fcn->name ()); Octave_object args; - args(2) = t; -// args(0) = name; + args(1) = t; if (nstates > 1) { @@ -61,13 +59,13 @@ for (int i = 0; i < nstates; i++) m (i, 0) = x.elem (i); tree_constant state (m); - args(1) = state; + args(0) = state; } else { double d = x.elem (0); tree_constant state (d); - args(1) = state; + args(0) = state; } if (lsode_fcn) @@ -108,17 +106,17 @@ int nargin = args.length (); - if (nargin < 4 || nargin > 5 || nargout > 1) + if (nargin < 3 || nargin > 4 || nargout > 1) { print_usage ("lsode"); return retval; } - lsode_fcn = is_valid_function (args(1), "lsode", 1); + lsode_fcn = is_valid_function (args(0), "lsode", 1); if (! lsode_fcn || takes_correct_nargs (lsode_fcn, 3, "lsode", 1) != 1) return retval; - ColumnVector state = args(2).vector_value (); + ColumnVector state = args(1).vector_value (); if (error_state) { @@ -126,7 +124,7 @@ return retval; } - ColumnVector out_times = args(3).vector_value (); + ColumnVector out_times = args(2).vector_value (); if (error_state) { @@ -137,9 +135,9 @@ ColumnVector crit_times; int crit_times_set = 0; - if (nargin > 4) + if (nargin > 3) { - crit_times = args(4).vector_value (); + crit_times = args(3).vector_value (); if (error_state) { @@ -286,18 +284,18 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { print_lsode_option_list (); return retval; } - else if (nargin == 3) + else if (nargin == 2) { - char *keyword = args(1).string_value (); + char *keyword = args(0).string_value (); if (! error_state) { - double val = args(2).double_value (); + double val = args(1).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/lu.cc --- a/src/lu.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/lu.cc Mon Sep 19 14:18:48 1994 +0000 @@ -40,13 +40,15 @@ { Octave_object retval; - if (args.length () != 2 || nargout > 3) + int nargin = args.length (); + + if (nargin != 1 || nargout > 3) { print_usage ("lu"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); int nr = arg.rows (); int nc = arg.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/minmax.cc --- a/src/minmax.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/minmax.cc Mon Sep 19 14:18:48 1994 +0000 @@ -150,7 +150,7 @@ int nargin = args.length (); - if (nargin == 1 || nargin > 3 || nargout > 2) + if (nargin < 1 || nargin > 2 || nargout > 2) { print_usage ("min"); return retval; @@ -161,18 +161,18 @@ switch (nargin) { - case 3: - arg2 = args(2); + case 2: + arg2 = args(1); // Fall through... - case 2: - arg1 = args(1); + case 1: + arg1 = args(0); break; default: panic_impossible (); break; } - if (nargin == 2 && (nargout == 1 || nargout == 0)) + if (nargin == 1 && (nargout == 1 || nargout == 0)) { if (arg1.is_real_scalar ()) { @@ -212,7 +212,7 @@ return retval; } } - else if (nargin == 2 && nargout == 2) + else if (nargin == 1 && nargout == 2) { if (arg1.is_real_scalar ()) { @@ -266,7 +266,7 @@ return retval; } } - else if (nargin == 3) + else if (nargin == 2) { if (arg1.rows () == arg2.rows () && arg1.columns () == arg2.columns ()) @@ -325,7 +325,7 @@ int nargin = args.length (); - if (nargin == 1 || nargin > 3 || nargout > 2) + if (nargin < 1 || nargin > 2 || nargout > 2) { print_usage ("max"); return retval; @@ -336,18 +336,18 @@ switch (nargin) { - case 3: - arg2 = args(2); + case 2: + arg2 = args(1); // Fall through... - case 2: - arg1 = args(1); + case 1: + arg1 = args(0); break; default: panic_impossible (); break; } - if (nargin == 2 && (nargout == 1 || nargout == 0)) + if (nargin == 1 && (nargout == 1 || nargout == 0)) { if (arg1.is_real_scalar ()) { @@ -379,7 +379,7 @@ return retval; } } - else if (nargin == 2 && nargout == 2) + else if (nargin == 1 && nargout == 2) { if (arg1.is_real_scalar ()) { @@ -425,7 +425,7 @@ return retval; } } - else if (nargin == 3) + else if (nargin == 2) { if (arg1.rows () == arg2.rows () && arg1.columns () == arg2.columns ()) diff -r 5f15ab42a631 -r 36ba0576bd1b src/npsol.cc --- a/src/npsol.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/npsol.cc Mon Sep 19 14:18:48 1994 +0000 @@ -289,14 +289,14 @@ int nargin = args.length (); - if (nargin < 3 || nargin == 4 || nargin == 7 || nargin == 10 - || nargin > 11 || nargout > 4) + if (nargin < 2 || nargin == 3 || nargin == 6 || nargin == 9 + || nargin > 10 || nargout > 4) { print_usage ("npsol"); return retval; } - ColumnVector x = args(1).vector_value (); + ColumnVector x = args(0).vector_value (); if (error_state || x.capacity () == 0) { @@ -304,7 +304,7 @@ return retval; } - npsol_objective = is_valid_function (args(2), "npsol", 1); + npsol_objective = is_valid_function (args(1), "npsol", 1); if (! npsol_objective || takes_correct_nargs (npsol_objective, 2, "npsol", 1) != 1) return retval; @@ -314,10 +314,10 @@ ColumnVector soln; Bounds bounds; - if (nargin == 5 || nargin == 8 || nargin == 11) + if (nargin == 4 || nargin == 7 || nargin == 10) { - ColumnVector lb = args(3).vector_value (); - ColumnVector ub = args(4).vector_value (); + ColumnVector lb = args(2).vector_value (); + ColumnVector ub = args(3).vector_value (); int lb_len = lb.capacity (); int ub_len = ub.capacity (); @@ -338,7 +338,7 @@ ColumnVector lambda; int inform; - if (nargin == 3) + if (nargin == 2) { // 1. npsol (x, phi) @@ -349,7 +349,7 @@ goto solved; } - if (nargin == 5) + if (nargin == 4) { // 2. npsol (x, phi, lb, ub) @@ -361,15 +361,15 @@ } npsol_constraints = 0; - if (nargin == 6 || nargin == 8 || nargin == 9 || nargin == 11) - npsol_constraints = is_valid_function (args(nargin-2), "npsol", 0); + if (nargin == 5 || nargin == 7 || nargin == 8 || nargin == 10) + npsol_constraints = is_valid_function (args(nargin-1), "npsol", 0); - if (nargin == 8 || nargin == 6) + if (nargin == 7 || nargin == 5) { if (! npsol_constraints) { - ColumnVector lub = args(nargin-1).vector_value (); - ColumnVector llb = args(nargin-3).vector_value (); + ColumnVector lub = args(nargin).vector_value (); + ColumnVector llb = args(nargin-2).vector_value (); if (error_state || llb.capacity () == 0 || lub.capacity () == 0) { @@ -377,7 +377,7 @@ return retval; } - Matrix c = args(nargin-2).matrix_value (); + Matrix c = args(nargin-1).matrix_value (); if (error_state) { @@ -390,7 +390,7 @@ LinConst linear_constraints (llb, c, lub); - if (nargin == 6) + if (nargin == 5) { // 7. npsol (x, phi, llb, c, lub) @@ -412,8 +412,8 @@ { if (takes_correct_nargs (npsol_constraints, 2, "npsol", 1)) { - ColumnVector nlub = args(nargin-1).vector_value (); - ColumnVector nllb = args(nargin-3).vector_value (); + ColumnVector nlub = args(nargin).vector_value (); + ColumnVector nllb = args(nargin-2).vector_value (); if (error_state || (! nonlinear_constraints_ok @@ -423,7 +423,7 @@ NLFunc const_func (npsol_constraint_function); NLConst nonlinear_constraints (nllb, const_func, nlub); - if (nargin == 6) + if (nargin == 5) { // 8. npsol (x, phi, nllb, g, nlub) @@ -444,19 +444,19 @@ } } - if (nargin == 9 || nargin == 11) + if (nargin == 8 || nargin == 10) { if (! npsol_constraints) { // Produce error message. - is_valid_function (args(nargin-2), "npsol", 1); + is_valid_function (args(nargin-1), "npsol", 1); } else { if (takes_correct_nargs (npsol_constraints, 2, "npsol", 1)) { - ColumnVector nlub = args(nargin-1).vector_value (); - ColumnVector nllb = args(nargin-3).vector_value (); + ColumnVector nlub = args(nargin).vector_value (); + ColumnVector nllb = args(nargin-2).vector_value (); if (error_state || (! nonlinear_constraints_ok @@ -466,8 +466,8 @@ NLFunc const_func (npsol_constraint_function); NLConst nonlinear_constraints (nllb, const_func, nlub); - ColumnVector lub = args(nargin-4).vector_value (); - ColumnVector llb = args(nargin-6).vector_value (); + ColumnVector lub = args(nargin-3).vector_value (); + ColumnVector llb = args(nargin-5).vector_value (); if (error_state || llb.capacity () == 0 || lub.capacity () == 0) { @@ -475,7 +475,7 @@ return retval; } - Matrix c = args(nargin-5).matrix_value (); + Matrix c = args(nargin-4).matrix_value (); if (error_state) { @@ -488,7 +488,7 @@ LinConst linear_constraints (llb, c, lub); - if (nargin == 9) + if (nargin == 8) { // 6. npsol (x, phi, llb, c, lub, nllb, g, nlub) @@ -768,18 +768,18 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { print_npsol_option_list (); return retval; } - else if (nargin == 3) + else if (nargin == 2) { - char *keyword = args(1).string_value (); + char *keyword = args(0).string_value (); if (! error_state) { - double val = args(2).double_value (); + double val = args(1).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/octave.cc --- a/src/octave.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/octave.cc Mon Sep 19 14:18:48 1994 +0000 @@ -627,7 +627,9 @@ { Octave_object retval; - if (args.length () != 1) + int nargin = args.length (); + + if (nargin != 0) warning ("computer: ignoring extra arguments"); ostrstream output_buf; @@ -652,12 +654,12 @@ return retval; } -DEFUN ("flops", Fflops, Sflops, 2, 1, +DEFUN ("flops", Fflops, Sflops, 0, 1, "flops (): count floating point operations") { int nargin = args.length (); - if (nargin > 2) + if (nargin > 0) print_usage ("flops"); warning ("flops is a flop, always returning zero"); @@ -665,7 +667,7 @@ return 0.0; } -DEFUN ("quit", Fquit, Squit, 1, 0, +DEFUN ("quit", Fquit, Squit, 0, 0, "quit (): exit Octave gracefully") { Octave_object retval; @@ -676,7 +678,7 @@ DEFALIAS (exit, quit); -DEFUN ("warranty", Fwarranty, Swarranty, 1, 0, +DEFUN ("warranty", Fwarranty, Swarranty, 0, 0, "warranty (): describe copying conditions") { Octave_object retval; @@ -713,13 +715,13 @@ { Octave_object retval; - tree_fvc *fcn = is_valid_function (args(1), "feval", 1); + tree_fvc *fcn = is_valid_function (args(0), "feval", 1); if (fcn) { - int nargin = args.length () - 1; + int tmp_nargin = args.length () - 1; Octave_object tmp_args; - tmp_args.resize (nargin); - for (int i = 0; i < nargin; i++) + tmp_args.resize (tmp_nargin); + for (int i = 0; i < tmp_nargin; i++) tmp_args(i) = args(i+1); retval = fcn->eval (0, nargout, tmp_args); } @@ -736,7 +738,7 @@ int nargin = args.length (); - if (nargin > 1) + if (nargin > 0) retval = feval (args, nargout); else print_usage ("feval"); @@ -820,7 +822,7 @@ return eval_string (string, 1, 1, parse_status, nargout); } -DEFUN ("eval", Feval, Seval, 3, 1, +DEFUN ("eval", Feval, Seval, 2, 1, "eval (TRY, CATCH)\n\ \n\ Evaluate the string TRY as octave code. If that fails, evaluate the\n\ @@ -830,11 +832,11 @@ int nargin = args.length (); - if (nargin > 1) + if (nargin > 0) { begin_unwind_frame ("Feval"); - if (nargin > 2) + if (nargin > 1) { unwind_protect_int (suppress_octave_error_messages); suppress_octave_error_messages = 1; @@ -842,12 +844,12 @@ int parse_status = 0; - retval = eval_string (args(1), parse_status, nargout); + retval = eval_string (args(0), parse_status, nargout); - if (nargin > 2 && (parse_status != 0 || error_state)) + if (nargin > 1 && (parse_status != 0 || error_state)) { error_state = 0; - eval_string (args(2), parse_status, nargout); + eval_string (args(1), parse_status, nargout); retval = Octave_object (); } @@ -868,19 +870,19 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 3) + if (nargin < 1 || nargin > 2) { - print_usage ("shell_cmd"); + print_usage ("system"); return retval; } - tree_constant tc_command = args(1); + tree_constant tc_command = args(0); char *tmp_str = tc_command.string_value (); if (error_state) { - error ("shell_cmd: expecting string as first argument"); + error ("system: expecting string as first argument"); } else { @@ -896,7 +898,7 @@ int status = cmd.close (); - if (nargout > 0 || nargin > 2) + if (nargout > 0 || nargin > 1) { char *msg = output_buf.str (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/pinv.cc --- a/src/pinv.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/pinv.cc Mon Sep 19 14:18:48 1994 +0000 @@ -44,17 +44,17 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 3) + if (nargin < 1 || nargin > 2) { print_usage ("pinv"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); double tol = 0.0; - if (nargin == 3) - tol = args(2).double_value (); + if (nargin == 2) + tol = args(1).double_value (); if (error_state) return retval; diff -r 5f15ab42a631 -r 36ba0576bd1b src/pr-output.cc --- a/src/pr-output.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/pr-output.cc Mon Sep 19 14:18:48 1994 +0000 @@ -1297,15 +1297,15 @@ } } -DEFUN ("disp", Fdisp, Sdisp, 3, 1, +DEFUN ("disp", Fdisp, Sdisp, 1, 1, "disp (X): display value without name tag") { Octave_object retval; int nargin = args.length (); - if (nargin == 2) - args(1).eval (1); + if (nargin == 1) + args(0).eval (1); else print_usage ("disp"); diff -r 5f15ab42a631 -r 36ba0576bd1b src/pt-exp-base.cc --- a/src/pt-exp-base.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/pt-exp-base.cc Mon Sep 19 14:18:48 1994 +0000 @@ -110,11 +110,10 @@ { int nargin = args.length (); - while (--nargin > 0) - { - if (args(nargin).is_undefined ()) - return 0; - } + for (int i = 0; i < nargin; i++) + if (args(i).is_undefined ()) + return 0; + return 1; } @@ -125,11 +124,10 @@ { int nargin = args.length (); - while (--nargin > 0) - { - if (args(nargin).is_magic_colon ()) + for (int i = 0; i < nargin; i++) + if (args(i).is_magic_colon ()) return 1; - } + return 0; } @@ -759,12 +757,12 @@ { script_file_executed = lookup (sym); - tree_fvc *ans = 0; + tree_fvc *retval = 0; if (! script_file_executed) - ans = sym->def (); - - return ans; + retval = sym->def (); + + return retval; } void @@ -784,18 +782,16 @@ int script_file_executed = 0; - tree_fvc *ans = do_lookup (script_file_executed); + tree_fvc *object_to_eval = do_lookup (script_file_executed); if (! script_file_executed) { - if (ans) + if (object_to_eval) { int nargout = maybe_do_ans_assign ? 0 : 1; - int nargin = (ans->is_constant ()) ? 0 : 1; Octave_object tmp_args; - tmp_args.resize (nargin); - Octave_object tmp = ans->eval (0, nargout, tmp_args); + Octave_object tmp = object_to_eval->eval (0, nargout, tmp_args); if (tmp.length () > 0) retval = tmp(0); @@ -806,7 +802,7 @@ if (! error_state && retval.is_defined ()) { - if (maybe_do_ans_assign && ! ans->is_constant ()) + if (maybe_do_ans_assign && ! object_to_eval->is_constant ()) { // XXX FIXME XXX -- need a procedure to do this, probably in @@ -872,11 +868,11 @@ int script_file_executed = 0; - tree_fvc *ans = do_lookup (script_file_executed); + tree_fvc *object_to_eval = do_lookup (script_file_executed); if (! script_file_executed) { - if (ans) + if (object_to_eval) { if (maybe_do_ans_assign && nargout == 1) { @@ -885,7 +881,7 @@ nargout = 0; - retval = ans->eval (0, nargout, args); + retval = object_to_eval->eval (0, nargout, args); if (retval.length () > 0 && retval(0).is_defined ()) { @@ -908,7 +904,7 @@ } } else - retval = ans->eval (print, nargout, args); + retval = object_to_eval->eval (print, nargout, args); } else eval_undefined_error (); @@ -950,13 +946,15 @@ if (list) { -// Extract the arguments into a simple vector. +// Extract the arguments into a simple vector. Don't pass null args. + Octave_object args = list->convert_to_const_vector (); -// Don't pass null arguments. + int nargin = args.length (); + if (error_state) eval_error (); - else if (nargin > 1 && all_args_defined (args)) + else if (nargin > 0 && all_args_defined (args)) { Octave_object tmp = id->eval (print, 1, args); @@ -987,12 +985,15 @@ if (list) { -// Extract the arguments into a simple vector. +// Extract the arguments into a simple vector. Don't pass null args. + Octave_object args = list->convert_to_const_vector (); -// Don't pass null arguments. + + int nargin = args.length (); + if (error_state) eval_error (); - else if (args.length () > 1 && all_args_defined (args)) + else if (nargin > 0 && all_args_defined (args)) { retval = id->eval (print, nargout, args); if (error_state) @@ -1199,7 +1200,7 @@ if (error_state) return tree_constant (); - tree_constant ans; + tree_constant retval; switch (etype) { @@ -1214,10 +1215,10 @@ eval_error (); else if (u.is_defined ()) { - ans = do_unary_op (u, etype); + retval = do_unary_op (u, etype); if (error_state) { - ans = tree_constant (); + retval = tree_constant (); if (error_state) eval_error (); } @@ -1229,7 +1230,7 @@ break; } - return ans; + return retval; } char * @@ -1298,7 +1299,8 @@ if (error_state) return tree_constant (); - tree_constant ans; + tree_constant retval; + switch (etype) { case tree_expression::add: @@ -1331,10 +1333,10 @@ eval_error (); else if (b.is_defined ()) { - ans = do_binary_op (a, b, etype); + retval = do_binary_op (a, b, etype); if (error_state) { - ans = tree_constant (); + retval = tree_constant (); if (error_state) eval_error (); } @@ -1397,7 +1399,7 @@ } } done: - ans = tree_constant ((double) result); + retval = tree_constant ((double) result); } break; default: @@ -1405,7 +1407,7 @@ break; } - return ans; + return retval; } char * @@ -1488,7 +1490,6 @@ { assert (etype == tree_expression::assignment); - tree_constant ans; tree_constant retval; if (error_state) @@ -1504,34 +1505,35 @@ } else if (! index) { - ans = lhs->assign (rhs_val); + retval = lhs->assign (rhs_val); if (error_state) eval_error (); } else { // Extract the arguments into a simple vector. + Octave_object args = index->convert_to_const_vector (); int nargin = args.length (); if (error_state) eval_error (); - else if (nargin > 1) + else if (nargin > 0) { - ans = lhs->assign (rhs_val, args); + retval = lhs->assign (rhs_val, args); if (error_state) eval_error (); } } } - if (! error_state && ans.is_defined ()) + if (! error_state && retval.is_defined ()) { int pad_after = 0; if (print && user_pref.print_answer_id_name) { - if (print_as_scalar (ans)) + if (print_as_scalar (retval)) { ostrstream output_buf; output_buf << lhs->name () << " = " << ends; @@ -1546,7 +1548,7 @@ } } - retval = ans.eval (print); + retval.eval (print); if (print && pad_after) { @@ -1950,7 +1952,6 @@ eval_fcn: Octave_object args; - args(0) = tree_constant (my_name); Octave_object tmp = (*fcn) (args, 1); if (tmp.length () > 0) retval = tmp(0); @@ -1991,10 +1992,9 @@ { if (nargin > nargin_max) ::error ("%s: too many arguments", my_name); - else if (nargin > 0 && args.length () > 0 && args(1).is_defined ()) + else if (nargin > 0 && args(0).is_defined ()) { - tree_constant tmp = args(1).mapper (mapper_fcn, 0); - retval.resize (1); + tree_constant tmp = args(0).mapper (mapper_fcn, 0); retval(0) = tmp; } } @@ -2228,14 +2228,9 @@ // Copy return values out. if (ret_list) - { - retval = ret_list->convert_to_const_vector (); - } + retval = ret_list->convert_to_const_vector (); else if (user_pref.return_last_computed_value) - { - retval.resize (1); - retval(0) = last_computed_value; - } + retval(0) = last_computed_value; } abort: @@ -2337,7 +2332,7 @@ print_code_new_line (os); } -DEFUN ("va_arg", Fva_arg, Sva_arg, 1, 1, +DEFUN ("va_arg", Fva_arg, Sva_arg, 0, 1, "va_arg (): return next argument in a function that takes a\n\ variable number of parameters") { @@ -2345,7 +2340,7 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { if (curr_function) { @@ -2366,7 +2361,7 @@ return retval; } -DEFUN ("va_start", Fva_start, Sva_start, 1, 0, +DEFUN ("va_start", Fva_start, Sva_start, 0, 0, "va_start (): reset the pointer to the list of optional arguments\n\ to the beginning") { @@ -2374,7 +2369,7 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { if (curr_function) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/pt-misc.cc --- a/src/pt-misc.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/pt-misc.cc Mon Sep 19 14:18:48 1994 +0000 @@ -205,15 +205,13 @@ Octave_object tree_argument_list::convert_to_const_vector (void) { - int len = length () + 1; + int len = length (); Octave_object args; args.resize (len); -// args[0] may eventually hold something useful, like the function -// name. Pix p = first (); - for (int k = 1; k < len; k++) + for (int k = 0; k < len; k++) { tree_expression *elt = this->operator () (p); if (elt) @@ -232,6 +230,7 @@ break; } } + return args; } @@ -271,16 +270,16 @@ void tree_parameter_list::define_from_arg_vector (const Octave_object& args) { - if (args.length () <= 0) + int nargin = args.length (); + + if (nargin <= 0) return; - int nargin = args.length (); - - int expected_nargin = length () + 1; + int expected_nargin = length (); Pix p = first (); - for (int i = 1; i < expected_nargin; i++) + for (int i = 0; i < expected_nargin; i++) { tree_identifier *elt = this->operator () (p); diff -r 5f15ab42a631 -r 36ba0576bd1b src/qpsol.cc --- a/src/qpsol.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/qpsol.cc Mon Sep 19 14:18:48 1994 +0000 @@ -91,14 +91,14 @@ int nargin = args.length (); - if (nargin < 4 || nargin == 5 || nargin == 8 || nargin > 9 + if (nargin < 3 || nargin == 4 || nargin == 7 || nargin > 8 || nargout > 4) { print_usage ("qpsol"); return retval; } - ColumnVector x = args(1).vector_value (); + ColumnVector x = args(0).vector_value (); if (error_state || x.capacity () == 0) { @@ -106,7 +106,7 @@ return retval; } - Matrix H = args(2).matrix_value (); + Matrix H = args(1).matrix_value (); if (error_state || H.rows () != H.columns () || H.rows () != x.capacity ()) { @@ -114,7 +114,7 @@ return retval; } - ColumnVector c = args(3).vector_value (); + ColumnVector c = args(2).vector_value (); if (error_state || c.capacity () != x.capacity ()) { @@ -123,10 +123,10 @@ } Bounds bounds; - if (nargin == 6 || nargin == 9) + if (nargin == 5 || nargin == 8) { - ColumnVector lb = args(4).vector_value (); - ColumnVector ub = args(5).vector_value (); + ColumnVector lb = args(3).vector_value (); + ColumnVector ub = args(4).vector_value (); int lb_len = lb.capacity (); int ub_len = ub.capacity (); @@ -148,7 +148,7 @@ ColumnVector lambda; int inform; - if (nargin == 4) + if (nargin == 3) { // 1. qpsol (x, H, c) @@ -159,7 +159,7 @@ goto solved; } - if (nargin == 6) + if (nargin == 5) { // 2. qpsol (x, H, c, lb, ub) @@ -170,10 +170,10 @@ goto solved; } - if (nargin == 7 || nargin == 9) + if (nargin == 6 || nargin == 8) { - ColumnVector lub = args(nargin-1).vector_value (); - ColumnVector llb = args(nargin-3).vector_value (); + ColumnVector lub = args(nargin).vector_value (); + ColumnVector llb = args(nargin-2).vector_value (); if (error_state || llb.capacity () == 0 || lub.capacity () == 0) { @@ -181,7 +181,7 @@ return retval; } - Matrix A = args(nargin-2).matrix_value (); + Matrix A = args(nargin-1).matrix_value (); if (error_state) { @@ -194,7 +194,7 @@ LinConst linear_constraints (llb, A, lub); - if (nargin == 9) + if (nargin == 8) { // 3. qpsol (x, H, c, lb, ub, llb, A, lub) @@ -374,18 +374,18 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { print_qpsol_option_list (); return retval; } - else if (nargin == 3) + else if (nargin == 2) { - char *keyword = args(1).string_value (); + char *keyword = args(0).string_value (); if (! error_state) { - double val = args(2).double_value (); + double val = args(1).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/qr.cc --- a/src/qr.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/qr.cc Mon Sep 19 14:18:48 1994 +0000 @@ -60,19 +60,19 @@ int nargin = args.length (); - if (nargin != 2 && nargin != 3 || nargout > 3) + if (nargin != 1 && nargin != 2 || nargout > 3) { print_usage ("qr"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); if (empty_arg ("qr", arg.rows (), arg.columns ()) < 0) return retval; QR::type type = nargout == 1 ? QR::raw - : (nargin == 3 ? QR::economy : QR::std); + : (nargin == 2 ? QR::economy : QR::std); if (arg.is_real_type ()) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/quad.cc --- a/src/quad.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/quad.cc Mon Sep 19 14:18:48 1994 +0000 @@ -49,10 +49,8 @@ { double retval = 0.0; -// tree_constant name = quad_fcn->name (); Octave_object args; - args(1) = x; -// args(0) = name; + args(0) = x; if (quad_fcn) { @@ -104,17 +102,17 @@ int nargin = args.length (); - if (nargin < 4 || nargin > 6 || nargout > 4) + if (nargin < 3 || nargin > 5 || nargout > 4) { print_usage ("quad"); return retval; } - quad_fcn = is_valid_function (args(1), "fsolve", 1); + quad_fcn = is_valid_function (args(0), "fsolve", 1); if (! quad_fcn || takes_correct_nargs (quad_fcn, 2, "fsolve", 1) != 1) return retval; - double a = args(2).double_value (); + double a = args(1).double_value (); if (error_state) { @@ -122,7 +120,7 @@ return retval; } - double b = args(3).double_value (); + double b = args(2).double_value (); if (error_state) { @@ -162,7 +160,7 @@ int have_sing = 0; switch (nargin) { - case 6: + case 5: if (indefinite) { error("quad: singularities not allowed on infinite intervals"); @@ -171,7 +169,7 @@ have_sing = 1; - sing = args(5).vector_value (); + sing = args(4).vector_value (); if (error_state) { @@ -179,8 +177,8 @@ return retval; } - case 5: - tol = args(4).vector_value (); + case 4: + tol = args(3).vector_value (); if (error_state) { @@ -202,7 +200,7 @@ return retval; } - case 4: + case 3: if (indefinite) { IndefQuad iq (quad_user_function, bound, indef_type, abstol, reltol); @@ -337,18 +335,18 @@ int nargin = args.length (); - if (nargin == 1) + if (nargin == 0) { print_quad_option_list (); return retval; } - else if (nargin == 3) + else if (nargin == 2) { - char *keyword = args(1).string_value (); + char *keyword = args(0).string_value (); if (! error_state) { - double val = args(2).double_value (); + double val = args(1).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/qzval.cc --- a/src/qzval.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/qzval.cc Mon Sep 19 14:18:48 1994 +0000 @@ -62,14 +62,16 @@ { Octave_object retval; - if (args.length () != 3 || nargout > 1) + int nargin = args.length (); + + if (nargin != 2 || nargout > 1) { print_usage ("qzvalue"); return retval; } - tree_constant arg_a = args(1); - tree_constant arg_b = args(2); + tree_constant arg_a = args(0); + tree_constant arg_b = args(1); int a_nr = arg_a.rows(); int a_nc = arg_a.columns(); diff -r 5f15ab42a631 -r 36ba0576bd1b src/rand.cc --- a/src/rand.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/rand.cc Mon Sep 19 14:18:48 1994 +0000 @@ -112,7 +112,7 @@ int nargin = args.length (); - if (nargin > 3 || nargout > 1) + if (nargin > 2 || nargout > 1) { print_usage ("rand"); return retval; @@ -145,15 +145,15 @@ int n = 0; int m = 0; - if (nargin == 1) + if (nargin == 0) { n = 1; m = 1; goto gen_matrix; } - else if (nargin == 2) + else if (nargin == 1) { - tree_constant tmp = args(1); + tree_constant tmp = args(0); if (tmp.is_string ()) { @@ -191,8 +191,8 @@ } else if (tmp.is_matrix_type ()) { - n = NINT (args(1).rows ()); - m = NINT (args(1).columns ()); + n = NINT (args(0).rows ()); + m = NINT (args(0).columns ()); goto gen_matrix; } else @@ -201,23 +201,23 @@ return retval; } } - else if (nargin == 3) + else if (nargin == 2) { - if (args(1).is_string () - && strcmp (args(1).string_value (), "seed") == 0) + if (args(0).is_string () + && strcmp (args(0).string_value (), "seed") == 0) { - double d = args(2).double_value (); + double d = args(1).double_value (); if (! error_state) set_rand_seed (d); } else { - n = NINT (args(1).double_value ()); + n = NINT (args(0).double_value ()); if (! error_state) { - m = NINT (args(2).double_value ()); + m = NINT (args(1).double_value ()); if (! error_state) goto gen_matrix; diff -r 5f15ab42a631 -r 36ba0576bd1b src/schur.cc --- a/src/schur.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/schur.cc Mon Sep 19 14:18:48 1994 +0000 @@ -53,18 +53,18 @@ int nargin = args.length (); - if (nargin == 1 || nargin > 3 || nargout > 2) + if (nargin < 1 || nargin > 2 || nargout > 2) { print_usage ("schur"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); char *ord = "U"; - if (nargin == 3) + if (nargin == 2) { - ord = args(2).string_value (); + ord = args(1).string_value (); if (error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/sort.cc --- a/src/sort.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/sort.cc Mon Sep 19 14:18:48 1994 +0000 @@ -172,7 +172,7 @@ int nargin = args.length (); - if (nargin != 2) + if (nargin != 1) { print_usage ("sort"); return retval; @@ -184,7 +184,7 @@ else retval.resize (1); - tree_constant arg = args(1); + tree_constant arg = args(0); if (arg.is_real_type ()) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/svd.cc --- a/src/svd.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/svd.cc Mon Sep 19 14:18:48 1994 +0000 @@ -47,18 +47,18 @@ int nargin = args.length (); - if (nargin < 2 || nargin > 3 || nargout == 2 || nargout > 3) + if (nargin < 1 || nargin > 2 || nargout == 2 || nargout > 3) { print_usage ("svd"); return retval; } - tree_constant arg = args(1); + tree_constant arg = args(0); if (empty_arg ("svd", arg.rows (), arg.columns ()) < 0) return retval; - SVD::type type = (nargin == 3) ? SVD::economy : SVD::std; + SVD::type type = (nargin == 2) ? SVD::economy : SVD::std; if (arg.is_real_type ()) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/syl.cc --- a/src/syl.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/syl.cc Mon Sep 19 14:18:48 1994 +0000 @@ -61,15 +61,17 @@ { Octave_object retval; - if (args.length () != 4 || nargout > 1) + int nargin = args.length (); + + if (nargin != 3 || nargout > 1) { print_usage ("syl"); return retval; } - tree_constant arg_a = args(1); - tree_constant arg_b = args(2); - tree_constant arg_c = args(3); + tree_constant arg_a = args(0); + tree_constant arg_b = args(1); + tree_constant arg_c = args(2); int a_nr = arg_a.rows (); int a_nc = arg_a.columns (); diff -r 5f15ab42a631 -r 36ba0576bd1b src/sysdep.cc --- a/src/sysdep.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/sysdep.cc Mon Sep 19 14:18:48 1994 +0000 @@ -373,7 +373,7 @@ return c; } -DEFUN ("clc", Fclc, Sclc, 1, 0, +DEFUN ("clc", Fclc, Sclc, 0, 0, "clc (): clear screen") { Octave_object retval; @@ -397,16 +397,16 @@ DEFALIAS (home, clc); -DEFUN ("getenv", Fgetenv, Sgetenv, 2, 1, +DEFUN ("getenv", Fgetenv, Sgetenv, 1, 1, "getenv (STRING): get environment variable values") { Octave_object retval; int nargin = args.length (); - if (nargin == 2) + if (nargin == 1) { - char *name = args(1).string_value (); + char *name = args(0).string_value (); if (! error_state) { @@ -423,7 +423,7 @@ return retval; } -DEFUN ("kbhit", Fkbhit, Skbhit, 1, 1, +DEFUN ("kbhit", Fkbhit, Skbhit, 0, 1, "kbhit: get a single character from the terminal") { Octave_object retval; @@ -449,7 +449,7 @@ int nargin = args.length (); - if (! (nargin == 1 || nargin == 2)) + if (! (nargin == 0 || nargin == 1)) { print_usage ("pause"); return retval; @@ -459,9 +459,9 @@ { switch (nargin) { - case 2: + case 1: { - double dval = args(1).double_value (); + double dval = args(0).double_value (); if (! error_state) { diff -r 5f15ab42a631 -r 36ba0576bd1b src/tc-rep.cc --- a/src/tc-rep.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/tc-rep.cc Mon Sep 19 14:18:48 1994 +0000 @@ -235,11 +235,11 @@ { int nargin = args.length (); - return ((nargin == 3 - && args(2).valid_as_scalar_index () - && args(1).valid_as_scalar_index ()) - || (nargin == 2 - && args(1).valid_as_scalar_index ())); + return ((nargin == 2 + && args(1).valid_as_scalar_index () + && args(0).valid_as_scalar_index ()) + || (nargin == 1 + && args(0).valid_as_scalar_index ())); } // Now, the classes. @@ -1804,11 +1804,13 @@ switch (nargin) { - case 3: + case 2: { - if (args(2).is_matrix_type ()) + tree_constant arg = args(1); + + if (arg.is_matrix_type ()) { - Matrix mj = args(2).matrix_value (); + Matrix mj = arg.matrix_value (); idx_vector j (mj, user_pref.do_fortran_indexing, ""); if (! j) @@ -1818,9 +1820,9 @@ if (len == j.ones_count ()) cols = len; } - else if (args(2).const_type () == magic_colon - || (args(2).is_scalar_type () - && NINT (args(2).double_value ()) == 1)) + else if (arg.const_type () == magic_colon + || (arg.is_scalar_type () + && NINT (arg.double_value ()) == 1)) { cols = 1; } @@ -1830,11 +1832,13 @@ // Fall through... - case 2: + case 1: { - if (args(1).is_matrix_type ()) + tree_constant arg = args(0); + + if (arg.is_matrix_type ()) { - Matrix mi = args(1).matrix_value (); + Matrix mi = arg.matrix_value (); idx_vector i (mi, user_pref.do_fortran_indexing, ""); if (! i) @@ -1844,14 +1848,14 @@ if (len == i.ones_count ()) rows = len; } - else if (args(1).const_type () == magic_colon - || (args(1).is_scalar_type () - && NINT (args(1).double_value ()) == 1)) + else if (arg.const_type () == magic_colon + || (arg.is_scalar_type () + && NINT (arg.double_value ()) == 1)) { rows = 1; } - else if (args(1).is_scalar_type () - && NINT (args(1).double_value ()) == 0) + else if (arg.is_scalar_type () + && NINT (arg.double_value ()) == 0) { return Matrix (); } @@ -1902,28 +1906,36 @@ switch (nargin) { - case 2: - if (args.length () <= 0) - ::error ("matrix index is null"); - else if (args(1).is_undefined ()) - ::error ("matrix index is a null expression"); - else - retval = do_matrix_index (args(1)); + case 1: + { + tree_constant arg = args(0); + + if (arg.is_undefined ()) + ::error ("matrix index is a null expression"); + else + retval = do_matrix_index (arg); + } break; case 3: - if (args.length () <= 0) - ::error ("matrix indices are null"); - else if (args(1).is_undefined ()) + { + tree_constant arg_a = args(0); + tree_constant arg_b = args(1); + + if (arg_a.is_undefined ()) ::error ("first matrix index is a null expression"); - else if (args(2).is_undefined ()) - ::error ("second matrix index is a null expression"); - else - retval = do_matrix_index (args(1), args(2)); + else if (arg_b.is_undefined ()) + ::error ("second matrix index is a null expression"); + else + retval = do_matrix_index (arg_a, arg_b); + } break; default: - ::error ("too many indices for matrix expression"); + if (nargin == 0) + ::error ("matrix indices expected, but none provided"); + else + ::error ("too many indices for matrix expression"); break; } @@ -3235,7 +3247,7 @@ type_tag = unknown_constant; } } - else if (nargin > 3 || nargin < 2) + else if (nargin > 2 || nargin < 1) ::error ("invalid index expression for scalar type"); else ::error ("index invalid or out of range for scalar type"); @@ -3281,39 +3293,47 @@ // don't let any pass through here. switch (nargin) { + case 1: + { + tree_constant arg = args(0); + + if (arg.is_undefined ()) + ::error ("matrix index is undefined"); + else + do_matrix_assignment (rhs, arg); + } + break; + case 2: - if (args.length () <= 0) - ::error ("matrix index is null"); - else if (args(1).is_undefined ()) - ::error ("matrix index is undefined"); - else - do_matrix_assignment (rhs, args(1)); - break; - - case 3: - if (args.length () <= 0) - ::error ("matrix indices are null"); - else if (args(1).is_undefined ()) - ::error ("first matrix index is undefined"); - else if (args(2).is_undefined ()) - ::error ("second matrix index is undefined"); - else if (args(1).is_empty () || args(2).is_empty ()) - { - if (! rhs.is_empty ()) - { - ::error ("in assignment expression, a matrix index is empty"); - ::error ("but hte right hand side is not an empty matrix"); - } + { + tree_constant arg_a = args(0); + tree_constant arg_b = args(1); + + if (arg_a.is_undefined ()) + ::error ("first matrix index is undefined"); + else if (arg_b.is_undefined ()) + ::error ("second matrix index is undefined"); + else if (arg_a.is_empty () || arg_b.is_empty ()) + { + if (! rhs.is_empty ()) + { + ::error ("in assignment expression, a matrix index is empty"); + ::error ("but the right hand side is not an empty matrix"); + } // XXX FIXME XXX -- to really be correct here, we should probably // check to see if the assignment conforms, but that seems like more // work than it's worth right now... - } - else - do_matrix_assignment (rhs, args(1), args(2)); + } + else + do_matrix_assignment (rhs, arg_a, arg_b); + } break; default: - ::error ("too many indices for matrix expression"); + if (nargin == 0) + ::error ("matrix indices expected, but none provided"); + else + ::error ("too many indices for matrix expression"); break; } } diff -r 5f15ab42a631 -r 36ba0576bd1b src/utils.cc --- a/src/utils.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/utils.cc Mon Sep 19 14:18:48 1994 +0000 @@ -498,7 +498,7 @@ all_strings (const Octave_object& args) { int n = args.length (); - for (int i = 1; i < n; i++) + for (int i = 0; i < n; i++) if (! args(i).is_string ()) return 0; return 1; @@ -513,8 +513,8 @@ int n = args.length (); argv = new char * [n + 1]; argv[0] = strsave (fcn_name); - for (int i = 1; i < n; i++) - argv[i] = strsave (args(i).string_value ()); + for (int i = 0; i < n; i++) + argv[i+1] = strsave (args(i).string_value ()); } else error ("%s: expecting all arguments to be strings", fcn_name); diff -r 5f15ab42a631 -r 36ba0576bd1b src/variables.cc --- a/src/variables.cc Sun Sep 18 23:34:35 1994 +0000 +++ b/src/variables.cc Mon Sep 19 14:18:48 1994 +0000 @@ -167,8 +167,8 @@ takes_correct_nargs (tree_fvc *fcn, int expected_nargin, char *warn_for, int warn) { - int nargin = fcn->max_expected_args () - 1; - int e_nargin = expected_nargin - 1; + int nargin = fcn->max_expected_args (); + int e_nargin = expected_nargin; if (nargin != e_nargin) { if (warn) @@ -179,13 +179,15 @@ return 1; } -DEFUN ("is_global", Fis_global, Sis_global, 2, 1, +DEFUN ("is_global", Fis_global, Sis_global, 1, 1, "is_global (X): return 1 if the string X names a global variable\n\ otherwise, return 0.") { Octave_object retval = 0.0; - if (args.length () != 2) + int nargin = args.length (); + + if (nargin != 1) { print_usage ("is_global"); return retval; @@ -206,7 +208,7 @@ return retval; } -DEFUN ("exist", Fexist, Sexist, 2, 1, +DEFUN ("exist", Fexist, Sexist, 1, 1, "exist (NAME): check if variable or file exists\n\ \n\ return 0 if NAME is undefined, 1 if it is a variable, or 2 if it is\n\ @@ -214,7 +216,9 @@ { Octave_object retval; - if (args.length () != 2) + int nargin = args.length (); + + if (nargin != 1) { print_usage ("exist"); return retval; @@ -1141,10 +1145,13 @@ { Octave_object retval; + int nargin = args.length (); + Octave_object tmp_args = args; - tmp_args(args.length ()) = "-long"; - int argc = tmp_args.length (); + tmp_args(nargin) = "-long"; + + int argc = nargin + 1; char **argv = make_argv (tmp_args, "whos"); if (error_state) @@ -1260,7 +1267,7 @@ sr = sym_tab->lookup ("nargin", 1, 0); sr->unprotect (); - tmp = new tree_constant (nargin-1); + tmp = new tree_constant (nargin); sr->define (tmp); sr->protect ();