Mercurial > hg > octave-jordi
diff src/ov-bool-mat.cc @ 4805:b0d6da24caeb
[project @ 2004-03-02 03:43:15 by jwe]
author | jwe |
---|---|
date | Tue, 02 Mar 2004 03:43:15 +0000 |
parents | 14dc2267c343 |
children | 2eb844b27953 |
line wrap: on
line diff
--- a/src/ov-bool-mat.cc +++ b/src/ov-bool-mat.cc @@ -344,16 +344,20 @@ bool /* save_as_floats */) { dim_vector d = dims (); - hsize_t hdims[d.length () > 2 ? d.length () : 3]; + int empty = save_hdf5_empty (loc_id, name, d); + if (empty != 0) + return (empty > 0); + + int rank = d.length (); hid_t space_hid = -1, data_hid = -1; - int rank = ( (d (0) == 1) && (d.length () == 2) ? 1 : d.length ()); bool retval = true; - boolNDArray m = bool_array_value (); + OCTAVE_LOCAL_BUFFER (hsize_t, hdims, rank); + // Octave uses column-major, while HDF5 uses row-major ordering - for (int i = 0, j = d.length() - 1; i < d.length (); i++, j--) - hdims[i] = d (j); + for (int i = 0; i < rank; i++) + hdims[i] = d (rank-i-1); space_hid = H5Screate_simple (rank, hdims, (hsize_t*) 0); if (space_hid < 0) return false; @@ -385,6 +389,13 @@ octave_bool_matrix::load_hdf5 (hid_t loc_id, const char *name, bool /* have_h5giterate_bug */) { + dim_vector dv; + int empty = load_hdf5_empty (loc_id, name, dv); + if (empty > 0) + matrix.resize(dv); + if (empty != 0) + return (empty > 0); + bool retval = false; hid_t data_hid = H5Dopen (loc_id, name); hid_t space_id = H5Dget_space (data_hid); @@ -402,8 +413,6 @@ H5Sget_simple_extent_dims (space_id, hdims, maxdims); - dim_vector dv; - // Octave uses column-major, while HDF5 uses row-major ordering if (rank == 1) {