Mercurial > octave-nkf
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 /* |