# HG changeset patch # User jwe # Date 1079118782 0 # Node ID 81f78a2ff8a63dc86fa01060d59d07f58c0ba86f # Parent 518e495e489fb04f73ffd977fb2e89eb4312323c [project @ 2004-03-12 19:13:01 by jwe] diff -r 518e495e489f -r 81f78a2ff8a6 src/ChangeLog --- a/src/ChangeLog Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ChangeLog Fri Mar 12 19:13:02 2004 +0000 @@ -1,3 +1,8 @@ +2004-03-12 John W. Eaton + + * ov-cell.cc (octave_cell::save_hdf5): Handle empty cells. + (octave_cell::load_hdf5): Likewise. + 2004-03-11 John W. Eaton * ov-base-mat.cc (octave_base_matrix::subsasgn): If empty, diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-bool-mat.cc --- a/src/ov-bool-mat.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-bool-mat.cc Fri Mar 12 19:13:02 2004 +0000 @@ -343,12 +343,12 @@ octave_bool_matrix::save_hdf5 (hid_t loc_id, const char *name, bool /* save_as_floats */) { - dim_vector d = dims (); - int empty = save_hdf5_empty (loc_id, name, d); - if (empty != 0) + dim_vector dv = dims (); + int empty = save_hdf5_empty (loc_id, name, dv); + if (empty) return (empty > 0); - int rank = d.length (); + int rank = dv.length (); hid_t space_hid = -1, data_hid = -1; bool retval = true; boolNDArray m = bool_array_value (); @@ -357,7 +357,7 @@ // Octave uses column-major, while HDF5 uses row-major ordering for (int i = 0; i < rank; i++) - hdims[i] = d (rank-i-1); + hdims[i] = dv (rank-i-1); space_hid = H5Screate_simple (rank, hdims, 0); if (space_hid < 0) return false; @@ -382,6 +382,7 @@ H5Dclose (data_hid); H5Sclose (space_hid); + return retval; } @@ -389,14 +390,15 @@ octave_bool_matrix::load_hdf5 (hid_t loc_id, const char *name, bool /* have_h5giterate_bug */) { + bool retval = false; + dim_vector dv; int empty = load_hdf5_empty (loc_id, name, dv); if (empty > 0) matrix.resize(dv); - if (empty != 0) - return (empty > 0); + if (empty) + return (empty > 0); - bool retval = false; hid_t data_hid = H5Dopen (loc_id, name); hid_t space_id = H5Dget_space (data_hid); @@ -442,6 +444,7 @@ } H5Dclose (data_hid); + return retval; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-bool.cc --- a/src/ov-bool.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-bool.cc Fri Mar 12 19:13:02 2004 +0000 @@ -187,6 +187,7 @@ H5Dclose (data_hid); H5Sclose (space_hid); + return retval; } @@ -214,7 +215,9 @@ } scalar = (dtmp != 0.); + H5Dclose (data_hid); + return true; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-cell.cc --- a/src/ov-cell.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-cell.cc Fri Mar 12 19:13:02 2004 +0000 @@ -692,6 +692,10 @@ octave_cell::save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { dim_vector dv = dims (); + int empty = save_hdf5_empty (loc_id, name, dv); + if (empty) + return (empty > 0); + hsize_t rank = dv.length (); hid_t space_hid = -1, data_hid = -1, size_hid = -1; @@ -765,6 +769,14 @@ bool have_h5giterate_bug) { bool retval = false; + + dim_vector dv; + int empty = load_hdf5_empty (loc_id, name, dv); + if (empty > 0) + matrix.resize(dv); + if (empty) + return (empty > 0); + hid_t group_id = H5Gopen (loc_id, name); if (group_id < 0) @@ -775,8 +787,8 @@ hsize_t rank = H5Sget_simple_extent_ndims (space_hid); if (rank != 1) { - H5Dclose(data_hid); - H5Gclose(group_id); + H5Dclose (data_hid); + H5Gclose (group_id); return false; } @@ -787,7 +799,6 @@ // Octave uses column-major, while HDF5 uses row-major ordering. - dim_vector dv; dv.resize (hdims[0]); OCTAVE_LOCAL_BUFFER (int, tmp, hdims[0]); @@ -795,8 +806,8 @@ if (H5Dread (data_hid, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, tmp) < 0) { - H5Dclose(data_hid); - H5Gclose(group_id); + H5Dclose (data_hid); + H5Gclose (group_id); return false; } diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-complex.cc --- a/src/ov-complex.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-complex.cc Fri Mar 12 19:13:02 2004 +0000 @@ -245,7 +245,8 @@ bool retval = true; space_hid = H5Screate_simple (0, dimens, 0); - if (space_hid < 0) return false; + if (space_hid < 0) + return false; type_hid = hdf5_make_complex_type (H5T_NATIVE_DOUBLE); if (type_hid < 0) @@ -269,6 +270,7 @@ H5Dclose (data_hid); H5Tclose (type_hid); H5Sclose (space_hid); + return retval; } @@ -284,7 +286,7 @@ if (! hdf5_types_compatible (type_hid, complex_type)) { - H5Tclose(complex_type); + H5Tclose (complex_type); H5Dclose (data_hid); return false; } @@ -294,7 +296,7 @@ if (rank != 0) { - H5Tclose(complex_type); + H5Tclose (complex_type); H5Sclose (space_id); H5Dclose (data_hid); return false; @@ -309,9 +311,10 @@ scalar = ctmp; } - H5Tclose(complex_type); + H5Tclose (complex_type); H5Sclose (space_id); H5Dclose (data_hid); + return retval; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-cx-mat.cc --- a/src/ov-cx-mat.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-cx-mat.cc Fri Mar 12 19:13:02 2004 +0000 @@ -445,12 +445,12 @@ octave_complex_matrix::save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { - dim_vector d = dims (); - int empty = save_hdf5_empty (loc_id, name, d); - if (empty != 0) + dim_vector dv = dims (); + int empty = save_hdf5_empty (loc_id, name, dv); + if (empty) return (empty > 0); - int rank = d.length (); + int rank = dv.length (); hid_t space_hid = -1, data_hid = -1, type_hid = -1; bool retval = true; ComplexNDArray m = complex_array_value (); @@ -459,7 +459,7 @@ // Octave uses column-major, while HDF5 uses row-major ordering for (int i = 0; i < rank; i++) - hdims[i] = d (rank-i-1); + hdims[i] = dv (rank-i-1); space_hid = H5Screate_simple (rank, hdims, 0); if (space_hid < 0) return false; @@ -521,6 +521,7 @@ H5Dclose (data_hid); H5Tclose (type_hid); H5Sclose (space_hid); + return retval; } @@ -528,14 +529,15 @@ octave_complex_matrix::load_hdf5 (hid_t loc_id, const char *name, bool /* have_h5giterate_bug */) { + bool retval = false; + dim_vector dv; int empty = load_hdf5_empty (loc_id, name, dv); if (empty > 0) matrix.resize(dv); - if (empty != 0) + if (empty) return (empty > 0); - bool retval = false; hid_t data_hid = H5Dopen (loc_id, name); hid_t type_hid = H5Dget_type (data_hid); @@ -543,7 +545,7 @@ if (! hdf5_types_compatible (type_hid, complex_type)) { - H5Tclose(complex_type); + H5Tclose (complex_type); H5Dclose (data_hid); return false; } @@ -554,7 +556,7 @@ if (rank < 1) { - H5Tclose(complex_type); + H5Tclose (complex_type); H5Sclose (space_id); H5Dclose (data_hid); return false; @@ -588,9 +590,10 @@ matrix = m; } - H5Tclose(complex_type); + H5Tclose (complex_type); H5Sclose (space_id); H5Dclose (data_hid); + return retval; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-list.cc --- a/src/ov-list.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-list.cc Fri Mar 12 19:13:02 2004 +0000 @@ -682,6 +682,7 @@ } H5Gclose (data_hid); + return true; } diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-range.cc --- a/src/ov-range.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-range.cc Fri Mar 12 19:13:02 2004 +0000 @@ -413,6 +413,7 @@ H5Dclose (data_hid); H5Tclose (type_hid); H5Sclose (space_hid); + return retval; } @@ -421,6 +422,7 @@ bool /* have_h5giterate_bug */) { bool retval = false; + hid_t data_hid = H5Dopen (loc_id, name); hid_t type_hid = H5Dget_type (data_hid); @@ -428,7 +430,7 @@ if (! hdf5_types_compatible (type_hid, range_type)) { - H5Tclose(range_type); + H5Tclose (range_type); H5Dclose (data_hid); return false; } @@ -438,7 +440,7 @@ if (rank != 0) { - H5Tclose(range_type); + H5Tclose (range_type); H5Sclose (space_hid); H5Dclose (data_hid); return false; @@ -453,11 +455,11 @@ range = r; } - H5Tclose(range_type); + H5Tclose (range_type); H5Sclose (space_hid); H5Dclose (data_hid); + return retval; - } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-re-mat.cc --- a/src/ov-re-mat.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-re-mat.cc Fri Mar 12 19:13:02 2004 +0000 @@ -508,12 +508,12 @@ bool octave_matrix::save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats) { - dim_vector d = dims (); - int empty = save_hdf5_empty (loc_id, name, d); - if (empty != 0) + dim_vector dv = dims (); + int empty = save_hdf5_empty (loc_id, name, dv); + if (empty) return (empty > 0); - int rank = d.length (); + int rank = dv.length (); hid_t space_hid = -1, data_hid = -1; bool retval = true; NDArray m = array_value (); @@ -522,7 +522,7 @@ // Octave uses column-major, while HDF5 uses row-major ordering for (int i = 0; i < rank; i++) - hdims[i] = d (rank-i-1); + hdims[i] = dv (rank-i-1); space_hid = H5Screate_simple (rank, hdims, 0); @@ -566,6 +566,7 @@ H5Dclose (data_hid); H5Sclose (space_hid); + return retval; } @@ -573,14 +574,15 @@ octave_matrix::load_hdf5 (hid_t loc_id, const char *name, bool /* have_h5giterate_bug */) { + bool retval = false; + dim_vector dv; int empty = load_hdf5_empty (loc_id, name, dv); if (empty > 0) matrix.resize(dv); - if (empty != 0) + if (empty) return (empty > 0); - bool retval = false; hid_t data_hid = H5Dopen (loc_id, name); hid_t space_id = H5Dget_space (data_hid); @@ -623,6 +625,7 @@ H5Sclose (space_id); H5Dclose (data_hid); + return retval; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-scalar.cc --- a/src/ov-scalar.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-scalar.cc Fri Mar 12 19:13:02 2004 +0000 @@ -233,6 +233,7 @@ H5Dclose (data_hid); H5Sclose (space_hid); + return retval; } @@ -260,7 +261,9 @@ } scalar = dtmp; + H5Dclose (data_hid); + return true; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-str-mat.cc --- a/src/ov-str-mat.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-str-mat.cc Fri Mar 12 19:13:02 2004 +0000 @@ -496,12 +496,12 @@ octave_char_matrix_str::save_hdf5 (hid_t loc_id, const char *name, bool /* save_as_floats */) { - dim_vector d = dims (); - int empty = save_hdf5_empty (loc_id, name, d); - if (empty != 0) + dim_vector dv = dims (); + int empty = save_hdf5_empty (loc_id, name, dv); + if (empty) return (empty > 0); - int rank = d.length (); + int rank = dv.length (); hid_t space_hid = -1, data_hid = -1; bool retval = true; charNDArray m = char_array_value (); @@ -510,7 +510,7 @@ // Octave uses column-major, while HDF5 uses row-major ordering for (int i = 0; i < rank; i++) - hdims[i] = d (rank-i-1); + hdims[i] = dv (rank-i-1); space_hid = H5Screate_simple (rank, hdims, 0); if (space_hid < 0) @@ -524,9 +524,9 @@ return false; } - OCTAVE_LOCAL_BUFFER (char, s, d.numel ()); + OCTAVE_LOCAL_BUFFER (char, s, dv.numel ()); - for (int i = 0; i < d.numel(); ++i) + for (int i = 0; i < dv.numel (); ++i) s[i] = m(i); retval = H5Dwrite (data_hid, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, @@ -534,6 +534,7 @@ H5Dclose (data_hid); H5Sclose (space_hid); + return retval; } @@ -541,12 +542,14 @@ octave_char_matrix_str::load_hdf5 (hid_t loc_id, const char *name, bool /* have_h5giterate_bug */) { + bool retval = false; + dim_vector dv; int empty = load_hdf5_empty (loc_id, name, dv); if (empty > 0) matrix.resize(dv); - if (empty != 0) - return (empty > 0); + if (empty) + return (empty > 0); hid_t data_hid = H5Dopen (loc_id, name); hid_t space_hid = H5Dget_space (data_hid); @@ -556,7 +559,6 @@ if (type_class_hid == H5T_INTEGER) { - bool retval = false; if (rank < 1) { H5Tclose (type_hid); @@ -698,6 +700,8 @@ return false; } } + + return retval; } #endif diff -r 518e495e489f -r 81f78a2ff8a6 src/ov-struct.cc --- a/src/ov-struct.cc Fri Mar 12 18:16:23 2004 +0000 +++ b/src/ov-struct.cc Fri Mar 12 19:13:02 2004 +0000 @@ -1151,6 +1151,7 @@ } H5Gclose (data_hid); + return true; }