comparison src/file-io.cc @ 7708:b42abee70a98

fread, fwrite: allow SKIP arg to be omitted
author John W. Eaton <jwe@octave.org>
date Mon, 14 Apr 2008 13:13:25 -0400
parents eb7bdde776f2
children b68e44c90afe
comparison
equal deleted inserted replaced
7707:446dec9d1de5 7708:b42abee70a98
1494 octave_value skip = 0; 1494 octave_value skip = 0;
1495 octave_value arch = "unknown"; 1495 octave_value arch = "unknown";
1496 1496
1497 int idx = 1; 1497 int idx = 1;
1498 1498
1499 if (nargin > 1 && ! args(idx).is_string ()) 1499 if (nargin > idx && ! args(idx).is_string ())
1500 size = args(idx++); 1500 size = args(idx++);
1501 1501
1502 if (nargin > idx) 1502 if (nargin > idx)
1503 prec = args(idx++); 1503 prec = args(idx++);
1504 1504
1505 if (nargin > idx) 1505 if (nargin > idx)
1506 skip = args(idx++); 1506 skip = args(idx++);
1507 1507
1508 if (nargin > idx) 1508 if (nargin > idx)
1509 arch = args(idx++); 1509 arch = args(idx++);
1510 else if (skip.is_string ())
1511 {
1512 arch = skip;
1513 skip = 0;
1514 }
1510 1515
1511 octave_idx_type count = -1; 1516 octave_idx_type count = -1;
1512 1517
1513 octave_value tmp = do_fread (os, size, prec, skip, arch, count); 1518 octave_value tmp = do_fread (os, size, prec, skip, arch, count);
1514 1519
1596 { 1601 {
1597 octave_stream os = octave_stream_list::lookup (args(0), "fwrite"); 1602 octave_stream os = octave_stream_list::lookup (args(0), "fwrite");
1598 1603
1599 if (! error_state) 1604 if (! error_state)
1600 { 1605 {
1601 octave_value data = args(1); 1606 octave_value prec = "uchar";
1602 1607 octave_value skip = 0;
1603 octave_value prec = (nargin > 2) 1608 octave_value arch = "unknown";
1604 ? args(2) : octave_value ("uchar"); 1609
1605 1610 int idx = 1;
1606 octave_value skip = (nargin > 3) 1611
1607 ? args(3) : octave_value (0.0); 1612 octave_value data = args(idx++);
1608 1613
1609 octave_value arch = (nargin > 4) 1614 if (nargin > idx)
1610 ? args(4) : octave_value ("unknown"); 1615 prec = args(idx++);
1616
1617 if (nargin > idx)
1618 skip = args(idx++);
1619
1620 if (nargin > idx)
1621 arch = args(idx++);
1622 else if (skip.is_string ())
1623 {
1624 arch = skip;
1625 skip = 0;
1626 }
1611 1627
1612 double status = do_fwrite (os, data, prec, skip, arch); 1628 double status = do_fwrite (os, data, prec, skip, arch);
1613 1629
1614 retval = status; 1630 retval = status;
1615 } 1631 }