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" */);