# HG changeset patch # User Rik # Date 1454362161 28800 # Node ID 26f85aa072de4c00a3c48e090a099a3b854cb370 # Parent 7705a858262b2ee3c91083e1c3a22053475c63fa maint: Replace instances of goto in liboctave where convenient. * CMatrix.cc (operator >>): Replace "goto done;" with "return is;". * CNDArray.cc (operator >>): Replace "goto done;" with "return is;". * lo-specfun.cc (gammainc (various)) : Rename return variable result to retval. Replace "goto done;" with "return XXX ();" where XXX is a container such as Matrix, NDArray, FloatMatrix, FloatNDArray. * lo-specfun.cc (gammainc (double, double, err), gammainc (float,float, err)): Move input validation to top of function. * randpoisson.c (poisson_cdf_lookup): Place action of if statement on separate line. * cmd-edit.cc (do_decode_prompt_string): Replace goto statement with break. Rename variable result to retval. Rename variable temp to tmpstr. Place cases of switch statement in mostly alphabetical order. Use single quotes when describing a single character. Use temporary number buffer of 32, not 128. * oct-sort.cc (sort): Replace "goto fail;" with "return;" diff -r 7705a858262b -r 26f85aa072de liboctave/array/CMatrix.cc --- a/liboctave/array/CMatrix.cc Sun Jan 31 19:26:47 2016 -0800 +++ b/liboctave/array/CMatrix.cc Mon Feb 01 13:29:21 2016 -0800 @@ -3452,12 +3452,10 @@ if (is) a.elem (i, j) = tmp; else - goto done; + return is; } } -done: - return is; } diff -r 7705a858262b -r 26f85aa072de liboctave/array/CNDArray.cc --- a/liboctave/array/CNDArray.cc Sun Jan 31 19:26:47 2016 -0800 +++ b/liboctave/array/CNDArray.cc Mon Feb 01 13:29:21 2016 -0800 @@ -865,12 +865,10 @@ if (is) a.elem (i) = tmp; else - goto done; + return is; } } -done: - return is; } diff -r 7705a858262b -r 26f85aa072de liboctave/numeric/lo-specfun.cc --- a/liboctave/numeric/lo-specfun.cc Sun Jan 31 19:26:47 2016 -0800 +++ b/liboctave/numeric/lo-specfun.cc Mon Feb 01 13:29:21 2016 -0800 @@ -2563,14 +2563,14 @@ double gammainc (double x, double a, bool& err) { - double retval; - - err = false; - if (a < 0.0 || x < 0.0) (*current_liboctave_error_handler) ("gammainc: A and X must be non-negative"); + err = false; + + double retval; + F77_XFCN (xgammainc, XGAMMAINC, (a, x, retval)); return retval; @@ -2582,24 +2582,19 @@ octave_idx_type nr = a.rows (); octave_idx_type nc = a.cols (); - Matrix result (nr, nc); - Matrix retval; + Matrix retval (nr, nc); bool err; for (octave_idx_type j = 0; j < nc; j++) for (octave_idx_type i = 0; i < nr; i++) { - result(i,j) = gammainc (x, a(i,j), err); + retval(i,j) = gammainc (x, a(i,j), err); if (err) - goto done; // FIXME: why not just use return to exit? + return Matrix (); } - retval = result; - -done: - return retval; } @@ -2609,33 +2604,25 @@ octave_idx_type nr = x.rows (); octave_idx_type nc = x.cols (); - Matrix result (nr, nc); - Matrix retval; + Matrix retval (nr, nc); bool err; for (octave_idx_type j = 0; j < nc; j++) for (octave_idx_type i = 0; i < nr; i++) { - result(i,j) = gammainc (x(i,j), a, err); + retval(i,j) = gammainc (x(i,j), a, err); if (err) - goto done; // FIXME: why not just use return to exit? + return Matrix (); } - retval = result; - -done: - return retval; } Matrix gammainc (const Matrix& x, const Matrix& a) { - Matrix result; - Matrix retval; - octave_idx_type nr = x.rows (); octave_idx_type nc = x.cols (); @@ -2647,23 +2634,19 @@ ("gammainc: nonconformant arguments (arg 1 is %dx%d, arg 2 is %dx%d)", nr, nc, a_nr, a_nc); - result.resize (nr, nc); + Matrix retval (nr, nc); bool err; for (octave_idx_type j = 0; j < nc; j++) for (octave_idx_type i = 0; i < nr; i++) { - result(i,j) = gammainc (x(i,j), a(i,j), err); + retval(i,j) = gammainc (x(i,j), a(i,j), err); if (err) - goto done; // FIXME: why not just use return to exit? + return Matrix (); } - retval = result; - -done: - return retval; } @@ -2673,23 +2656,18 @@ dim_vector dv = a.dims (); octave_idx_type nel = dv.numel (); - NDArray retval; - NDArray result (dv); + NDArray retval (dv); bool err; for (octave_idx_type i = 0; i < nel; i++) { - result(i) = gammainc (x, a(i), err); + retval(i) = gammainc (x, a(i), err); if (err) - goto done; // FIXME: why not just use return to exit? + return NDArray (); } - retval = result; - -done: - return retval; } @@ -2699,23 +2677,18 @@ dim_vector dv = x.dims (); octave_idx_type nel = dv.numel (); - NDArray retval; - NDArray result (dv); + NDArray retval (dv); bool err; for (octave_idx_type i = 0; i < nel; i++) { - result(i) = gammainc (x(i), a, err); + retval(i) = gammainc (x(i), a, err); if (err) - goto done; // FIXME: why not just use return to exit? + return NDArray (); } - retval = result; - -done: - return retval; } @@ -2735,37 +2708,32 @@ x_str.c_str (), a_str. c_str ()); } - NDArray retval; - NDArray result (dv); + NDArray retval (dv); bool err; for (octave_idx_type i = 0; i < nel; i++) { - result(i) = gammainc (x(i), a(i), err); + retval(i) = gammainc (x(i), a(i), err); if (err) - goto done; // FIXME: why not just use return to exit? + return NDArray (); } - retval = result; - -done: - return retval; } float gammainc (float x, float a, bool& err) { - float retval; - - err = false; - if (a < 0.0 || x < 0.0) (*current_liboctave_error_handler) ("gammainc: A and X must be non-negative"); + err = false; + + float retval; + F77_XFCN (xsgammainc, XSGAMMAINC, (a, x, retval)); return retval; @@ -2777,24 +2745,19 @@ octave_idx_type nr = a.rows (); octave_idx_type nc = a.cols (); - FloatMatrix result (nr, nc); - FloatMatrix retval; + FloatMatrix retval (nr, nc); bool err; for (octave_idx_type j = 0; j < nc; j++) for (octave_idx_type i = 0; i < nr; i++) { - result(i,j) = gammainc (x, a(i,j), err); + retval(i,j) = gammainc (x, a(i,j), err); if (err) - goto done; // FIXME: why not just use return to exit? + return FloatMatrix (); } - retval = result; - -done: - return retval; } @@ -2804,33 +2767,25 @@ octave_idx_type nr = x.rows (); octave_idx_type nc = x.cols (); - FloatMatrix result (nr, nc); - FloatMatrix retval; + FloatMatrix retval (nr, nc); bool err; for (octave_idx_type j = 0; j < nc; j++) for (octave_idx_type i = 0; i < nr; i++) { - result(i,j) = gammainc (x(i,j), a, err); + retval(i,j) = gammainc (x(i,j), a, err); if (err) - goto done; // FIXME: why not just use return to exit? + return FloatMatrix (); } - retval = result; - -done: - return retval; } FloatMatrix gammainc (const FloatMatrix& x, const FloatMatrix& a) { - FloatMatrix result; - FloatMatrix retval; - octave_idx_type nr = x.rows (); octave_idx_type nc = x.cols (); @@ -2842,23 +2797,19 @@ ("gammainc: nonconformant arguments (arg 1 is %dx%d, arg 2 is %dx%d)", nr, nc, a_nr, a_nc); - result.resize (nr, nc); + FloatMatrix retval (nr, nc); bool err; for (octave_idx_type j = 0; j < nc; j++) for (octave_idx_type i = 0; i < nr; i++) { - result(i,j) = gammainc (x(i,j), a(i,j), err); + retval(i,j) = gammainc (x(i,j), a(i,j), err); if (err) - goto done; // FIXME: why not just use return to exit? + return FloatMatrix (); } - retval = result; - -done: - return retval; } @@ -2868,23 +2819,18 @@ dim_vector dv = a.dims (); octave_idx_type nel = dv.numel (); - FloatNDArray retval; - FloatNDArray result (dv); + FloatNDArray retval (dv); bool err; for (octave_idx_type i = 0; i < nel; i++) { - result(i) = gammainc (x, a(i), err); + retval(i) = gammainc (x, a(i), err); if (err) - goto done; // FIXME: why not just use return to exit? + return FloatNDArray (); } - retval = result; - -done: - return retval; } @@ -2894,23 +2840,18 @@ dim_vector dv = x.dims (); octave_idx_type nel = dv.numel (); - FloatNDArray retval; - FloatNDArray result (dv); + FloatNDArray retval (dv); bool err; for (octave_idx_type i = 0; i < nel; i++) { - result(i) = gammainc (x(i), a, err); + retval(i) = gammainc (x(i), a, err); if (err) - goto done; // FIXME: why not just use return to exit? + return FloatNDArray (); } - retval = result; - -done: - return retval; } @@ -2920,9 +2861,6 @@ dim_vector dv = x.dims (); octave_idx_type nel = dv.numel (); - FloatNDArray retval; - FloatNDArray result; - if (dv != a.dims ()) { std::string x_str = dv.str (); @@ -2933,22 +2871,18 @@ x_str.c_str (), a_str.c_str ()); } - result.resize (dv); + FloatNDArray retval (dv); bool err; for (octave_idx_type i = 0; i < nel; i++) { - result(i) = gammainc (x(i), a(i), err); + retval(i) = gammainc (x(i), a(i), err); if (err) - goto done; // FIXME: why not just use return to exit? + return FloatNDArray (); } - retval = result; - -done: - return retval; } diff -r 7705a858262b -r 26f85aa072de liboctave/numeric/randpoisson.c --- a/liboctave/numeric/randpoisson.c Sun Jan 31 19:26:47 2016 -0800 +++ b/liboctave/numeric/randpoisson.c Mon Feb 01 13:29:21 2016 -0800 @@ -350,7 +350,8 @@ p[i] = (double) k; continue; } - if (++k < tableidx) goto nextk; + if (++k < tableidx) + goto nextk; /* We only need high values of the table very rarely so we * don't automatically compute the entire table. */ @@ -401,7 +402,8 @@ p[i] = (float) k; continue; } - if (++k < tableidx) goto nextk; + if (++k < tableidx) + goto nextk; while (tableidx < TABLESIZE) { diff -r 7705a858262b -r 26f85aa072de liboctave/util/cmd-edit.cc --- a/liboctave/util/cmd-edit.cc Sun Jan 31 19:26:47 2016 -0800 +++ b/liboctave/util/cmd-edit.cc Mon Feb 01 13:29:21 2016 -0800 @@ -1556,8 +1556,8 @@ std::string command_editor::do_decode_prompt_string (const std::string& s) { - std::string result; - std::string temp; + std::string retval; + std::string tmpstr; size_t i = 0; size_t slen = s.length (); int c; @@ -1586,37 +1586,22 @@ { int n = read_octal (s.substr (i, 3)); - temp = "\\"; + tmpstr = "\\"; if (n != -1) { - i += 3; - temp[0] = n; + tmpstr[0] = n; + i += 2; // i++ makes this += 3 later } - c = 0; - goto add_string; + break; } case 'a': { - temp = '\a'; - - goto add_string; - } - - case 'e': - { - temp = '\033'; + tmpstr = '\a'; - goto add_string; - } - - case 'r': - { - temp = '\r'; - - goto add_string; + break; } case 'd': @@ -1629,32 +1614,72 @@ octave_localtime now; if (c == 'd') - temp = now.strftime ("%a %b %d"); + tmpstr = now.strftime ("%a %b %d"); else if (c == 't') - temp = now.strftime ("%H:%M:%S"); + tmpstr = now.strftime ("%H:%M:%S"); else if (c == 'T') - temp = now.strftime ("%I:%M:%S"); + tmpstr = now.strftime ("%I:%M:%S"); else if (c == '@') - temp = now.strftime ("%I:%M %p"); + tmpstr = now.strftime ("%I:%M %p"); else if (c == 'A') - temp = now.strftime ("%H:%M"); + tmpstr = now.strftime ("%H:%M"); + + break; + } + + case 'e': + { + tmpstr = '\033'; + + break; + } - goto add_string; + case 'h': + { + tmpstr = octave_env::get_host_name (); + + size_t pos = tmpstr.find ('.'); + + if (pos != std::string::npos) + tmpstr.resize (pos); + + break; + } + + case 'H': + { + tmpstr = octave_env::get_host_name (); + + break; } case 'n': { - temp = newline_chars (); + tmpstr = newline_chars (); + + break; + } - goto add_string; + case 'r': + { + tmpstr = '\r'; + + break; } case 's': { - temp = octave_env::get_program_name (); - temp = octave_env::base_pathname (temp); + tmpstr = octave_env::get_program_name (); + tmpstr = octave_env::base_pathname (tmpstr); + + break; + } - goto add_string; + case 'u': + { + tmpstr = octave_env::get_user_name (); + + break; } case 'w': @@ -1662,135 +1687,102 @@ { try { - temp = octave_env::get_current_directory (); + tmpstr = octave_env::get_current_directory (); } catch (const octave_execution_exception&) { - temp = ""; + tmpstr = ""; } std::string home_dir = octave_env::get_home_directory (); - if (c == 'W' && (home_dir.empty () || temp != home_dir)) + if (c == 'W' && (home_dir.empty () || tmpstr != home_dir)) { - if (temp != "/" && temp != "//") + if (tmpstr != "/" && tmpstr != "//") { - size_t pos = temp.rfind ('/'); + size_t pos = tmpstr.rfind ('/'); if (pos != std::string::npos && pos != 0) - temp = temp.substr (pos + 1); + tmpstr = tmpstr.substr (pos + 1); } } else - temp = octave_env::polite_directory_format (temp); - - goto add_string; - } - - case 'u': - { - temp = octave_env::get_user_name (); - - goto add_string; - } - - case 'H': - { - temp = octave_env::get_host_name (); - - goto add_string; - } + tmpstr = octave_env::polite_directory_format (tmpstr); - case 'h': - { - temp = octave_env::get_host_name (); - - size_t pos = temp.find ('.'); - - if (pos != std::string::npos) - temp.resize (pos); - - goto add_string; - } - - case '#': - { - char number_buffer[128]; - sprintf (number_buffer, "%d", command_number); - temp = number_buffer; - - goto add_string; + break; } case '!': { - char number_buffer[128]; + char number_buffer[32]; int num = command_history::current_number (); if (num > 0) sprintf (number_buffer, "%d", num); else strcpy (number_buffer, "!"); - temp = number_buffer; + tmpstr = number_buffer; + + break; + } - goto add_string; + case '#': + { + char number_buffer[32]; + sprintf (number_buffer, "%d", command_number); + tmpstr = number_buffer; + + break; } case '$': { #if defined (HAVE_GETEUID) - temp = (::geteuid () == 0 ? "#" : "$"); + tmpstr = (::geteuid () == 0 ? '#' : '$'); #else - temp = "$"; + tmpstr = '$'; #endif - goto add_string; + break; } #if defined (USE_READLINE) case '[': case ']': { - temp.resize (1); + tmpstr.resize (1); - temp[0] = ((c == '[') - ? ::octave_rl_prompt_start_ignore () - : ::octave_rl_prompt_end_ignore ()); + tmpstr[0] = ((c == '[') + ? ::octave_rl_prompt_start_ignore () + : ::octave_rl_prompt_end_ignore ()); - goto add_string; + break; } #endif case '\\': { - temp = "\\"; + tmpstr = "\\"; - goto add_string; + break; } default: { - temp = "\\ "; - temp[1] = c; - - goto add_string; - } - - add_string: - { - if (c) - i++; - - result.append (temp); + tmpstr = "\\ "; + tmpstr[1] = c; break; } } + + retval.append (tmpstr); + i++; // Move past processed escape character } else - result += c; + retval += c; } - return result; + return retval; } int diff -r 7705a858262b -r 26f85aa072de liboctave/util/oct-sort.cc --- a/liboctave/util/oct-sort.cc Sun Jan 31 19:26:47 2016 -0800 +++ b/liboctave/util/oct-sort.cc Mon Feb 01 13:29:21 2016 -0800 @@ -1415,7 +1415,7 @@ /* Identify next run. */ n = count_run (data + lo, nremaining, descending, comp); if (n < 0) - goto fail; + return; if (descending) std::reverse (data + lo, data + lo + n); /* If short, extend to min (minrun, nremaining). */ @@ -1432,7 +1432,7 @@ ms->pending[ms->n].len = n; ms->n++; if (merge_collapse (data, comp) < 0) - goto fail; + return; /* Advance to find next run. */ lo += n; nremaining -= n; @@ -1441,9 +1441,6 @@ merge_force_collapse (data, comp); } - -fail: - return; } template @@ -1475,7 +1472,7 @@ /* Identify next run. */ n = count_run (data + lo, nremaining, descending, comp); if (n < 0) - goto fail; + return; if (descending) { std::reverse (data + lo, data + lo + n); @@ -1495,7 +1492,7 @@ ms->pending[ms->n].len = n; ms->n++; if (merge_collapse (data, idx, comp) < 0) - goto fail; + return; /* Advance to find next run. */ lo += n; nremaining -= n; @@ -1504,9 +1501,6 @@ merge_force_collapse (data, idx, comp); } - -fail: - return; } template