comparison src/ov-bool-mat.cc @ 4837:81f78a2ff8a6

[project @ 2004-03-12 19:13:01 by jwe]
author jwe
date Fri, 12 Mar 2004 19:13:02 +0000
parents 2eb844b27953
children 9f7ef92b50b0
comparison
equal deleted inserted replaced
4836:518e495e489f 4837:81f78a2ff8a6
341 #if defined (HAVE_HDF5) 341 #if defined (HAVE_HDF5)
342 bool 342 bool
343 octave_bool_matrix::save_hdf5 (hid_t loc_id, const char *name, 343 octave_bool_matrix::save_hdf5 (hid_t loc_id, const char *name,
344 bool /* save_as_floats */) 344 bool /* save_as_floats */)
345 { 345 {
346 dim_vector d = dims (); 346 dim_vector dv = dims ();
347 int empty = save_hdf5_empty (loc_id, name, d); 347 int empty = save_hdf5_empty (loc_id, name, dv);
348 if (empty != 0) 348 if (empty)
349 return (empty > 0); 349 return (empty > 0);
350 350
351 int rank = d.length (); 351 int rank = dv.length ();
352 hid_t space_hid = -1, data_hid = -1; 352 hid_t space_hid = -1, data_hid = -1;
353 bool retval = true; 353 bool retval = true;
354 boolNDArray m = bool_array_value (); 354 boolNDArray m = bool_array_value ();
355 355
356 OCTAVE_LOCAL_BUFFER (hsize_t, hdims, rank); 356 OCTAVE_LOCAL_BUFFER (hsize_t, hdims, rank);
357 357
358 // Octave uses column-major, while HDF5 uses row-major ordering 358 // Octave uses column-major, while HDF5 uses row-major ordering
359 for (int i = 0; i < rank; i++) 359 for (int i = 0; i < rank; i++)
360 hdims[i] = d (rank-i-1); 360 hdims[i] = dv (rank-i-1);
361 361
362 space_hid = H5Screate_simple (rank, hdims, 0); 362 space_hid = H5Screate_simple (rank, hdims, 0);
363 if (space_hid < 0) return false; 363 if (space_hid < 0) return false;
364 364
365 data_hid = H5Dcreate (loc_id, name, H5T_NATIVE_HBOOL, space_hid, 365 data_hid = H5Dcreate (loc_id, name, H5T_NATIVE_HBOOL, space_hid,
380 retval = H5Dwrite (data_hid, H5T_NATIVE_HBOOL, H5S_ALL, H5S_ALL, 380 retval = H5Dwrite (data_hid, H5T_NATIVE_HBOOL, H5S_ALL, H5S_ALL,
381 H5P_DEFAULT, htmp) >= 0; 381 H5P_DEFAULT, htmp) >= 0;
382 382
383 H5Dclose (data_hid); 383 H5Dclose (data_hid);
384 H5Sclose (space_hid); 384 H5Sclose (space_hid);
385
385 return retval; 386 return retval;
386 } 387 }
387 388
388 bool 389 bool
389 octave_bool_matrix::load_hdf5 (hid_t loc_id, const char *name, 390 octave_bool_matrix::load_hdf5 (hid_t loc_id, const char *name,
390 bool /* have_h5giterate_bug */) 391 bool /* have_h5giterate_bug */)
391 { 392 {
393 bool retval = false;
394
392 dim_vector dv; 395 dim_vector dv;
393 int empty = load_hdf5_empty (loc_id, name, dv); 396 int empty = load_hdf5_empty (loc_id, name, dv);
394 if (empty > 0) 397 if (empty > 0)
395 matrix.resize(dv); 398 matrix.resize(dv);
396 if (empty != 0) 399 if (empty)
397 return (empty > 0); 400 return (empty > 0);
398 401
399 bool retval = false;
400 hid_t data_hid = H5Dopen (loc_id, name); 402 hid_t data_hid = H5Dopen (loc_id, name);
401 hid_t space_id = H5Dget_space (data_hid); 403 hid_t space_id = H5Dget_space (data_hid);
402 404
403 hsize_t rank = H5Sget_simple_extent_ndims (space_id); 405 hsize_t rank = H5Sget_simple_extent_ndims (space_id);
404 406
440 442
441 matrix = btmp; 443 matrix = btmp;
442 } 444 }
443 445
444 H5Dclose (data_hid); 446 H5Dclose (data_hid);
447
445 return retval; 448 return retval;
446 } 449 }
447 #endif 450 #endif
448 451
449 /* 452 /*