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)
 
 */