Mercurial > octave
changeset 20812:d9ca869ca124
maint: Clean-up more instances of print_usage().
* mk-opts.pl: Fix script that generates *-opt.cc files to put print_usage()
first.
* __ilu__.cc (F__ilutp__): Don't declare and initialize multiple comma
separated variables.
* __lin_interpn__.cc (F__lin_interpn__): Eliminate extra spaces in if
conditional.
* dasrt.cc (Fdasrt): Declare variables only as needed, in this case, after
input validation has succeeded.
* file-io.cc (Frewind): Declare variables after input validation succeeds.
* file-io.cc (Ftempname): Rename variable len to nargin to match rest of code.
* gammainc.cc (Fgammainc): Put nargin checking first in function.
* hex2num.cc (Fhex2num, Fnum2hex): Declare "octave_value retval;" first in
function to match rest of Octave code base.
* load-path.cc (Frmpath): Re-phrase comment.
* lu.cc (Flu): Declare variables after input validation succeeds. Use space
after ! operator.
* lu.cc (Fluupdate): Place octave_value_list declaration first in function.
Declare variables after input validation succeeds.
* matrix_type.cc (Fmatrix_type): Place octave_value declaration first in
function.
* tril.cc (do_trilu): Move nargin checking higher in function.
* utils.cc (Fdir_in_loadpath): Declare variables after input validation
succeeds.
* __glpk__.cc (F__glpk__): Rename variable nrhs to nargin to match rest of
code base.
* __magick_read__.cc (F__magick_ping__, F__magick_formats__): Add newline
to space out code for readability.
* __osmesa_print__.cc (F__osmesa_print__): Use DeMorgan's Law to simplify
nargin validation.
* audiodevinfo.cc (F__recorder_record__): Correct indentation.
* chol.cc (Fcholinsert, Fcholdelete, Fcholshift): Place octave_value_list
declaration first in function.
* dmperm.cc (Fdmperm, Fsprank): Place octave_value_list declaration first in
function.
* qr.cc (Fqrupdate, Fqrinsert, Fqrdelete, Fqrshift): Place octave_value_list
declaration first in function.
* lex.ll (Fiskeyword): Rewrite function to use modern syntax. Add BIST
tests for special words "get", "set". Add BIST tests for input validation.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 05 Dec 2015 15:59:22 -0800 |
parents | 5979314bb15a |
children | 7349de0bf744 |
files | build-aux/mk-opts.pl libinterp/corefcn/__ilu__.cc libinterp/corefcn/__lin_interpn__.cc libinterp/corefcn/dasrt.cc libinterp/corefcn/file-io.cc libinterp/corefcn/gammainc.cc libinterp/corefcn/hex2num.cc libinterp/corefcn/load-path.cc libinterp/corefcn/lu.cc libinterp/corefcn/matrix_type.cc libinterp/corefcn/tril.cc libinterp/corefcn/utils.cc libinterp/dldfcn/__glpk__.cc libinterp/dldfcn/__magick_read__.cc libinterp/dldfcn/__osmesa_print__.cc libinterp/dldfcn/audiodevinfo.cc libinterp/dldfcn/chol.cc libinterp/dldfcn/dmperm.cc libinterp/dldfcn/qr.cc libinterp/parse-tree/lex.ll |
diffstat | 20 files changed, 72 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/build-aux/mk-opts.pl Sat Dec 05 15:10:49 2015 -0800 +++ b/build-aux/mk-opts.pl Sat Dec 05 15:59:22 2015 -0800 @@ -932,11 +932,14 @@ int nargin = args.length (); + if (nargin > 2) + print_usage (); + if (nargin == 0) { print_$CLASS_NAME (octave_stdout); } - else if (nargin == 1 || nargin == 2) + else { std::string keyword = args(0).xstring_value ("$OPT_FCN_NAME: expecting keyword as first argument"); @@ -945,8 +948,6 @@ else set_$CLASS_NAME (keyword, args(1)); } - else - print_usage (); return retval; }
--- a/libinterp/corefcn/__ilu__.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/__ilu__.cc Sat Dec 05 15:59:22 2015 -0800 @@ -948,7 +948,8 @@ int nargin = args.length (); std::string milu = ""; - double droptol = 0, thresh = 1; + double droptol = 0; + double thresh = 1; double udiag = 0; if (nargout < 2 || nargout > 3 || nargin < 1 || nargin > 5)
--- a/libinterp/corefcn/__lin_interpn__.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/__lin_interpn__.cc Sat Dec 05 15:59:22 2015 -0800 @@ -277,7 +277,7 @@ int nargin = args.length (); - if (nargin < 2 || nargin % 2 == 0) + if (nargin < 2 || nargin % 2 == 0) print_usage (); // dimension of the problem
--- a/libinterp/corefcn/dasrt.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/dasrt.cc Sat Dec 05 15:59:22 2015 -0800 @@ -370,13 +370,12 @@ if (call_depth > 1) DASRT_ABORT1 ("invalid recursive call"); - int argp = 0; - int nargin = args.length (); if (nargin < 4 || nargin > 6) print_usage (); + int argp = 0; std::string fcn_name, fname, jac_name, jname; dasrt_f = 0; dasrt_j = 0;
--- a/libinterp/corefcn/file-io.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/file-io.cc Sat Dec 05 15:59:22 2015 -0800 @@ -735,11 +735,11 @@ { octave_value retval; - int result = -1; - if (args.length () != 1) print_usage (); + int result = -1; + octave_stream os = octave_stream_list::lookup (args(0), "frewind"); result = os.rewind (); @@ -1781,19 +1781,19 @@ { octave_value retval; - int len = args.length (); + int nargin = args.length (); - if (len > 2) + if (nargin > 2) print_usage (); std::string dir; - if (len > 0) + if (nargin > 0) dir = args(0).xstring_value ("tempname: DIR must be a string"); std::string pfx ("oct-"); - if (len > 1) + if (nargin > 1) pfx = args(1).xstring_value ("tempname: PREFIX must be a string"); return octave_value (octave_tempnam (dir, pfx));
--- a/libinterp/corefcn/gammainc.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/gammainc.cc Sat Dec 05 15:59:22 2015 -0800 @@ -83,6 +83,9 @@ int nargin = args.length (); + if (nargin < 2 || nargin > 3) + print_usage (); + if (nargin == 3) { std::string s = args(2).xstring_value ("gammainc: third argument must be \"lower\" or \"upper\""); @@ -95,9 +98,6 @@ error ("gammainc: third argument must be \"lower\" or \"upper\""); } - if (nargin < 2 || nargin > 3) - print_usage (); - octave_value x_arg = args(0); octave_value a_arg = args(1);
--- a/libinterp/corefcn/hex2num.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/hex2num.cc Sat Dec 05 15:59:22 2015 -0800 @@ -65,8 +65,8 @@ @seealso{num2hex, hex2dec, dec2hex}\n\ @end deftypefn") { + octave_value retval; int nargin = args.length (); - octave_value retval; if (nargin < 1 || nargin > 2) print_usage (); @@ -219,8 +219,8 @@ @seealso{hex2num, hex2dec, dec2hex}\n\ @end deftypefn") { + octave_value retval; int nargin = args.length (); - octave_value retval; if (nargin != 1) print_usage ();
--- a/libinterp/corefcn/load-path.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/load-path.cc Sat Dec 05 15:59:22 2015 -0800 @@ -2506,7 +2506,7 @@ @seealso{path, addpath, genpath, pathdef, savepath, pathsep}\n\ @end deftypefn") { - // Originally by Etienne Grossmann. Heavily modified and translated + // Originally written by Etienne Grossmann. Heavily modified and translated // to C++ by jwe. octave_value retval;
--- a/libinterp/corefcn/lu.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/lu.cc Sat Dec 05 15:59:22 2015 -0800 @@ -145,12 +145,12 @@ octave_value_list retval; int nargin = args.length (); bool issparse = (nargin > 0 && args(0).is_sparse_type ()); - bool scale = (nargout == 5); if (nargin < 1 || (issparse && (nargin > 3 || nargout > 5)) - || (!issparse && (nargin > 2 || nargout > 3))) + || (! issparse && (nargin > 2 || nargout > 3))) print_usage (); + bool scale = (nargout == 5); bool vecout = false; Matrix thres; @@ -626,14 +626,14 @@ @seealso{lu, cholupdate, qrupdate}\n\ @end deftypefn") { + octave_value_list retval; octave_idx_type nargin = args.length (); - octave_value_list retval; - - bool pivoted = nargin == 5; if (nargin != 4 && nargin != 5) print_usage (); + bool pivoted = (nargin == 5); + octave_value argl = args(0); octave_value argu = args(1); octave_value argp = pivoted ? args(2) : octave_value ();
--- a/libinterp/corefcn/matrix_type.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/matrix_type.cc Sat Dec 05 15:59:22 2015 -0800 @@ -119,8 +119,8 @@ @code{matrix_type} will return the correct classification of the matrix.\n\ @end deftypefn") { + octave_value retval; int nargin = args.length (); - octave_value retval; if (nargin == 0 || nargin > 4) print_usage ();
--- a/libinterp/corefcn/tril.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/tril.cc Sat Dec 05 15:59:22 2015 -0800 @@ -189,24 +189,25 @@ do_trilu (const std::string& name, const octave_value_list& args) { - bool lower = name == "tril"; + bool lower = (name == "tril"); octave_value retval; int nargin = args.length (); octave_idx_type k = 0; bool pack = false; + if (nargin >= 2 && args(nargin-1).is_string ()) { pack = args(nargin-1).string_value () == "pack"; nargin--; } + if (nargin < 1 || nargin > 2) + print_usage (); + if (nargin == 2) k = args(1).int_value (true); - if (nargin < 1 || nargin > 2) - print_usage (); - octave_value arg = args(0); dim_vector dims = arg.dims ();
--- a/libinterp/corefcn/utils.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/corefcn/utils.cc Sat Dec 05 15:59:22 2015 -0800 @@ -1013,11 +1013,11 @@ int nargin = args.length (); - std::string dir; - if (nargin < 1 || nargin > 2) print_usage (); + std::string dir; + dir = args(0).xstring_value ("dir_in_loadpath: DIR must be a directory name"); if (nargin == 1)
--- a/libinterp/dldfcn/__glpk__.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/__glpk__.cc Sat Dec 05 15:59:22 2015 -0800 @@ -341,14 +341,14 @@ Undocumented internal function.\n\ @end deftypefn") { - // The list of values to return. See the declaration in oct-obj.h octave_value_list retval; #if defined (HAVE_GLPK) - int nrhs = args.length (); + int nargin = args.length (); - if (nrhs != 9) + // FIXME: Should we even need checking for an internal function? + if (nargin != 9) print_usage (); //-- 1nd Input. A column array containing the objective function
--- a/libinterp/dldfcn/__magick_read__.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/__magick_read__.cc Sat Dec 05 15:59:22 2015 -0800 @@ -1584,6 +1584,7 @@ @end deftypefn") { octave_value retval; + #ifndef HAVE_MAGICK gripe_disabled_feature ("imfinfo", "Image IO"); #else @@ -2254,6 +2255,7 @@ @end deftypefn") { octave_value retval; + #ifndef HAVE_MAGICK gripe_disabled_feature ("imformats", "Image IO"); #else
--- a/libinterp/dldfcn/__osmesa_print__.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/__osmesa_print__.cc Sat Dec 05 15:59:22 2015 -0800 @@ -95,7 +95,7 @@ int nargin = args.length (); - if (! (nargin == 1 || nargin == 3)) + if (nargin != 1 && nargin != 3) print_usage (); if (nargin == 3)
--- a/libinterp/dldfcn/audiodevinfo.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/audiodevinfo.cc Sat Dec 05 15:59:22 2015 -0800 @@ -2350,7 +2350,7 @@ audiorecorder *recorder = get_recorder (args(0)); if (! recorder) - print_usage (); + print_usage (); if (args.length () == 1) recorder->record ();
--- a/libinterp/dldfcn/chol.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/chol.cc Sat Dec 05 15:59:22 2015 -0800 @@ -783,9 +783,9 @@ @seealso{chol, cholupdate, choldelete, cholshift}\n\ @end deftypefn") { - octave_idx_type nargin = args.length (); + octave_value_list retval; - octave_value_list retval; + octave_idx_type nargin = args.length (); if (nargin != 3) print_usage (); @@ -1030,9 +1030,9 @@ @seealso{chol, cholupdate, cholinsert, cholshift}\n\ @end deftypefn") { - octave_idx_type nargin = args.length (); + octave_value_list retval; - octave_value_list retval; + octave_idx_type nargin = args.length (); if (nargin != 2) print_usage (); @@ -1164,9 +1164,9 @@ @seealso{chol, cholupdate, cholinsert, choldelete}\n\ @end deftypefn") { - octave_idx_type nargin = args.length (); + octave_value_list retval; - octave_value_list retval; + octave_idx_type nargin = args.length (); if (nargin != 3) print_usage ();
--- a/libinterp/dldfcn/dmperm.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/dmperm.cc Sat Dec 05 15:59:22 2015 -0800 @@ -153,8 +153,8 @@ @seealso{colamd, ccolamd}\n\ @end deftypefn") { + octave_value_list retval; int nargin = args.length (); - octave_value_list retval; if (nargin != 1) print_usage (); @@ -199,8 +199,8 @@ @seealso{dmperm}\n\ @end deftypefn") { + octave_value_list retval; int nargin = args.length (); - octave_value_list retval; if (nargin != 1) print_usage ();
--- a/libinterp/dldfcn/qr.cc Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/dldfcn/qr.cc Sat Dec 05 15:59:22 2015 -0800 @@ -756,8 +756,9 @@ @seealso{qr, qrinsert, qrdelete, qrshift}\n\ @end deftypefn") { + octave_value_list retval; + octave_idx_type nargin = args.length (); - octave_value_list retval; if (nargin != 4) print_usage (); @@ -941,8 +942,9 @@ @seealso{qr, qrupdate, qrdelete, qrshift}\n\ @end deftypefn") { + octave_value_list retval; + octave_idx_type nargin = args.length (); - octave_value_list retval; if (nargin < 4 || nargin > 5) print_usage (); @@ -1157,8 +1159,8 @@ @seealso{qr, qrupdate, qrinsert, qrshift}\n\ @end deftypefn") { + octave_value_list retval; octave_idx_type nargin = args.length (); - octave_value_list retval; if (nargin < 3 || nargin > 4) print_usage (); @@ -1406,8 +1408,8 @@ @seealso{qr, qrupdate, qrinsert, qrdelete}\n\ @end deftypefn") { + octave_value_list retval; octave_idx_type nargin = args.length (); - octave_value_list retval; if (nargin != 4) print_usage ();
--- a/libinterp/parse-tree/lex.ll Sat Dec 05 15:10:49 2015 -0800 +++ b/libinterp/parse-tree/lex.ll Sat Dec 05 15:59:22 2015 -0800 @@ -24,7 +24,7 @@ We are using the pure parser interface and the reentrant lexer interface but the Octave parser and lexer are NOT properly reentrant because both still use many global variables. It should be -safe to create a parser object and call it while anotehr parser +safe to create a parser object and call it while another parser object is active (to parse a callback function while the main interactive parser is waiting for input, for example) if you take care to properly save and restore (typically with an unwind_protect @@ -1912,16 +1912,14 @@ { octave_value retval; - int argc = args.length () + 1; - - string_vector argv = args.make_argv ("iskeyword"); - - if (argc < 1 || argc > 2) + int nargin = args.length (); + + if (nargin > 1) print_usage (); - if (argc == 1) + if (nargin == 0) { - // Neither set and get are keywords. See the note in the + // Neither set nor get are keywords. See the note in the // is_keyword function for additional details. string_vector lst (TOTAL_KEYWORDS); @@ -1930,19 +1928,20 @@ for (int i = 0; i < TOTAL_KEYWORDS; i++) { - std::string tmp = wordlist[i].name; - - if (! (tmp == "set" || tmp == "get")) - lst[j++] = tmp; + std::string kword = wordlist[i].name; + + if (kword != "set" && kword != "get") + lst[j++] = kword; } lst.resize (j); retval = Cell (lst.sort ()); } - else if (argc == 2) + else { - retval = is_keyword (argv[1]); + std::string name = args(0).xstring_value ("iskeyword: NAME must be a string"); + retval = is_keyword (name); } return retval; @@ -1953,6 +1952,11 @@ %!assert (iskeyword ("for")) %!assert (iskeyword ("fort"), false) %!assert (iskeyword ("fft"), false) +%!assert (iskeyword ("get"), false) +%!assert (iskeyword ("set"), false) + +%!error iskeyword ("A", "B") +%!error <NAME must be a string> iskeyword (1) */