Mercurial > octave
diff libinterp/octave-value/ov-fcn-inline.cc @ 20797:492738d32c60
eliminate return statements after calls to print_usage
* ov-bool-mat.cc, ov-cell.cc, ov-class.cc, ov-classdef.cc,
ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc, ov-java.cc,
ov-null-mat.cc, ov-oncleanup.cc, ov-re-mat.cc, ov-struct.cc,
ov-type-conv.h, ov-typeinfo.cc, ov-usr-fcn.cc, ov.cc:
Eliminate return statements after calls to print_usage.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 03 Dec 2015 14:59:30 -0500 |
parents | 7b608fadc663 |
children | cef0448a6ed2 |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-fcn-inline.cc Fri Dec 04 10:03:38 2015 -0800 +++ b/libinterp/octave-value/ov-fcn-inline.cc Thu Dec 03 14:59:30 2015 -0500 @@ -679,149 +679,145 @@ int nargin = args.length (); - if (nargin > 0) - { - std::string fun = args(0).xstring_value ("inline: STR argument must be a string"); + if (nargin == 0) + print_usage (); + + std::string fun = args(0).xstring_value ("inline: STR argument must be a string"); + + string_vector fargs; - string_vector fargs; + if (nargin == 1) + { + bool is_arg = false; + bool in_string = false; + std::string tmp_arg; + size_t i = 0; + size_t fun_length = fun.length (); - if (nargin == 1) + while (i < fun_length) { - bool is_arg = false; - bool in_string = false; - std::string tmp_arg; - size_t i = 0; - size_t fun_length = fun.length (); + bool terminate_arg = false; + char c = fun[i++]; - while (i < fun_length) + if (in_string) { - bool terminate_arg = false; - char c = fun[i++]; + if (c == '\'' || c == '\"') + in_string = false; + } + else if (c == '\'' || c == '\"') + { + in_string = true; + if (is_arg) + terminate_arg = true; + } + else if (! isalpha (c) && c != '_') + if (! is_arg) + continue; + else if (isdigit (c)) + tmp_arg.append (1, c); + else + { + // Before we do anything remove trailing whitespaces. + while (i < fun_length && isspace (c)) + c = fun[i++]; - if (in_string) - { - if (c == '\'' || c == '\"') - in_string = false; - } - else if (c == '\'' || c == '\"') - { - in_string = true; - if (is_arg) - terminate_arg = true; - } - else if (! isalpha (c) && c != '_') - if (! is_arg) - continue; - else if (isdigit (c)) - tmp_arg.append (1, c); + // Do we have a variable or a function? + if (c != '(') + terminate_arg = true; else { - // Before we do anything remove trailing whitespaces. - while (i < fun_length && isspace (c)) - c = fun[i++]; - - // Do we have a variable or a function? - if (c != '(') - terminate_arg = true; - else - { - tmp_arg = std::string (); - is_arg = false; - } + tmp_arg = std::string (); + is_arg = false; } - else if (! is_arg) - { - if (c == 'e' || c == 'E') - { - // possible number in exponent form, not arg - if (isdigit (fun[i]) - || fun[i] == '-' || fun[i] == '+') - continue; - } - is_arg = true; - tmp_arg.append (1, c); - } - else - { - tmp_arg.append (1, c); - } - - if (terminate_arg || (i == fun_length && is_arg)) + } + else if (! is_arg) + { + if (c == 'e' || c == 'E') { - bool have_arg = false; - - for (int j = 0; j < fargs.numel (); j++) - if (tmp_arg == fargs (j)) - { - have_arg = true; - break; - } - - if (! have_arg && tmp_arg != "i" && tmp_arg != "j" - && tmp_arg != "NaN" && tmp_arg != "nan" - && tmp_arg != "Inf" && tmp_arg != "inf" - && tmp_arg != "NA" && tmp_arg != "pi" - && tmp_arg != "e" && tmp_arg != "eps") - fargs.append (tmp_arg); - - tmp_arg = std::string (); - is_arg = false; + // possible number in exponent form, not arg + if (isdigit (fun[i]) + || fun[i] == '-' || fun[i] == '+') + continue; } - } - - // Sort the arguments into ascii order. - fargs.sort (); - - if (fargs.numel () == 0) - fargs.append (std::string ("x")); - - } - else if (nargin == 2 && args(1).is_numeric_type ()) - { - if (! args(1).is_scalar_type ()) - { - error ("inline: N must be an integer"); - return retval; - } - - int n = args(1).int_value ("inline: N must be an integer"); - - if (n >= 0) - { - fargs.resize (n+1); - - fargs(0) = "x"; - - for (int i = 1; i < n+1; i++) - { - std::ostringstream buf; - buf << "P" << i; - fargs(i) = buf.str (); - } + is_arg = true; + tmp_arg.append (1, c); } else { - error ("inline: N must be a positive integer or zero"); - return retval; + tmp_arg.append (1, c); + } + + if (terminate_arg || (i == fun_length && is_arg)) + { + bool have_arg = false; + + for (int j = 0; j < fargs.numel (); j++) + if (tmp_arg == fargs (j)) + { + have_arg = true; + break; + } + + if (! have_arg && tmp_arg != "i" && tmp_arg != "j" + && tmp_arg != "NaN" && tmp_arg != "nan" + && tmp_arg != "Inf" && tmp_arg != "inf" + && tmp_arg != "NA" && tmp_arg != "pi" + && tmp_arg != "e" && tmp_arg != "eps") + fargs.append (tmp_arg); + + tmp_arg = std::string (); + is_arg = false; + } + } + + // Sort the arguments into ascii order. + fargs.sort (); + + if (fargs.numel () == 0) + fargs.append (std::string ("x")); + + } + else if (nargin == 2 && args(1).is_numeric_type ()) + { + if (! args(1).is_scalar_type ()) + { + error ("inline: N must be an integer"); + return retval; + } + + int n = args(1).int_value ("inline: N must be an integer"); + + if (n >= 0) + { + fargs.resize (n+1); + + fargs(0) = "x"; + + for (int i = 1; i < n+1; i++) + { + std::ostringstream buf; + buf << "P" << i; + fargs(i) = buf.str (); } } else { - fargs.resize (nargin - 1); - - for (int i = 1; i < nargin; i++) - { - std::string s = args(i).xstring_value ("inline: additional arguments must be strings"); - fargs(i-1) = s; - } + error ("inline: N must be a positive integer or zero"); + return retval; } - - retval = octave_value (new octave_fcn_inline (fun, fargs)); } else - print_usage (); + { + fargs.resize (nargin - 1); - return retval; + for (int i = 1; i < nargin; i++) + { + std::string s = args(i).xstring_value ("inline: additional arguments must be strings"); + fargs(i-1) = s; + } + } + + return octave_value (new octave_fcn_inline (fun, fargs)); } /* @@ -855,17 +851,15 @@ int nargin = args.length (); - if (nargin == 1) - { - octave_fcn_inline* fn = args(0).fcn_inline_value (true); + if (nargin != 1) + print_usage (); + + octave_fcn_inline* fn = args(0).fcn_inline_value (true); - if (fn) - retval = octave_value (fn->fcn_text ()); - else - error ("formula: FUN must be an inline function"); - } + if (fn) + retval = octave_value (fn->fcn_text ()); else - print_usage (); + error ("formula: FUN must be an inline function"); return retval; } @@ -892,26 +886,24 @@ int nargin = args.length (); - if (nargin == 1) - { - octave_fcn_inline *fn = args(0).fcn_inline_value (true); + if (nargin != 1) + print_usage (); - if (fn) - { - string_vector t1 = fn->fcn_arg_names (); + octave_fcn_inline *fn = args(0).fcn_inline_value (true); - Cell t2 (dim_vector (t1.numel (), 1)); - - for (int i = 0; i < t1.numel (); i++) - t2(i) = t1(i); + if (fn) + { + string_vector t1 = fn->fcn_arg_names (); - retval = t2; - } - else - error ("argnames: FUN must be an inline function"); + Cell t2 (dim_vector (t1.numel (), 1)); + + for (int i = 0; i < t1.numel (); i++) + t2(i) = t1(i); + + retval = t2; } else - print_usage (); + error ("argnames: FUN must be an inline function"); return retval; } @@ -951,57 +943,55 @@ int nargin = args.length (); - if (nargin == 1) - { - std::string old_func; - octave_fcn_inline* old = 0; - bool func_is_string = true; + if (nargin != 1) + print_usage (); - if (args(0).is_string ()) - old_func = args(0).string_value (); - else - { - old = args(0).fcn_inline_value (true); - func_is_string = false; + std::string old_func; + octave_fcn_inline* old = 0; + bool func_is_string = true; - if (old) - old_func = old->fcn_text (); - else - error ("vectorize: FUN must be a string or inline function"); - } + if (args(0).is_string ()) + old_func = args(0).string_value (); + else + { + old = args(0).fcn_inline_value (true); + func_is_string = false; - std::string new_func; - size_t i = 0; + if (old) + old_func = old->fcn_text (); + else + error ("vectorize: FUN must be a string or inline function"); + } - while (i < old_func.length ()) - { - std::string t1 = old_func.substr (i, 1); + std::string new_func; + size_t i = 0; - if (t1 == "*" || t1 == "/" || t1 == "\\" || t1 == "^") - { - if (i && old_func.substr (i-1, 1) != ".") - new_func.append ("."); + while (i < old_func.length ()) + { + std::string t1 = old_func.substr (i, 1); - // Special case for ** operator. - if (t1 == "*" && i < (old_func.length () - 1) - && old_func.substr (i+1, 1) == "*") - { - new_func.append ("*"); - i++; - } + if (t1 == "*" || t1 == "/" || t1 == "\\" || t1 == "^") + { + if (i && old_func.substr (i-1, 1) != ".") + new_func.append ("."); + + // Special case for ** operator. + if (t1 == "*" && i < (old_func.length () - 1) + && old_func.substr (i+1, 1) == "*") + { + new_func.append ("*"); + i++; } - new_func.append (t1); - i++; } + new_func.append (t1); + i++; + } - if (func_is_string) - retval = octave_value (new_func); - else - retval = octave_value (new octave_fcn_inline - (new_func, old->fcn_arg_names ())); - } + if (func_is_string) + retval = octave_value (new_func); else - print_usage (); + retval = octave_value (new octave_fcn_inline + (new_func, old->fcn_arg_names ())); return retval; }