Mercurial > hg > octave-lyh
diff liboctave/data-conv.cc @ 5760:8d7162924bd3
[project @ 2006-04-14 04:01:37 by jwe]
author | jwe |
---|---|
date | Fri, 14 Apr 2006 04:01:40 +0000 |
parents | 4c8a2e4e0717 |
children | ace8d8d26933 |
line wrap: on
line diff
--- a/liboctave/data-conv.cc +++ b/liboctave/data-conv.cc @@ -28,6 +28,7 @@ #include <cctype> #include <iostream> +#include <vector> #include "byte-swap.h" #include "data-conv.h" @@ -469,14 +470,12 @@ { \ if (len > 0) \ { \ - volatile TYPE *ptr = X_CAST (volatile TYPE *, data); \ - stream.read (X_CAST (char *, ptr), size * len); \ + OCTAVE_LOCAL_BUFFER (TYPE, ptr, len); \ + stream.read (reinterpret_cast<char *> (ptr), size * len); \ if (swap) \ swap_bytes< size > (ptr, len); \ - TYPE tmp = ptr[0]; \ - for (int i = len - 1; i > 0; i--) \ + for (int i = 0; i < len; i++) \ data[i] = ptr[i]; \ - data[0] = tmp; \ } \ } \ while (0) @@ -489,13 +488,12 @@ { \ if (len > 0) \ { \ - char tmp_type = static_cast<char> (type); \ + char tmp_type = type; \ stream.write (&tmp_type, 1); \ - TYPE *ptr = new TYPE [len]; \ + OCTAVE_LOCAL_BUFFER (TYPE, ptr, len); \ for (int i = 0; i < len; i++) \ - ptr[i] = X_CAST (TYPE, data[i]); \ - stream.write (X_CAST (char *, ptr), size * len); \ - delete [] ptr ; \ + ptr[i] = static_cast <TYPE> (data[i]); \ + stream.write (reinterpret_cast<char *> (ptr), size * len); \ } \ } \ while (0) @@ -1027,18 +1025,16 @@ case LS_FLOAT: { - volatile float *ptr = X_CAST (float *, data); - is.read (X_CAST (char *, data), 4 * len); - do_float_format_conversion (data, len, fmt); - float tmp = ptr[0]; - for (int i = len - 1; i > 0; i--) + OCTAVE_LOCAL_BUFFER (float, ptr, len); + is.read (reinterpret_cast<char *> (ptr), 4 * len); + do_float_format_conversion (ptr, len, fmt); + for (int i = 0; i < len; i++) data[i] = ptr[i]; - data[0] = tmp; } break; case LS_DOUBLE: // No conversion necessary. - is.read (X_CAST (char *, data), 8 * len); + is.read (reinterpret_cast<char *> (data), 8 * len); do_double_format_conversion (data, len, fmt); break; @@ -1083,9 +1079,9 @@ case LS_DOUBLE: // No conversion necessary. { - char tmp_type = X_CAST (char, type); + char tmp_type = static_cast<char> (type); os.write (&tmp_type, 1); - os.write (X_CAST (char *, data), 8 * len); + os.write (reinterpret_cast <const char *> (data), 8 * len); } break;