changeset 4837:81f78a2ff8a6

[project @ 2004-03-12 19:13:01 by jwe]
author jwe
date Fri, 12 Mar 2004 19:13:02 +0000
parents 518e495e489f
children 91638098904a
files src/ChangeLog src/ov-bool-mat.cc src/ov-bool.cc src/ov-cell.cc src/ov-complex.cc src/ov-cx-mat.cc src/ov-list.cc src/ov-range.cc src/ov-re-mat.cc src/ov-scalar.cc src/ov-str-mat.cc src/ov-struct.cc
diffstat 12 files changed, 90 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- 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  <jwe@bevo.che.wisc.edu>
+
+	* ov-cell.cc (octave_cell::save_hdf5): Handle empty cells.
+	(octave_cell::load_hdf5): Likewise.
+
 2004-03-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* ov-base-mat.cc (octave_base_matrix<MT>::subsasgn): If empty,
--- 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
--- 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
--- 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;
     }
 
--- 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
--- 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
--- 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;
 }
 
--- 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
 
--- 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
--- 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
--- 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
 
--- 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;
 }