comparison src/oct-stream.cc @ 4420:3dfdbcaf4582

[project @ 2003-05-28 18:24:42 by jwe]
author jwe
date Wed, 28 May 2003 18:24:42 +0000
parents 1cae4472c624
children 82f8aae8cf20
comparison
equal deleted inserted replaced
4419:8eb47d7ff594 4420:3dfdbcaf4582
1339 { \ 1339 { \
1340 if (data_index == max_size) \ 1340 if (data_index == max_size) \
1341 { \ 1341 { \
1342 max_size *= 2; \ 1342 max_size *= 2; \
1343 \ 1343 \
1344 if (nr > 0) \ 1344 if (all_char_conv) \
1345 mval.resize (nr, max_size / nr, 0.0); \ 1345 { \
1346 if (one_elt_size_spec) \
1347 mval.resize (1, max_size, 0.0); \
1348 else if (nr > 0) \
1349 mval.resize (nr, max_size / nr, 0.0); \
1350 else \
1351 panic_impossible (); \
1352 } \
1353 else if (nr > 0) \
1354 { \
1355 if (nc <= 0) \
1356 mval.resize (nr, max_size / nr, 0.0); \
1357 else \
1358 panic_impossible (); \
1359 } \
1346 else \ 1360 else \
1347 { \ 1361 mval.resize (max_size, 1, 0.0); \
1348 if (all_char_conv && one_elt_size_spec) \
1349 mval.resize (1, max_size, 0.0); \
1350 else \
1351 mval.resize (max_size, 1, 0.0); \
1352 } \
1353 \ 1362 \
1354 data = mval.fortran_vec (); \ 1363 data = mval.fortran_vec (); \
1355 } \ 1364 } \
1356 \ 1365 \
1357 data[data_index++] = tmp[i++]; \ 1366 data[data_index++] = tmp[i++]; \
1394 int final_nr = 0; 1403 int final_nr = 0;
1395 int final_nc = 0; 1404 int final_nc = 0;
1396 1405
1397 if (all_char_conv) 1406 if (all_char_conv)
1398 { 1407 {
1408 // Any of these could be resized later (if we have %s
1409 // conversions, we may read more than one element for each
1410 // conversion).
1411
1399 if (one_elt_size_spec) 1412 if (one_elt_size_spec)
1400 { 1413 {
1401 max_size = 512; 1414 max_size = 512;
1402 mval.resize (1, max_size, 0.0); 1415 mval.resize (1, max_size, 0.0);
1403 data = mval.fortran_vec ();
1404 1416
1405 if (nr > 0) 1417 if (nr > 0)
1406 max_conv = nr; 1418 max_conv = nr;
1407 } 1419 }
1408 else if (nr > 0 && nc > 0) 1420 else if (nr > 0)
1409 { 1421 {
1422 if (nc > 0)
1423 {
1424 mval.resize (nr, nc, 0.0);
1425 max_size = max_conv = nr * nc;
1426 }
1427 else
1428 {
1429 mval.resize (nr, 32, 0.0);
1430 max_size = nr * 32;
1431 }
1432 }
1433 else
1434 panic_impossible ();
1435 }
1436 else if (nr > 0)
1437 {
1438 if (nc > 0)
1439 {
1440 // Will not resize later.
1410 mval.resize (nr, nc, 0.0); 1441 mval.resize (nr, nc, 0.0);
1411 data = mval.fortran_vec ();
1412 max_size = max_conv = nr * nc;
1413 }
1414 }
1415 else if (nr > 0)
1416 {
1417 if (nc > 0)
1418 {
1419 mval.resize (nr, nc, 0.0);
1420 data = mval.fortran_vec ();
1421 max_size = nr * nc; 1442 max_size = nr * nc;
1422
1423 max_conv = max_size; 1443 max_conv = max_size;
1424 } 1444 }
1425 else 1445 else
1426 { 1446 {
1447 // Maybe resize later.
1427 mval.resize (nr, 32, 0.0); 1448 mval.resize (nr, 32, 0.0);
1428 data = mval.fortran_vec ();
1429 max_size = nr * 32; 1449 max_size = nr * 32;
1430 } 1450 }
1431 } 1451 }
1432 else 1452 else
1433 { 1453 {
1454 // Maybe resize later.
1434 mval.resize (32, 1, 0.0); 1455 mval.resize (32, 1, 0.0);
1435 data = mval.fortran_vec ();
1436 max_size = 32; 1456 max_size = 32;
1437 } 1457 }
1458
1459 data = mval.fortran_vec ();
1438 1460
1439 if (isp) 1461 if (isp)
1440 { 1462 {
1441 std::istream& is = *isp; 1463 std::istream& is = *isp;
1442 1464
1467 } 1489 }
1468 else if (data_index == max_size) 1490 else if (data_index == max_size)
1469 { 1491 {
1470 max_size *= 2; 1492 max_size *= 2;
1471 1493
1472 if (nr > 0) 1494 if (all_char_conv)
1473 mval.resize (nr, max_size / nr, 0.0); 1495 {
1496 if (one_elt_size_spec)
1497 mval.resize (1, max_size, 0.0);
1498 else if (nr > 0)
1499 mval.resize (nr, max_size / nr, 0.0);
1500 else
1501 panic_impossible ();
1502 }
1503 else if (nr > 0)
1504 {
1505 if (nc <= 0)
1506 mval.resize (nr, max_size / nr, 0.0);
1507 else
1508 panic_impossible ();
1509 }
1474 else 1510 else
1475 { 1511 mval.resize (max_size, 1, 0.0);
1476 if (all_char_conv && one_elt_size_spec)
1477 mval.resize (1, max_size, 0.0);
1478 else
1479 mval.resize (max_size, 1, 0.0);
1480 }
1481 1512
1482 data = mval.fortran_vec (); 1513 data = mval.fortran_vec ();
1483 } 1514 }
1484 1515
1485 const char *fmt = elt->text; 1516 const char *fmt = elt->text;