Mercurial > octave-nkf
diff libinterp/corefcn/oct-stream.h @ 17416:6690dba6078a
improve efficiency of fwrite
* oct-stream.h, oct-stream.cc (write_int, do_write): Delete.
(convert_ints, convert_data, octave_stream::write_bytes
octave_stream::skip_bytes): New functions.
(octave_stream::write): Improve efficiency by writing data in larger
chunks.
* oct-stream.cc: Delete unnecessary template instantiations.
* data-conv.h, data-conv.cc (is_equivalent_type): New template.
Provide specializations for core Octave data types.
(oct_data_conv::data_type_size): New function.
(oct_data_conv::data_type_to_string): Correct spelling of unsigned.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 13 Sep 2013 23:31:11 -0400 |
parents | 68fc671a9339 |
children | 669ad11f282d |
line wrap: on
line diff
--- a/libinterp/corefcn/oct-stream.h Thu Sep 12 19:21:02 2013 -0400 +++ b/libinterp/corefcn/oct-stream.h Fri Sep 13 23:31:11 2013 -0400 @@ -37,6 +37,7 @@ #include "data-conv.h" #include "lo-utils.h" #include "mach-info.h" +#include "oct-locbuf.h" #include "oct-refcount.h" class @@ -539,13 +540,19 @@ octave_idx_type& count); octave_idx_type write (const octave_value& data, octave_idx_type block_size, - oct_data_conv::data_type output_type, - octave_idx_type skip, oct_mach_info::float_format flt_fmt); + oct_data_conv::data_type output_type, + octave_idx_type skip, + oct_mach_info::float_format flt_fmt); + + bool write_bytes (const void *data, size_t n_elts); + + bool skip_bytes (size_t n_elts); template <class T> - octave_idx_type write (const Array<T>&, octave_idx_type block_size, - oct_data_conv::data_type output_type, - octave_idx_type skip, oct_mach_info::float_format flt_fmt); + octave_idx_type write (const Array<T>& data, octave_idx_type block_size, + oct_data_conv::data_type output_type, + octave_idx_type skip, + oct_mach_info::float_format flt_fmt); octave_value scanf (const std::string& fmt, const Array<double>& size, octave_idx_type& count, const std::string& who /* = "scanf" */);