Mercurial > octave-nkf
comparison libinterp/corefcn/utils.cc @ 20591:0650b8431037
eliminate more simple uses of error_state
* besselj.cc, bitfcns.cc, utils.cc, chol.cc, ov-java.cc:
Eliminate simple uses of error_state.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 05 Oct 2015 21:37:03 -0400 |
parents | dd6345fd8a97 |
children | ba2b07c13913 |
comparison
equal
deleted
inserted
replaced
20590:1a0a433c8263 | 20591:0650b8431037 |
---|---|
1213 | 1213 |
1214 if (nr == 1 || nc == 1) | 1214 if (nr == 1 || nc == 1) |
1215 { | 1215 { |
1216 Array<double> v = a.vector_value (); | 1216 Array<double> v = a.vector_value (); |
1217 | 1217 |
1218 if (error_state) | |
1219 return; | |
1220 | |
1221 octave_idx_type n = v.numel (); | 1218 octave_idx_type n = v.numel (); |
1222 dim.resize (n); | 1219 dim.resize (n); |
1223 for (octave_idx_type i = 0; i < n; i++) | 1220 for (octave_idx_type i = 0; i < n; i++) |
1224 dim(i) = static_cast<int> (fix (v(i))); | 1221 dim(i) = static_cast<int> (fix (v(i))); |
1225 } | 1222 } |
1226 else | 1223 else |
1227 error ("%s (A): use %s (size (A)) instead", warn_for, warn_for); | 1224 error ("%s (A): use %s (size (A)) instead", warn_for, warn_for); |
1228 } | 1225 } |
1229 | 1226 |
1230 if (! error_state) | 1227 check_dimensions (dim, warn_for); |
1231 check_dimensions (dim, warn_for); // May set error_state. | |
1232 } | 1228 } |
1233 | 1229 |
1234 | 1230 |
1235 void | 1231 void |
1236 get_dimensions (const octave_value& a, const char *warn_for, | 1232 get_dimensions (const octave_value& a, const char *warn_for, |
1247 | 1243 |
1248 if ((nr == 1 && nc == 2) || (nr == 2 && nc == 1)) | 1244 if ((nr == 1 && nc == 2) || (nr == 2 && nc == 1)) |
1249 { | 1245 { |
1250 Array<double> v = a.vector_value (); | 1246 Array<double> v = a.vector_value (); |
1251 | 1247 |
1252 if (error_state) | |
1253 return; | |
1254 | 1248 |
1255 nr = static_cast<octave_idx_type> (fix (v (0))); | 1249 nr = static_cast<octave_idx_type> (fix (v (0))); |
1256 nc = static_cast<octave_idx_type> (fix (v (1))); | 1250 nc = static_cast<octave_idx_type> (fix (v (1))); |
1257 } | 1251 } |
1258 else | 1252 else |
1259 error ("%s (A): use %s (size (A)) instead", warn_for, warn_for); | 1253 error ("%s (A): use %s (size (A)) instead", warn_for, warn_for); |
1260 } | 1254 } |
1261 | 1255 |
1262 if (! error_state) | 1256 check_dimensions (nr, nc, warn_for); |
1263 check_dimensions (nr, nc, warn_for); // May set error_state. | |
1264 } | 1257 } |
1265 | 1258 |
1266 void | 1259 void |
1267 get_dimensions (const octave_value& a, const octave_value& b, | 1260 get_dimensions (const octave_value& a, const octave_value& b, |
1268 const char *warn_for, octave_idx_type& nr, octave_idx_type& nc) | 1261 const char *warn_for, octave_idx_type& nr, octave_idx_type& nc) |
1271 nc = b.is_empty () ? 0 : b.int_value (); | 1264 nc = b.is_empty () ? 0 : b.int_value (); |
1272 | 1265 |
1273 if (error_state) | 1266 if (error_state) |
1274 error ("%s: expecting two scalar arguments", warn_for); | 1267 error ("%s: expecting two scalar arguments", warn_for); |
1275 else | 1268 else |
1276 check_dimensions (nr, nc, warn_for); // May set error_state. | 1269 check_dimensions (nr, nc, warn_for); |
1277 } | 1270 } |
1278 | 1271 |
1279 octave_idx_type | 1272 octave_idx_type |
1280 dims_to_numel (const dim_vector& dims, const octave_value_list& idx) | 1273 dims_to_numel (const dim_vector& dims, const octave_value_list& idx) |
1281 { | 1274 { |
1299 else | 1292 else |
1300 { | 1293 { |
1301 try | 1294 try |
1302 { | 1295 { |
1303 idx_vector jdx = idxi.index_vector (); | 1296 idx_vector jdx = idxi.index_vector (); |
1304 if (error_state) | 1297 |
1305 break; | |
1306 retval *= jdx.length (dv(i)); | 1298 retval *= jdx.length (dv(i)); |
1307 } | 1299 } |
1308 catch (index_exception& e) | 1300 catch (index_exception& e) |
1309 { | 1301 { |
1310 error ("dims_to_numel: Invalid IDX %s. %s", | 1302 error ("dims_to_numel: Invalid IDX %s. %s", |
1456 if (nargin == 2) | 1448 if (nargin == 2) |
1457 n = args(1).idx_type_value (); | 1449 n = args(1).idx_type_value (); |
1458 else if (nargin != 1) | 1450 else if (nargin != 1) |
1459 print_usage (); | 1451 print_usage (); |
1460 | 1452 |
1461 if (! error_state) | 1453 unwind_protect frame; |
1462 { | 1454 |
1463 unwind_protect frame; | 1455 frame.protect_var (discard_error_messages); |
1464 | 1456 discard_error_messages = true; |
1465 frame.protect_var (error_state); | 1457 |
1466 | 1458 try |
1467 frame.protect_var (discard_error_messages); | 1459 { |
1468 discard_error_messages = true; | 1460 idx_vector idx = args(0).index_vector (true); |
1469 | 1461 |
1470 try | 1462 if (nargin == 2) |
1471 { | 1463 retval = idx.extent (n) <= n; |
1472 idx_vector idx = args(0).index_vector (true); | 1464 else |
1473 | 1465 retval = true; |
1474 if (! error_state) | 1466 } |
1475 { | 1467 catch (const octave_execution_exception&) |
1476 if (nargin == 2) | 1468 { |
1477 retval = idx.extent (n) <= n; | 1469 retval = false; |
1478 else | |
1479 retval = true; | |
1480 } | |
1481 else | |
1482 retval = false; | |
1483 } | |
1484 catch (const octave_execution_exception&) | |
1485 { | |
1486 retval = false; | |
1487 } | |
1488 } | 1470 } |
1489 | 1471 |
1490 return retval; | 1472 return retval; |
1491 } | 1473 } |
1492 | 1474 |
1540 break; | 1522 break; |
1541 } | 1523 } |
1542 } | 1524 } |
1543 } | 1525 } |
1544 | 1526 |
1545 if (! error_state) | 1527 for (int i = 0; i < nargout; i++) |
1546 { | 1528 rcells[i].clear (dims); |
1547 for (int i = 0; i < nargout; i++) | 1529 |
1548 rcells[i].clear (dims); | 1530 for (octave_idx_type j = 0; j < numel; j++) |
1549 | 1531 { |
1550 for (octave_idx_type j = 0; j < numel; j++) | 1532 for (int i = 0; i < nargin; i++) |
1551 { | 1533 if (iscell[i]) |
1552 for (int i = 0; i < nargin; i++) | 1534 new_args(i) = ccells[i](j); |
1553 if (iscell[i]) | 1535 |
1554 new_args(i) = ccells[i](j); | 1536 octave_quit (); |
1555 | 1537 |
1556 octave_quit (); | 1538 const octave_value_list tmp = fun (new_args, nargout); |
1557 | 1539 |
1558 const octave_value_list tmp = fun (new_args, nargout); | 1540 if (tmp.length () < nargout) |
1559 | 1541 { |
1560 if (tmp.length () < nargout) | 1542 error ("%s: do_simple_cellfun: internal error", fun_name); |
1561 { | 1543 break; |
1562 error ("%s: do_simple_cellfun: internal error", fun_name); | 1544 } |
1563 break; | 1545 else |
1564 } | 1546 { |
1565 else | 1547 for (int i = 0; i < nargout; i++) |
1566 { | 1548 rcells[i](j) = tmp(i); |
1567 for (int i = 0; i < nargout; i++) | 1549 } |
1568 rcells[i](j) = tmp(i); | 1550 } |
1569 } | 1551 |
1570 } | 1552 retval.resize (nargout); |
1571 } | 1553 |
1572 | 1554 for (int i = 0; i < nargout; i++) |
1573 if (! error_state) | 1555 retval(i) = rcells[i]; |
1574 { | |
1575 retval.resize (nargout); | |
1576 for (int i = 0; i < nargout; i++) | |
1577 retval(i) = rcells[i]; | |
1578 } | |
1579 | 1556 |
1580 return retval; | 1557 return retval; |
1581 } | 1558 } |
1582 | 1559 |
1583 octave_value | 1560 octave_value |