Mercurial > hg > octave-nkf
diff libinterp/corefcn/variables.cc @ 20792:fd0efcdb3718
use new string_value method to handle value extraction errors
* dirfns.cc, file-io.cc, gammainc.cc, help.cc, load-path.cc,
octave-link.cc, qz.cc, regexp.cc, strfns.cc, syscalls.cc, time.cc,
variables.cc: Use new string_value method.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 08 Oct 2015 19:00:51 -0400 |
parents | 4bed806ee3d4 |
children |
line wrap: on
line diff
--- a/libinterp/corefcn/variables.cc +++ b/libinterp/corefcn/variables.cc @@ -147,39 +147,34 @@ if (! retval) { - if (arg.is_string ()) + std::string s = arg.string_value ("%s: expecting first argument to be a string", + warn_for.c_str ()); + + std::string cmd = header; + cmd.append (s); + cmd.append (trailer); + + int parse_status; + + eval_string (cmd, true, parse_status, 0); + + if (parse_status == 0) { - std::string s = arg.string_value (); - - std::string cmd = header; - cmd.append (s); - cmd.append (trailer); - - int parse_status; - - eval_string (cmd, true, parse_status, 0); - - if (parse_status == 0) + retval = is_valid_function (fname, warn_for, 0); + + if (! retval) { - retval = is_valid_function (fname, warn_for, 0); - - if (! retval) - { - error ("%s: '%s' is not valid as a function", - warn_for.c_str (), fname.c_str ()); - return retval; - } - - warning ("%s: passing function body as a string is obsolete; please use anonymous functions", - warn_for.c_str ()); + error ("%s: '%s' is not valid as a function", + warn_for.c_str (), fname.c_str ()); + return retval; } - else - error ("%s: '%s' is not valid as a function", - warn_for.c_str (), fname.c_str ()); + + warning ("%s: passing function body as a string is obsolete; please use anonymous functions", + warn_for.c_str ()); } else - error ("%s: expecting first argument to be a string", - warn_for.c_str ()); + error ("%s: '%s' is not valid as a function", + warn_for.c_str (), fname.c_str ()); } return retval; @@ -595,29 +590,19 @@ if (nargin == 1 || nargin == 2) { - if (args(0).is_string ()) + std::string name = args(0).string_value ("exist: NAME must be a string"); + + if (nargin == 2) { - std::string name = args(0).string_value (); - - if (nargin == 2) - { - if (args(1).is_string ()) - { - std::string type = args(1).string_value (); - - if (type == "class") - warning ("exist: \"class\" type argument is not implemented"); - - retval = symbol_exist (name, type); - } - else - error ("exist: TYPE must be a string"); - } - else - retval = symbol_exist (name); + std::string type = args(1).string_value ("exist: TYPE must be a string"); + + if (type == "class") + warning ("exist: \"class\" type argument is not implemented"); + + retval = symbol_exist (name, type); } else - error ("exist: NAME must be a string"); + retval = symbol_exist (name); } else print_usage (); @@ -826,27 +811,22 @@ if (nargin == 1) { - std::string sval = args(0).string_value (); - - if (! error_state) + std::string sval = args(0).string_value ("%s: argument must be a single character", nm); + + switch (sval.length ()) { - switch (sval.length ()) - { - case 1: - var = sval[0]; - break; - - case 0: - var = '\0'; - break; - - default: - error ("%s: argument must be a single character", nm); - break; - } + case 1: + var = sval[0]; + break; + + case 0: + var = '\0'; + break; + + default: + error ("%s: argument must be a single character", nm); + break; } - else - error ("%s: argument must be a single character", nm); } else if (nargin > 1) print_usage (); @@ -954,17 +934,12 @@ if (nargin == 1) { - if (args(0).is_string ()) - { - std::string sval = args(0).string_value (); - - if (empty_ok || ! sval.empty ()) - var = sval; - else - error ("%s: value must not be empty", nm); - } + std::string sval = args(0).string_value ("%s: first argument must be a string", nm); + + if (empty_ok || ! sval.empty ()) + var = sval; else - error ("%s: first argument must be a string", nm); + error ("%s: value must not be empty", nm); } else if (nargin > 1) print_usage (); @@ -995,24 +970,19 @@ if (nargin == 1) { - if (args(0).is_string ()) + std::string sval = args(0).string_value ("%s: first argument must be a string", nm); + + int i = 0; + for (; i < nchoices; i++) { - std::string sval = args(0).string_value (); - - int i = 0; - for (; i < nchoices; i++) + if (sval == choices[i]) { - if (sval == choices[i]) - { - var = i; - break; - } + var = i; + break; } - if (i == nchoices) - error ("%s: value not allowed (\"%s\")", nm, sval.c_str ()); } - else - error ("%s: first argument must be a string", nm); + if (i == nchoices) + error ("%s: value not allowed (\"%s\")", nm, sval.c_str ()); } else if (nargin > 1) print_usage (); @@ -2093,13 +2063,9 @@ if (args.length () == 1) { - if (args(0).is_string ()) - { - std::string name = args(0).string_value (); - munlock (name); - } - else - error ("munlock: FCN must be a string"); + std::string name = args(0).string_value ("munlock: FCN must be a string"); + + munlock (name); } else if (args.length () == 0) { @@ -2131,13 +2097,9 @@ if (args.length () == 1) { - if (args(0).is_string ()) - { - std::string name = args(0).string_value (); - retval = mislocked (name); - } - else - error ("mislocked: FCN must be a string"); + std::string name = args(0).string_value ("mislocked: FCN must be a string"); + + retval = mislocked (name); } else if (args.length () == 0) { @@ -2712,12 +2674,9 @@ if (args.length () == 1) { - std::string name = args(0).string_value (); - - if (! error_state) - retval = symbol_table::varval (args(0).string_value ()); - else - error ("__varval__: expecting argument to be variable name"); + std::string name = args(0).string_value ("__varval__: expecting argument to be variable name"); + + retval = symbol_table::varval (args(0).string_value ()); } else print_usage ();