Mercurial > hg > octave-lyh
comparison liboctave/util/data-conv.cc @ 17424: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 | 3856298f1ff8 |
children |
comparison
equal
deleted
inserted
replaced
17423:3856298f1ff8 | 17424:6690dba6078a |
---|---|
171 retval = dt_unknown; \ | 171 retval = dt_unknown; \ |
172 break; \ | 172 break; \ |
173 } \ | 173 } \ |
174 } \ | 174 } \ |
175 while (0) | 175 while (0) |
176 | |
177 size_t | |
178 oct_data_conv::data_type_size (data_type dt) | |
179 { | |
180 size_t retval = -1; | |
181 | |
182 switch (dt) | |
183 { | |
184 case oct_data_conv::dt_int8: | |
185 retval = sizeof (int8_t); | |
186 break; | |
187 | |
188 case oct_data_conv::dt_uint8: | |
189 retval = sizeof (uint8_t); | |
190 break; | |
191 | |
192 case oct_data_conv::dt_int16: | |
193 retval = sizeof (int16_t); | |
194 break; | |
195 | |
196 case oct_data_conv::dt_uint16: | |
197 retval = sizeof (uint16_t); | |
198 break; | |
199 | |
200 case oct_data_conv::dt_int32: | |
201 retval = sizeof (int32_t); | |
202 break; | |
203 | |
204 case oct_data_conv::dt_uint32: | |
205 retval = sizeof (uint32_t); | |
206 break; | |
207 | |
208 case oct_data_conv::dt_int64: | |
209 retval = sizeof (int64_t); | |
210 break; | |
211 | |
212 case oct_data_conv::dt_uint64: | |
213 retval = sizeof (uint64_t); | |
214 break; | |
215 | |
216 case oct_data_conv::dt_float: | |
217 case oct_data_conv::dt_single: | |
218 retval = sizeof (float); | |
219 break; | |
220 | |
221 case oct_data_conv::dt_double: | |
222 retval = sizeof (double); | |
223 break; | |
224 | |
225 case oct_data_conv::dt_char: | |
226 retval = sizeof (char); | |
227 break; | |
228 | |
229 case oct_data_conv::dt_schar: | |
230 retval = sizeof (signed char); | |
231 break; | |
232 | |
233 case oct_data_conv::dt_uchar: | |
234 retval = sizeof (unsigned char); | |
235 break; | |
236 | |
237 case oct_data_conv::dt_short: | |
238 retval = sizeof (short); | |
239 break; | |
240 | |
241 case oct_data_conv::dt_ushort: | |
242 retval = sizeof (unsigned short); | |
243 break; | |
244 | |
245 case oct_data_conv::dt_int: | |
246 retval = sizeof (int); | |
247 break; | |
248 | |
249 case oct_data_conv::dt_uint: | |
250 retval = sizeof (unsigned int); | |
251 break; | |
252 | |
253 case oct_data_conv::dt_long: | |
254 retval = sizeof (long); | |
255 break; | |
256 | |
257 case oct_data_conv::dt_ulong: | |
258 retval = sizeof (unsigned long); | |
259 break; | |
260 | |
261 case oct_data_conv::dt_longlong: | |
262 retval = sizeof (long long); | |
263 break; | |
264 | |
265 case oct_data_conv::dt_ulonglong: | |
266 retval = sizeof (unsigned long long); | |
267 break; | |
268 | |
269 case oct_data_conv::dt_logical: | |
270 retval = sizeof (bool); | |
271 break; | |
272 | |
273 case oct_data_conv::dt_unknown: | |
274 default: | |
275 abort (); | |
276 break; | |
277 } | |
278 | |
279 return retval; | |
280 } | |
176 | 281 |
177 oct_data_conv::data_type | 282 oct_data_conv::data_type |
178 oct_data_conv::string_to_data_type (const std::string& str) | 283 oct_data_conv::string_to_data_type (const std::string& str) |
179 { | 284 { |
180 data_type retval = dt_unknown; | 285 data_type retval = dt_unknown; |
424 case oct_data_conv::dt_schar: | 529 case oct_data_conv::dt_schar: |
425 retval = "signed char"; | 530 retval = "signed char"; |
426 break; | 531 break; |
427 | 532 |
428 case oct_data_conv::dt_uchar: | 533 case oct_data_conv::dt_uchar: |
429 retval = "usigned char"; | 534 retval = "unsigned char"; |
430 break; | 535 break; |
431 | 536 |
432 case oct_data_conv::dt_short: | 537 case oct_data_conv::dt_short: |
433 retval = "short"; | 538 retval = "short"; |
434 break; | 539 break; |
440 case oct_data_conv::dt_int: | 545 case oct_data_conv::dt_int: |
441 retval = "int"; | 546 retval = "int"; |
442 break; | 547 break; |
443 | 548 |
444 case oct_data_conv::dt_uint: | 549 case oct_data_conv::dt_uint: |
445 retval = "usigned int"; | 550 retval = "unsigned int"; |
446 break; | 551 break; |
447 | 552 |
448 case oct_data_conv::dt_long: | 553 case oct_data_conv::dt_long: |
449 retval = "long"; | 554 retval = "long"; |
450 break; | 555 break; |
451 | 556 |
452 case oct_data_conv::dt_ulong: | 557 case oct_data_conv::dt_ulong: |
453 retval = "usigned long"; | 558 retval = "unsigned long"; |
454 break; | 559 break; |
455 | 560 |
456 case oct_data_conv::dt_longlong: | 561 case oct_data_conv::dt_longlong: |
457 retval = "long long"; | 562 retval = "long long"; |
458 break; | 563 break; |